PIC18F4550 LATA mit PORTA nicht auslesbar?

Gast #6166271
Lesenswert?

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.
Gast #6168464
Lesenswert?

Herzlichen Dnak. Der Tip mit dem Abhängen der Analogperipherie hat 
geholfen.


Aber warum soll man im Zusammenhang mit Port A auch auf das Bit USBEN 
achten?

Im Datenblatt vom PIC18F4550 steht auf Seite 115, dass das Register UCON 
(Bit USBEN) einen Einfluss auf Port A hat. Ich kann diesen Einfluss aber 
icht nachvollziehen. Kennt den jemend?

Wenn ich das DB nach den Begriffen UCON und USBEN durchsuche, finde ich 
keinen Satz, der einen Zusammenhang zu Port A herstellt.

Überhaupt sehe ich keinen Zusammenhang zwischen Port A und der USB 
Schnittstelle.
#6168500
Lesenswert?

Michi schrieb:
> Aber warum soll man im Zusammenhang mit Port A auch auf das Bit USBEN
> achten?
>
> Überhaupt sehe ich keinen Zusammenhang zwischen Port A und der USB
> Schnittstelle.

PORTA wird auch für die USB-Schnittstelle verwendet.
RA4 ist "External USB transceiver RCV input".

UCON.USBEN muss '0' sein weil sonst Teile von PORTA,PORTB und PORTC für 
USB verwendet werden.......
#6168577
Lesenswert?

Chris B. schrieb:
> UCON.USBEN muss '0' sein weil...

Nein, solange der interne Transceiver nicht deaktiviert wird (UTRDIS), 
hat das USB Modul nur Einfluss auf D+ und D- (RC5:4).


Michi schrieb:
> Überhaupt sehe ich keinen Zusammenhang zwischen Port A und der USB
> Schnittstelle.

Schau dir FIGURE 17-1: USB PERIPHERAL AND OPTIONS an. Wie Cris schon 
aufgezeigt hat, ist RCV = RA4.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren