Ik had een stuk code geschreven voor een PIC16F876A, omdat dit niet werkten ben ik eens met een eenvoudig stukje begonnen.
Helaas, werkt dit ook al niet !
De Uitgangen A0...A5 en C0...C7 blijven Laag
Wat er er fout in deze code ?


   LIST P=16F876A          ;Processor type
   include <P16F876A.INC>  ;Register en poort definities 

            ; __CONFIG   B'11000111110011'  
              __CONFIG   B'11111101110011'


                ORG        00h              ; 
                GOTO       INIT             ;Reset: 'Start regel'  
                NOP                         ;
                NOP                         ;
                NOP                         ;
                GOTO       INTERR           ;

INIT            BSF        STATUS,RP0       ;Select Bank 1
                MOVLW      B'00000000'      ;
                MOVWF      TRISA            ;A uitgangen (Ingangen)

                MOVLW      B'11111111'      ;
                MOVWF      TRISB            ;B Ingangen

                MOVLW      B'00000000'      ;
                MOVWF      TRISC            ;C Uitgangen

                ;Analoge comperators instellen
                MOVLW      B'00000111'      ;Bits naar tijdelijk register 
                MOVWF      CMCON            ;Comparators uitschakelen

                ;A/D Convertor instellen
                BCF        STATUS,RP0       ;Select Bank 0
                MOVLW      B'01000001'      ; 
                MOVWF      ADCON0           ;...
                BSF        STATUS,RP0       ;Select Bank 1
                MOVLW      B'11000111'      ;
                MOVWF      ADCON1           ;...
                BCF        STATUS,RP0       ;Select Bank 0
                ;Fosc/16
                ;AN0       = Analoog
                ;AN1...AN7 = Digitaal

                GOTO       MAIN             ;


MAIN            MOVLW       B'00111111'      ;
                MOVWF       PORTA                 
                MOVWF       PORTC                       

                GOTO       MAIN 

INTERR	        
		RETFIE                      ;

                END

Edit:
Als ik deze code in MPLAB test, dan worden de uitgangen
A en C wel allemaal Hoog.

als je de a/d converter op port a wilt gebruiken, moet je die wel eers instellen als input in tris a

Wat geef ik bij TrisA op bij Digitaal, en wat bij Analoog ?

Edit:
Met TrisA stel ik toch 1=Ingang / 0=Uitgang in.

Edit:
Omdat de code met de AD converter niet werkten (er werkten geheel niets), heb ik de code ingekort, totdat er iets zou werken.
Omdat er maar geen leven in kwam, deze code gemaakt !
Helaas werkt zelfs deze code niet, dus nu even zonder AD converter.
Ik krijg nu nog niet eens een gewone uitgang (C0..C7) Hoog !

[Bericht gewijzigd door MMSoft op ]

of ze digitaal of analoog worden heeft trisa niets mee te maken.

Wel is het zo dat als je een analoge functie wilt gebruiken, dient de betrefende pin een ingang te zijn

wat je met trisa insteld is dit:

0=uitgang - Maak je een ingang hoog(porta, en niet trisa), kun je bijv. een led(+weerstand) van spanning voorzien, maak je hem laag, leg je de pin aan massa.(kun je een led +weerstand tussen plus en poort pin hangen)

1=ingang - de pin is hoog ohmig, je kunt er spanning op zetten of aan massa hangen en de toestand(hoog of laag) meten (bit test f)(of ADC)

Ok, maar waarom werkt mijn code ook niet op PortC ?
Die zijn als Uitgang opgegeven in TrisC en Hoog gestuurd in PortC (laagste 6 bits)

kunnen ook andere oorzaken zijn. Ik zie in config word dat je oscillator op RC staat, is dat juist of heb je er een kristal op? Boden zou ik ook uitschakelen. Haal voor de zekerheid ook eerst de interupt deel eruit. En dat als laatste, ik zie dat het om een PIC16F876A gaat, heb je de programma wel geassembleerd voor een A, en de pic ook geprogrammeerd als een A (je programmer software moet dat ook ondersteunen). Zit nammelijk verschil tussen 16f876 en 16f876A

