Hallo
ich habe immer noch Probleme mit dem HC595 Schiebregister, beim
einschalten flackern alle Ausgänge willkürlich.
Ich habe schon folgendes unternommen:
1
5V
2
|
3
| | 4,7kOhm
4
| | und 10kOhm ausprobiert
5
|
6
PIN13--------------PC3 des Atmegas
7
des 74HC595 (OE)
dazu dann folgende Programmroutine beim einschalten (s.unten):
Ausserdem habe ich auch mal SCL des 74HC595 an den Reset des Atmegas
gelegt, irgendwie hat nichts gebracht!
Trozdem flackern die Relais die ich an z.B JP4 zwischen 1 und 2 hängen
habe (s.Anhang)! Den JP3 habe ich kurzgeschlosse. Das es dort den R1
gibt, ist im Nachinein ein Fehler!
Hat da noch irgendeiner einen Tip für mich, was ich noch ausprobieren
kann, bin mit meinem Latein komplett am Ende....
Vielen Dank!
Was ist denn mit MR gemeint, im DB steht das nicht...
Normalerweise war der PullUp aber schon richtig, oder? Ob jetzt mit 4,7k
oder 10k spielt doch bestimmt nicht die große Geige, oder?
Markus P. schrieb:> Was ist denn mit MR gemeint, im DB steht das nicht...
Ihr meint beide dasselbe.
In dem einen Datenblatt heisst das SCL (Clear), im anderen MR (Master
Reset)
Die SCL bringt dir nicht viel. Denn der Pin löscht nur das
SChieberegister und nicht das Latch. Du müsstest also sofort einen PUls
am RCK nachschieben, damit dann auch das Latch sicher auf 0 steht.
> Trozdem flackern die Relais die ich an z.B JP4 zwischen 1 und 2 hängen habe
(s.Anhang)!
Das will mir ehrlich gesagt nicht eingehen.
Nach dem Anlegen der Spannungsversorgung dauert es ein paar Takte, bis
der µC aus dem Resez draussen ist. Nehm ich den Zwangsreset durch den
Brownout noch dazu, dann sind das ein paar Millisekunden, bis dann der
Mega die Kontrolle soweit hat um die 595 sauber zu initialisieren.
Ich würde dem OE einen großen Pullup-Widerstand spendieren, damit
gesichert ist, dass in dieser Zeit der 595 auf Tristate-Ausgang geht. Da
kann dann in weiterer Folge nichts mehr flackern, weil die ULN2803 dann
nicht durchschalten.
Wenn es immer noch flackert, dann stimmt mit deiner Ansteuerung was
nicht.
Eine Idee hab ich noch.
Da sich das ganze am Port C abspielt:
Über welchen µC reden wir eigentlich?
Auf einigen µC liegt am Port C das JTAG Interface und das ist per
Default eingeschaltet. Wenn das nicht per Fuse abgeschaltet wird, dann
funktionieren am Port C einige Pins nicht so, wie sie sollten.
@Karl Heinz
Hi das ist das NetIo mit einem 1282p Atmega,
@Frank,
ich habe den irgednwo aus dem Fourm, weiss jetzt aber leider nicht mehr
wo genau von wem das gekommen ist.... Oben im Kopf steht auch kein
Kommentar...
Aber was soll ich denn Überhaupt ändern, ich sehe da garkeinen
Unterschied in dem was du gepostet hast!
Danke ersteinmal schonmal, ich werde die Tipps einmal zu Hause
durchspielen und dann melde ich mich noch einmal!
Wenn das nur die Pins betrifft die von Port C kommen dann wird es wie KH
schrieb an der Konfig wegen JTAG liegen, Pullups hast du ja schon
probiert. Konfiguriere mal die Ports entspr. um, dann müsste das
Geflacker weg sein.
Ich hatte gestern das selbe Problem an einem 595, bei mir waren es
schlecht gelötete Pullups bzw. Pulldowns (diskrete Schaltung, Taster an
den entspr. Pins, kein MC), nachgelötet -> Geflacker weg.
Hallo Markus,
die Änderung ist, das Setzten des OE nach der Initialisierung der
Ausgänge.
Das Setzen des OE vor der Initialisierung als Ausgang dürfte in diesem
Fall zweckfrei sein.
In meinen Sourcen hatte ich das bereits geändert.
Sollte übrigends kein Angriff sein, sondern nur eine Frage. Weil es gibt
einen Artikel und in der Codesammlung etwas dazu. Es wäre unschön, wenn
hier Fehler nicht korrigiert würden. Wobei das auch an meine Adresse
geht. Ich hatte es vollkommen verdrängt.
Gruß
Frank
Frank L. schrieb:> Hallo Markus,> die Änderung ist, das Setzten des OE nach der Initialisierung der> Ausgänge.>> Das Setzen des OE vor der Initialisierung als Ausgang dürfte in diesem> Fall zweckfrei sein.
Nö ist es nicht.
Da der Pin noch auf Eingang gestellt ist, schaltet das den Pullup
Widerstand ein. Und damit wird der Pin schon mal nach High gezogen.
Nach dem Umschalten auf Ausgang ist der Pin dann auch
ausgangs-treiberseitig auf High.
Ziel der Sache ist es, den Pin so schnell wie möglich nach Anlegen der
Spannung auf High zu kriegen. Ob das der interne Pullup macht, oder die
Output-Treiber Stufe ist in diesem Fall egal. High ist High.
@Markus
> Trozdem flackern die Relais
Könntest du das noch mal näher ausführen? Was muss man sich darunter
vorstellen?
Ist das ein einmaliges kurzes Zucken der Relais nach dem Einschalten
oder dauert das eine gewisse Zeit lang an?
Denn eigentlich sollte das Programm die Pins nicht länger als ein paar
µs in einem (aus Sicht des 595) undefinierten Zustand lassen. Gleich
danach ist aber die Initialisierung durch und dann dürfte da nichts mehr
klackern. Ob ein Relais auf derart kurze Pulse im µs Bereich mechanisch
reagiert, weiß ich nicht. So recht vorstellen kann ich es mir nicht.
> Da der Pin noch auf Eingang gestellt ist, schaltet das den Pullup> Widerstand ein. Und damit wird der Pin schon mal nach High gezogen.> Nach dem Umschalten auf Ausgang ist der Pin dann auch> ausgangs-treiberseitig auf High.
Ja, wobei ausgangsseitig sowieso schon ein pull up existiert
5V
|
| | 4,7kOhm
| | und 10kOhm ausprobiert
|
PIN13--------------PC3 des Atmegas
des 74HC595 (OE)
> Ziel der Sache ist es, den Pin so schnell wie möglich nach Anlegen der> Spannung auf High zu kriegen. Ob das der interne Pullup macht, oder die> Output-Treiber Stufe ist in diesem Fall egal. High ist High.
Es war also mein Ziel, zumindest nicht AUF LOW zu schalten.
Das hat Frank L. offensichtlich nicht verstanden und wollte die
Korrektur kaputtkorrigieren
"korrigiere mal die Init-Routine."
Das Problem liegt meines Erachtens darin, dass du zuerst den OE-Pin als
Ausgang definierst (DDR auf 1) und ihn erst danach auf High-Level legst
(PORT auf 1), so dass er zwischendurch kurzzeitig ein "Low-Ausgang" ist
und die zufälligen Anfangszustände des Speicherregisters aktiv an die
Ausgänge gelegt werden.
Ich würde, bevor du irgendetwas anderes tust, PORT auf 1 setzen, damit
ist der Pullup aktiviert - parallel zum ohnehin externen Pullup, schadet
also nichts - und wenn dann DDR auf 1 gesetzt wird, gibt es auch keinen
Low-Puls mehr, sondern du hast einen Ausgang auf High-Pegel.
Anschließend kannst du dann das Schieberegister mit 0en füllen, sie in
die Latches übernehmen und danach PORT auf 0 setzen, um die Ausgänge zu
aktivieren.
Halllo,
Ich habe alle eure Tips durchgesetzt...und jetzt geht es. Wodran es
genau gelegen hat, weiss ich noch nicht. Ich glaube ich werd auch nicht
mehr auf Fehlersuche gehen..
Danke