Ich benutze einen Atmega88 mit einem IC4094 um 8LEDs anzusteuern. Kurz zum Aufbau: -3Pins vom mega88 [PD0-PD2] führen zum IC4094 [Stroke,Data,Clock] -Am 4094 sind ,Pin15 und Pin16 mit Vcc des mega88 verbunden, Pin8 mit Masse -Q1 bis Q8 des 4094 sind mit LED und Vorwiderstand zu Vcc des mega88 verbunden Mein Problem: Die Leds leuchten der Reihe nach sehr schnell <1s und dannach sind sie Aus. Gewollt ist aber das sie dannach An bleiben und die Geschwindigkeit langsamer ist. Ist mein erster Versuch mit einem IC4094 davor habe ich nur LEDs An und Ausgeschaltet.Bitte um Nachsicht. Quellcode liegt im Anhang bei. Danke für eure Hilfe
1 | #define F_CPU 18432000UL //Quarzfrequenz in Hz
|
2 | |
3 | #define delay_ms(ms) _delay_loop_2(ms * (F_CPU/4000))
|
Macht pro ms ein Argument von 4608. Das Argument von _delay_loop_2 ist lt. Dokumentation zur avr-libc 16 Bit groß, also maximal 65535.
1 | delay_ms(500); |
Nun rechne mal, wie groß das Argument für _delay_loop_2 hier wird (und was bei Beschneidung auf 16 Bit davon übrig bleibt).
besten Dank, damit ist die Sache mit der Geschwindigkeit erledigt :). Noch das Verständisproblem mit dem 4094er. Muss ich nach einem Stroke wieder die kompletten 8bits schieben? Jedoch glaub ich beim Starten gesehen zu haben das alle mal in der Zeit mindestens einmal An waren obwohl ich nach einem Clockbefehl sofort wieder Stroke toggle. Ein weiteres Problem liegt vllt im Aufbau vor.
Vielleicht nennen wir den "Stroke" einfach korrekt "Strobe". Mit dem Strobe wird der momentane Zustand in die Ausgangs-Latches geschrieben. Gibst Du also einen Strobe nach jedem Takt, siehst Du schön, wie die Daten durchmarschieren. Wenn der Strobe alle 8 Takte kommt, kannst Du ein komplettes LED-"Bild" übertragen und erst, wenn die Übertragung fertig ist, erscheint es am Ausgang.
Ja. Warum sie wieder ausgehen, kann ich Dir nicht sagen. Was aber auffällt, ist, dass Dein Hauptprogramm endet - ein Zustand, den eine CPU nicht kennt. Sie läuft weiter. Mach' mal einen for(;;); ans Ende (oder while(1);).
Ich habe vor kurzem ein 4094 Schieberegister für das Projekt BlinkenLEDs simuliert. Ich habe das Projekt mal wieder zum Leben erweckt und einen MC zur Steuerung angeschlossen. Im Anhang ist die Funktionsweise in einem Ablaufdiagramm dargestellt.
Danke für das Diagramm. Sieht so aus als könnte ich Strobe auch direkt auf High legen ohne es nach jedem clock ein/aus zu schalten. Versuche ich morgen mal zusammen mit der endlos Schleife am ende.
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.