Wel gecompileerd als 876A (met MPLAB IDE v7.10), maar mijn Progger heeft geen 876A in de PIC lijst.
Kan dat het probleem zijn ?

Ik gebruik als progger de 8048 van Velleman, kan deze ook gebruikt worden door MPLAB IDE v7.10 ?

Edit:
Volgens de gegevens van Velleman moet de 876A mogelijk zijn.
De 876A staat echter niet in de keuze lijst van de progger !

[Bericht gewijzigd door MMSoft op ]

Zoals chipje al vroeg..hoe heb je je oscillator fysiek gebouwd? Volgens de code gebruik je een RC-netwerk, doe je dit ook echt?

dat kan een probleem zijn.

"Programming specifications are different(2)"
"2: Please refer to device data sheet, errata, and the Microchip website for more information on programming
specifications and writing to FLASH program memory."

Aldus microchip over een van de verschillen.

Volgens velleman internet site moet dat inderdaad kunnen, maar download je de pdf manual van de 8048 staat ie er niet bij. En als die ook niet in de programeer software staat, houdt het feest op. Je kunt hem helaas niet programmeren...

Ik heb net de Update van Velleman gedownload en geinstalleerd.
Nu staat de 876A er wel bij, maar helaas werkt het nog niet.

Wie heeft er een werkende code voor de 876A, zodat ik kan testen of de 2 nieuwe PIC's wel goed zijn, en dat de progger deze PIC's wel aankan.... (ben al vele uren bezig, en krijg nog geen uitgang Hoog).

Edit:
Ik gebruik de interne Osc., teminsten dat is de bedoeling.
Er is Geen Kristal geplaatst !

[Bericht gewijzigd door MMSoft op ]

De 16f876 en 16f876a hebben geen int osc. Dus of cristal of rc netwerkje.

Geen wonder dat het niet werkt !
Ik was gewend om met een interne Osc. te werken !

Kristal moet toch op pen 9 + 10 (DIP) ?

Een gewoon Kristal van 4Mhz, is dat HS, XT of LP ?

Edit:
XT op 9 + 10 dus....

[Bericht gewijzigd door MMSoft op ]

4MHz is XT, voor de rest van de details is een datasheet ook handig. Die hoort je meteen te downloaden als je een nieuwe pic koopt.

http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf

EDIT: vergeet de condensators niet...

Er komt leven in, de uitgangen zijn hoog !
Dan kan ik eindelijk beginnen met de DA converter.

Nog tips voor de DA converter ?

Bedankt voor het meedenken/zoeken !

Ben blij dat ie het doet. Het opzetten van DA staat ook in datasheet maar mischien is dit ook handig

http://www.winpicprog.co.uk/pic_tutorial.htm

even kijken bij tutorial eleven

Mischien vind je daar nog wat bruikbare routines

Op 24 november 2005 22:14:45 schreef MMSoft:
Er komt leven in, de uitgangen zijn hoog !
Dan kan ik eindelijk beginnen met de DA converter.

Nog tips voor de DA converter ?

Bedankt voor het meedenken/zoeken !

RTFM

de uitkomst van de AD is verdeelt over 2 registers en in totaal 10bit
deze registers staan in verschillende geheugenbanken dus voor de complete waarde moet je van bank wisselen.

Foutje: ik bedoel de AD Converter

Ik probeer de AD Converter aan de gang te krijgen, maar deze wil maar niet


                ;A/D Convertor instellen
                BCF        STATUS,RP0       ;Select Bank 0
                MOVLW      B'10000001'      ; 
                MOVWF      ADCON0           ;
                BSF        STATUS,RP0       ;Select Bank 1
                MOVLW      B'00001110'      ; 
                MOVWF      ADCON1           ;
                BCF        STATUS,RP0       ;Select Bank 0


                BSF        ADCON0,1         ;A/D Converter starten
M1              BTFSC      ADCON0,1         ;AD Convertor klaar ?
                GOTO       M1               ;Nee
                MOVFW      ADRESH           ;Waarde Uitlezen (in hoog adres)

Wat doe ik verkeerd ?

Edit:
Al gevonden: ADCON0,1 moet zijn ADCON0,2