-
-
Auswahlprobleme beim AD-Wandler
ich möchte an RA0 und RA1 jeweils einen analogen Wert einlesen. Wenn ich die einzelnene AD-Werte in 2 verschiedenen Programme einlese, funktioniert es.
Wenn ich die 2 einzelnen Programme zusammen schreibe, dann habe ich Probleme mit dem einlesen, da RA0 und RA1 sich
beeinflussen. Der Fehler liegt auf jeden Fall in der Auswahl, welcher PIN als Eingang für den AD-Wandler gewählt wird.
Nachdem ich die 2 einzelnen Programme zusammen geschrieben habe, habe ich den kompletten Teil für die zweite Anzeige
ausgeklammert, und nacheinander wieder ins Programm gestellt. Als ich dann die Auswahl des PIN RA1 "freigeschaltet" habe, trat
der Fehler wieder auf.
Habt Ihr eine Idee woran das liegt?
Die Konfiguration des Programms ist in Ordnung.
;****Eingang (RA0) des AD-Wandler auswählen****
bcf ADCON0,5
bcf ADCON0,4
bcf ADCON0,3
;****Auswahl Ende****
bsf ADCON0,2 ;AD-Wandler starten
loopad1: btfsc ADCON0,2 ;AD-Wandler fertig?
goto loopad1 ;noch nicht fertig, warten
adhol1: movfw ADRESH
movwf adneu_1
movlw 0x01 ;wartezeit von 1mS
movwf loops
call wait_ms
;****Eingang (RA1) des AD-Wandler auswählen****
bcf ADCON0,5
bcf ADCON0,4
bsf ADCON0,3
;****Auswahl Ende****
bsf ADCON0,2 ;AD-Wandler starten
loopad2: btfsc ADCON0,2 ;AD-Wandler fertig?
goto loopad2 ;noch nicht fertig, warten
adhol2: movfw ADRESH
movwf adneu_2
-
Erfahrener Benutzer
Roboter Genie
kenn mich mit pics ja nicht aus, aber dein AD-wandler-auswahlcode is bei beiden identisch!? soll das so sein?
-
der ist nicht identisch,
hier ist die Auswahl auf RA0
bcf ADCON0,5
bcf ADCON0,4
bcf ADCON0,3
und hier liegt die Auswahl beim RA1
bcf ADCON0,5
bcf ADCON0,4
bsf ADCON0,3
bei ADCON0,3 steht einmal bcf und einmal bsf
-
Erfahrener Benutzer
Roboter Genie
stimmt... sorry
-
Erfahrener Benutzer
Robotik Einstein
Hallo HoStAn,
probier mal folgendes:
- AD-Kanal setzen
- 1 ms warten, damit sich die interne Kapazität aufladen kann
- Wandlung starten
- Warten bis Wandlung fertig ist
- AD-Wert auslesen
- AD-Kanal setzen
- 1 ms warten, damit sich die interne Kapazität aufladen kann
- ....
Du kannst das aber auch mit einem 1ms-Timer-Interrupt machen; in der 'Freizeit' kannst Du dann was 'Besseres' erledigen.
Schau mal unter http://www.domnick-elektronik.de/picasm.htm#RdAdw
-
Danke kalledom, da war der Fehler, der Kondensator hatte nicht genügend Zeit um sich aufzuladen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen