Forum: Mikrocontroller und Digitale Elektronik PIC 16LF877a Komparator ==> RA2 = LOW


von Alois Huber (Gast)


Lesenswert?

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

von Alois Huber (Gast)


Lesenswert?

... 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
Noch kein Account? Hier anmelden.