Hi, ich habe folgendes Problem: Es wird eine externe Referenzspannung erzeugt und auf den Pin RA3 gegeben. softwaretechnisch habe ich in der Initialisierung des PIC's auch externe Vref eingestellt. Hier die Initialisierung: main: ;--------------------------Initialisierung------------------------------ ; Übertragungsrichtung der Portpins einstellen (0=Ausgang, 1=Eingang) clrf PORTA ; Ports auf definierte Pegel schalten clrf PORTB clrf PORTC bsf STATUS, RP0 ; Auf Bank 1 wechseln bcf STATUS, RP1 movlw B'11111111' ; Port A als Eingang (Messchannel, Referenzspannung) movwf TRISA movlw B'10001000' ; Port B als Eingang (LE's, und ICSP) movwf TRISB movlw B'00000000' ; Alle Pins als Ausgänge (Ansteuerung der Treiber) movwf TRISC bcf STATUS, RP0 ; Zurück auf Bank 0 ; ADC Initialisierung: ; Ergebniss Linksbündig bcf ADCON1,ADFM ; 0 = linksbündig 1 = rechtsbündig ; Referenzspannung liegt an RA3, Alle Eingänge sind auf analog geschaltet bsf ADCON1,PCFG0 bsf ADCON1,PCFG1 bcf ADCON1,PCFG2 bcf ADCON1,PCFG3 ; Channel 0 ausgewählt bcf ADCON0,CHS0 bcf ADCON0,CHS1 bcf ADCON0,CHS2 ; GO/DONE ADC-Bit löschen bcf ADCON0,2 ; Unbelegtes Bit bcf ADCON0,1 ; ADC aktivieren bsf ADCON0,ADON ; Eingstellen der max. Betriebsfrequenz bsf ADCON0,ADCS0 bcf ADCON0,ADCS1 ; Interrupt-Init: bcf PIR1,ADIF ; Flag Bit löschen bsf STATUS, RP0 ; Auf Bank 1 wechseln bsf PIE1,ADIE ; ADC interrupt ADIE aktivieren bcf STATUS, RP0 ; Auf Bank 0 wechseln bsf INTCON, PEIE ; ADC interrupts freigeben bsf INTCON, GIE ; Alle Interruptquellen freigeben ------------------------------------------------------------------------ Ich habe das Programm inbetriebgenommen. Das Programm funktioniert an sich. Nur nimmt der PIC die interne Vref (5V) und nicht die externe (4096mV). Warum schalter der PIC nicht auf die externe? Vielen Dank im Voraus für eure Hilfe!!
Wolle Moritz schrieb: > bcf STATUS, RP0 ; Zurück auf Bank 0 > > ; ADC Initialisierung: > ; Ergebniss Linksbündig > bcf ADCON1,ADFM ; 0 = linksbündig 1 = rechtsbündig > > ; Referenzspannung liegt an RA3, Alle Eingänge sind auf analog > geschaltet > bsf ADCON1,PCFG0 > bsf ADCON1,PCFG1 > bcf ADCON1,PCFG2 > bcf ADCON1,PCFG3 > ADCON1 liegt aber nicht in BANK0 sondern in BANK1. Wenn man sich angewöhnt "BANKSEL register" zu verwenden, passiert so was nicht.
Danke! Hast du noch eine kurze Info (link oder sowas) zum Befehl BANKSEL? Den habe ich noch nicht in meinem Schul-Assambler gelernt ;)
Anstelle sich mit den RP0/RP1 Bits des Statusregisters zu "ärgern", schreibst du einfach z.B. BANKSEL ADCON1 Der Assembler ersetzt das durch die passenden bcf/bsf Befehle für STATUS, RP0/RP1. Im MPASM User Guide o.ä. ist da sicher auch beschrieben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.