Hi Ich bastel mir hier grad etwas für meinen Flugsimulator, die komplizierten Teile funktionieren auch schon alle. Nur bei den eigentlich einfachen Dingen hängt's mal wieder. Also, hier erst mal meine Ausstattung: ATmega162 @14,318MHz AVRStudio4 yaap Nun würde ich ganz gerne 12 LEDs ansteuern, diese sind an zwei kaskadierte 74HC595 angeschlossen. Die LEDs sind direkt mit einem Vorwiederstand (330 Ohm) zwischen Chip und GND geschaltet. Ich habe bereits ausgemessen, dass diese LEDs jeweils 8,7-8,8mA ziehen. Das ist grad noch so in den Spezifikationen des 74HC595. hier noch ein bischen Sourcecode, mit dem ich versucht habe, die Schieberegister anzusteuern. (ist nur ein Beispiel, ich hab da schon einiges probiert...): .equ SI = 1 .equ RCK_pin = 3 .equ SCK_pin = 4 sbi PORTB, SI nop sbi PORTB, SCK_pin nop cbi PORTB, SCK_pin nop cbi PORTB, SI nop sbi PORTB, SCK_pin nop cbi PORTB, SCK_pin nop sbi PORTB, RCK_pin nop cbi PORTB, RCK_pin Nun ist die Frage, warum die Schieberegister nicht reagieren und v.a. wie man das beheben könnte? Schon mal danke
Ups, sorry hab ich vergessen SCLR liegt immer auf Vcc (kein löschen) G liegt immer auf GND (Ausgänge immer aktiv)
Dann bleibt noch die Frage, was ohne LEDs mit dem 595 passiert. Denn der Code oben ist schon ok (die NOPs sind überflüssig). Nur kann es sein, dass der 595 über den geschalteten Strom Störungen einfängt. Wie ist der abgepuffert (Kondensator zwischen VCC/GND, Typ, Entfernung)?
Auf der Platine hab ich bisher nur die beiden ATmegas abgepuffert (einer davon ist noch nicht mal eingebaut). Sprich das Schieberegister hängt über ca 7cm Draht am Ausgang der Stromversorgung (7805+Kondis).
Aber ich könnte mal ein paar 100nF Kerkos an die Schieberegister bauen, mal schaun, ob das was bringt. Allerdings dachte ich bisher, dass "normale" ICs wie die 74HC-Reihe relativ unempfindlich gegen Störungen ist
^^ War zu langsam Ok, danke für den Tip (bin in ein paar Minuten fertig und teste es dann)
Also beide 74HC595 haben jetzt einen 100nF Kerko zwischen Vcc und GND, jedoch passiert weiterhin nichts, d.h. keine der LEDs leuchtet. Wenn die Versorgungsspannung längere Zeit aus war und dann wieder eingeschaltet wird, leuchten für ca 1s alle LED, danach gehen sie aber alle wieder aus.
verdammt, ich bin so dumm. Wahrscheinlich hab ich mein einlöten der Drahtbrücken was verwechselt, ich hab grad nochmal alles ausgemessen und gesehen, dass SCLR auf GND liegt. Fazit: ich kann keine Platine aufbauen, in der nciht mindestens 5 Fehler sind (Oszi hatte anfangs auch keinen Strom)...
Kein Softwareproblem - soviel ist klar. Kannst das ja mal annähernd software-frei testen. Ein Ausgang vom Controller produziert einen Takt 1Hz oder weniger - kann man ja problemlos kontrollieren. Dieser Takt geht an beide Takte vom 595. Der Kaskadenausgang (Q7' oder wie immer der in deinem Datasheet heisst) geht via Inverter zurück an den Eingang. Egal wie der 595 anfängt, so beschaltet muss ein Muster durch die LEDs laufen und wenn es ein einfaches 50/50 Lichtband ist. Wenn nicht - Hardwareproblem.
Einfache Regel: Wenn alles zusammengelötet ist, sämtliche Verbindungen aller ICs durchklingeln, bevor das Zeug erstmals eingeschaltet wird. Hilfreich dabei: akustischer Durchgangstester. Sind fast immer Fehler drin.
Es lag genau dadran: SCLR des ersten Schieberegisters lag an GND (das war allerdings ein Denkfehler, da der Pin mit einer kurzen Drahtbrücke vom ISP-Steckkontakt versorgt werden sollte. Dummerweise hab ich da den falschen Pin angenommen). That's life... Naja, jetzt funktioniert's, fehlen nur noch die Drehimpulsgeber... Und natürlich danke für die Tips!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.