PIC16F870 - Port RA4 (Schmitt Trigger) als TTL-Ausgang nutzen

OP #1259113
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
(Firma: Promaxx.net) #1259212
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.
OP #1261955
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
(Firma: Promaxx.net) #1261989
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 ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.