Hallo
Ich habe eine Frae zum setzen von Port PIC's (18F4550 mit XC8
Compiler). An sich habe ich einige Erfahrung, aber das hier will mir
nicht in den Kopf. Es geht um die berüchtigten Funktionsunterschiede der
LATA und PORTA Register.
Im untenstehenden Code wird das PORTA Register bei der | Operation
gelesen. Aber offenbar wird dort an Bitposition 1 ein low gelesen,
obwohl ich den Port auf high gesetht habe.
1 | TRISA = 0x00; // Alles Ausgänge
|
2 | LATA = 0x02; // Setzt Bit 1
|
3 | LATA = PORTA | 0x01; // Setzt Bit 0, aber löscht Bit 1. Warum??
|
Ich weiss, die letzte Zeile ist ein praxisfremder Müll. Besser wäre
LATA|= 0x01; Aber ich will einfach verstehen, was da passiert.
Ist es wirklich so, dass ein PORT-Bit immer als low gelesen wird, wenn
der Tristate auf Ausgang geschaltet wird? Liest nicht das PORT-Bit den
Aushgang zurück, der durch das LAT-Bit gesetzt wurde?
LATA verursacht doch ein high am Pin, das vom Port als solches
eingelesen werden müsste.