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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.