PIC RA4 als I/O nutzen

Gast #1371674
Lesenswert?

Hi

Ich möchte den RA4 als Ausgang nutzen. Da dieser ja open/drain ist, hab 
ich einen externen PullUp angeschlossen. Während man am PIC einen Reset 
auslöst, bleibt der Pin auch high, aber dann wird er sofort auf low 
gezogen und bleibt da, egal ob im Programm dann

PORTAbits.RA4 = 1
oder
PORTAbits.RA4 = 0

aufgerufen wird



Initialisiert wird der PIN ganz gewöhnlich mit TRISA=0


Weiß jemand weiter?
Rüdiger
Gast #1371691
Lesenswert?

sorry, PIC ist ein 18f242

mit dem TRIS register müsste man den PIN doch als digitalen Ausgang 
definieren können, steht so im Handbuch. Und außer dass AR4 open drain 
ist, hab ich keine weiteren Besonderheiten entdecken können...
Gast #1371704
Lesenswert?

>sorry, PIC ist ein 18f242

>mit dem TRIS register müsste man den PIN doch als digitalen Ausgang
>definieren können, steht so im Handbuch. Und außer dass AR4 open drain
>ist, hab ich keine weiteren Besonderheiten entdecken können...

Da gibt es auch keine. Der Fehler kann eigentlich nur
irgendwo im Programm stecken. Wo greifst du noch auf PORTA zu?
#1371713
Lesenswert?

Rüdiger schrieb:

> mit dem TRIS register müsste man den PIN doch als digitalen Ausgang
> definieren können, steht so im Handbuch.

Das wohl. Aber schau mal beim ADC vorbei, auch wenn du den nicht 
verwendest. Der krallt sich ab Reset seine Pins und gibt die für I/O 
erst auf Anfrage frei.
Gast #1371719
Lesenswert?

>Das wohl. Aber schau mal beim ADC vorbei, auch wenn du den nicht
>verwendest. Der krallt sich ab Reset seine Pins und gibt die für I/O
>erst auf Anfrage frei.

Nicht beim 18f242. RA4 ist da kein analoger Eingang.
Und wenn er einer wäre müsste der Pullup ihn trotzdem hochziehen.
Gast #1371758
Lesenswert?

wie gesagt ich hab den Fehler zwar gefunden bzw. eingrenzen können, aber 
es ist kurios. Der Aufruf von
PORTAbits.RA4 = 1;
setzt alle anderen Ausgänge von Port A auf low.

Der Ablauf:
while(1)
{
PORTAbits.RA4 = 1;
Delay10KTCYx(200);
PORTAbits.RA0 = 1;
Delay10KTCYx(200);
}

führt zu einem Wechselblinker zwischen RA0 und RA4. Weiß jemand Rat?
Gast #1371791
Lesenswert?

Das ist normal, um das zu verhindern müsstest du mit hidden register 
arbeiten, sprich die Ausgangsports dir merken, und in sogenannte 
Schattenregistern reinschreiben, die Operation auf Schattenregister 
vollziehen, und dann das Register komplett auf das Port schreiben.

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