PIC16F872 nimmt falsche Vref

OP #3656455
Lesenswert?

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!!
#3656465
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren