Forum: Mikrocontroller und Digitale Elektronik PIC18F4550 LATA mit PORTA nicht auslesbar?


von Michi (Gast)


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.

von Dirk W. (Gast)


Lesenswert?


von Chris B. (dekatz)


Lesenswert?

Nach einem Reset sind die Ports beim PIC immer auf Analog gestellt 
(sofern mit Analogfunktionen belegt)
Liest man einen Analogport ein, wird immer '0' gelesen (steht sicher 
auch im DB).

von Volker S. (vloki)


Lesenswert?

Das LATCH will den Pin möglicherweise auf 1 stellen, aber es kann sein, 
dass der Ausgangstreiber das nicht schafft. Dann würde man am PORT eine 
0 lesen.

Ein PORT wird auch dann immer als 0 gelesen, wenn der Pin auf analog 
gestellt ist.

von Hodenlecker (Gast)


Lesenswert?


von Hodenlecker (Gast)


Lesenswert?

Io Speed Falle

von Michi (Gast)


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.

von Chris B. (dekatz)


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.......

von Volker S. (vloki)


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.

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.