Forum: Mikrocontroller und Digitale Elektronik PIC16F870 - Port RA4 (Schmitt Trigger) als TTL-Ausgang nutzen


von Olaf R. (gruser)


Lesenswert?

Hallo zusammen,

den Kanal RA4 (Schmitt-Trigger Kanal) des o.g. PIC´s möchte ich als ganz 
normalen TTL-Ausgang verwenden. Dazu habe den Ausgang einmal an einen 
Widerstand an 5V angeschlossen, und einmal an eine LED die auf Masse 
geht.

Schon funktionierts, ich kann die LED schön ein- und ausschalten. Ebenso 
schaltet der Kanal ein Relais ein und aus.

Problem ist aber, wenn ich die Spannung des PIC´s einschalte, blinkt die 
LED kurz (bzw. zieht mein Stromstoßrelais kurz an). Das gleiche passiert 
wenn ich die Spannung des PIC´s abschalte. Dann "glüht die LED für ca. 
500ms aus".

Dabei ist egal in welcher Reihenfolge ich den Port initialisiere:

PORTC = 0;
ADCON1=0b.0000.0110;
TRISC = 0b.1000.0000;

Die anderen TTL-Ports klappen super. Da gibts kein Geblinke.

Gibt es da einen praktikablen Trick, damit der Port beim Ein- und 
Ausschalten der Spannung auf Low bzw. auf dem letzten Schaltzustand 
stehen bleibt? Hoffentlich ohne große externe Beschaltung.

Gruß
Olaf

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Port RA4 ist ein Open-Drain-Ausgang !

D.h. es ist keine Push-Pull-Stufe, die satten Strom liefert und 
"ansaugt"!

So ein Ausgang (bei Transistoren ist das ein Open-Collector-Ausgang) 
kann prima Strom "einsaugen" und gegen Masse leiten, aber keinen Strom 
liefern.
Um also logische Eingänge anzusteuern, nimmt man einen 
Pull-Up-Widerstand, um einen High-Zustand (Ausgang passiv) oder einen 
Low-Zustand (Ausgang aktiv gegen Masse geschaltet) zu erhalten.

Wenn man aber nun eine LED ansteuern will, so ist es am 
intelligentesten, man schaltet von V+ die LED über den Vorwiderstand an 
den Port-Pin. Gibt der Port-Pin nun eine 0 aus, leuchtet die LED.

Alles andere ist Blödsinn.

von Olaf R. (gruser)


Lesenswert?

Danke, ja war ein blöder Fehler wie ich die LED angeschlossen habe.

Leider klappt es trotzdem nicht - sehr sehr seltsam. Die LED brennt hell 
wenn ich die Spannungsversorgung einschalte und PORTA auf Low steht - 
und leuchtet deutlich schwächer wenn ich PORTA auf High setze.

Gibt es eventuell noch ein relevantes Register außer diesen hier?

ADCON1=0b.0000.0110;
PORTA = 0;
TRISA = 0b.0000.0000;    // PortA als Ausgang definieren

Das gibts doch nicht dass ich diesen Open Drain nicht zu einem 
stinknormalen TTL Ausgang hinbekomme seufz

Hoffe ihr habt noch Ideen woran es liegen könnte.

Gruß
Olaf

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Sehr merkwürdig...

Der Schmittrigger im Eingang ist immer mit dem Pin verbunden. Ich kann 
mir nicht vorstellen, daß der soviel Strom zieht.

Die LED wird von dem gleichen Potential versorgt, wie der PIC ?
Welchen Vorwiderstand hast Du verwendet ? Welche LED ?

Du hast auch keine Böcke im Code, die den Ausgang gelegentlich kurz 
einschalten ?

von Jens P. (picler)


Lesenswert?

Aus leidvoller Erfahrung versuche ich, wenn möglich, den RA4-Pin nicht 
zu nutzen und wenn es doch sein muss, dann als Eingang.
Schaue dir mal die Seite sprut.de an, da gibt es ein paar gute Tipps zu 
den PICs.

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.