Hallo Ihr,
nachdem ich das super Forum hier gesehen habe, habe mich erstmalig an die AVRs rangewagt. Als Programmiersprache habe ich Bascom ausgewählt.
Habe mir den Programmieradapter mit 74244 gebaut und aus Verzweiflung 2 Boards gebaut. Eins mit dem 2313 und eins mit Atmega8, aber beide mit dem selben Fehler.
Ich hatte vor mir so eine Rheinturmuhr zu bauen (Lauflicht). Dazu habe ich mir die Porterweiterung aufgebaut, so wie unter http://www.roboter-projekte.de/porterweiterung.htm
beschrieben mit 5x74HC573.
Alles funktioniert im Prinzip, nur macht die "Zehner"-Anzeige der Stunden was sie will.
Mal zählen die einer Std bis 9 und anstelle die erste Zehner h angeht, geht die zweite h an.
Mal zählen die einer h bis 9 hoch, obwohl beide zehner h an sind.
Soll ja nur bis 24 anzeigen......
Ich weiss nicht wo der Fehler liegt, das kann nach Prog. nicht sein!
Ich hoffe ihr könnt einem Anfänger den Frust nehmen....hänge schon seit Wochen hier dran.
Waitms 1 einfügen, damit das Latch auch die Daten richtig übernehmen kann, dann würde ich bei jeder Änderung der Stunde mit Print mir die aktuellen Werte anzeigen lassen, dazu sollte die Uhr natürlich etwas schneller laufen.
danke für die Antwort.
Das mit dem Warten zur Übernahme habe ich bis zu 5ms ausprobiert, aber da treten dann andere Probleme auf. Ich nehme an das dann wieder der Interrupt ausgelöst wird bevor die Anzeige Routine zu beendet ist.
Wie meinst du das mit Print?
Wohin kann ich mir denn die Werte senden lassen?
Unter Bascom kannst Du mit Print die Werte über die serielle Schnittstelle ausgeben. Die serielle Schnittstelle des MCs kannst Du über einen Pegelwandler an die serielle Schnittstelle Deines PCs anschließen. Die Werte werden dann in einem Terminalprogramm angezeigt.
kannst Du bitte mal testen, ob das Programm funktioniert? Habe es eben mal schnell im Editor geschrieben. Bin am überlegen, ob ich die Uhr nicht nachbaue sieht garantiert super in einem schwarzen Alurohr aus.
ich habe die Fehler im Programm korrigiert, das Programm wird jetzt ohne Fehler compiliert. Gleichzeitig habe ich die Routinen für die Aktualisierung der Zeit und der Anzeige aus der Interrupt-Routine herausgenommen und in ein Unterprogramm gepackt, damit die Interrupt-Routine möglichst kurz ist.
Gruss Frank
P.S. danke für die Blumen, Dein Ansatz zur Lösung ist aber auch nicht schlecht, er benötigt nur mehr Speicher
also, es funktioniert auch nicht so ganz.
Sek: Einer und Zehner ist ok,
Min: Einer zählen bis 9 hoch , wechsel auf Zehner ist ok,
wenn aber die 5te Zehner angehen soll, (49 Min) stimmt die Anzeige gar nicht mehr,
Std: Zählen nur bis 8 hoch
Aber: Wo ist denn der Fehler in meinem Programm mit der Stundenanzeige? Meine Stundenanzeige geht ja mal und mal nicht, d.h. der erste Durchlauf funktioniert nicht, der 2te geht.
Sonst funktioniert ja alles.
If Std_e >= 4 Then
If Std_z = 2 Then
Std_e = 0
Std_z = 0
For X = 0 To 10
S_std_e(x) = 1
Next X
For X = 0 To 3
S_std_z(x) = 1
Next X
Set S_std_z
End If
End If
Wofür verwendest Du Set S_std_z? Das ist der einzige Befehl, der mir etwas spanisch vorkommt.
Weiter würde ich in der Initialisierung die Werte für Sec_e, Sec_z ... gleich 0 setzen. Bei den meisten Werten ist das zwar egal, weil spätestens nach dem 2. Durchlauf Dein Programm die Werte richtig gesetzt hat, aber gerade bei Std_z spielt es eine große Rolle, wenn durch Zufall Std_z größer 2 ist, dann wird ein ganzer Programmteil nie ausgeführt, die Stunden zählen von 0 bis 9 durch und bei den Zehnern tut sich nichts.
Mit diesen Änderungen müsste Dein Programm funktionieren.
ich verzweifel bald, es geht immer noch nicht.
Aber danke für die Hilfe.
"Set" war ein Versehen...schon mal gut das andere draufschauen..man wird ja doch Betriebsblind
Lesezeichen