Hallo, habe o.g. PIC mit Komparator und interner Spannungsreferenz initialisiert (CM2:0 = 0b110, V1IN- liegt an RA0/AN0, V1IN+ an VREF intern, V2IN- liegt an RA1/AN1, V2IN+ an VREF intern): B'10001101' --> CVRCON B'00000110' --> CMCON Die PORTA-Pins sind alle auf digital gestellt und VREF+, VREF- sind nicht angeschlossen: ADCON1 --> xxxx011x RA0/AN0 als Eingang, alle anderen PORTA-Pins als Ausgang: TRISA --> B'00000001' Ich vergleiche eine analoge Spannung an PORTA.0 mit der internen Referenz 2.17 V mit Komparator C1. Komparator C2 wird nicht verwendet. Die anderen Pins an PORTA werden als digitale Ausgänge verwendet. PROBLEM: ======== Sobald ich CMCON initialisiere wird PORTA.2 auf LOW, also 0 V gezogen. Ich kann danach durch BSF den PORTA.2 testweise setzen, und der Ausgang wird wie gewünscht auch HIGH, aber: Der Pin geht danach wieder auf LOW! Am Pin RA2/AN2/VREF- liegt doch nur: - die PORTA.2 Digital-Eingangslogik (TTL Input Buffer) - der Eingang des nicht benutzten AD-Wandlers - der offene Schalterkontakt (CIS=0) des Komparators C2 - der Ausgangstreiber des digitalen PORTA.2 Was mache ich falsch? MfG, Alois
... ich hab's! Konfiguriert man den Komparator, so werden die betreffenden PORTA-Eingänge automatisch auch als analoge Eingänge geschaltet. Es ist also das Signal 'Analog Input Mode' = '1' beim entsprechenden Port-Pin (s. PIC16F877a Manual). Ein Pin-Eingang wird also auf analog geschaltet, wenn: A) in ADCON1 analog konfiguriert ODER: B) in CMCON entsprechend als Komparator konfiguriert Dann darf man wieder nicht mit BSF oder BCF arbeiten, da Read-Modify-Write - Lesen des Ports liefert dann immer '0'. Im Kapitel "Comparator" des PIC16F877a-Manual ist das bei der Mode-Übersicht ganz klein durch die 'A'-Eingänge gekennzeichnet. Hier wäre eine Ergänzung im Kapitel "I/O Ports, Port A" vorteilhaft. MfG, Alois
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.