Gast
#2980662
Hallo, ich habe mir ein Programm in Assembler geschrieben, welches die Zeit Rückwärts zählt und anzeigt. Nach Ablauf der Zeit ertönt ein Beep. Sowas wird gebraucht bei Sportwettkämpfen (Hallenfußball). Zusätzlich ist auch dafür ein Punktezähler integriert, allerdings nur als Zweitfunktion. Diese wird bei gedrückten Taster und Reset ausgewählt. Dann geht der Timer aber nicht mehr. Wäre noch zu ergänzen. Das ganze arbeitet mit einen ATtiny2313, einer 4-stelligen 7-Segment LED-Anzeige, drei Taster und einen Pieper, welcher beim Anlegen von Spannung selbständig Piept. Und natürlich die üblichen Widerstände und Halbleiter für Spannung und Strombegrenzung. Da ich mich erst kurz mit den Atmel Chips beschäftige und viel Informationen aus den Foren im Internet bezogen habe, möchte ich das Resultat natürlich auch für andere nicht vorenthalten. Einen Schaltplan werden ich noch nachliefern, sobald ich diesen gezeichnet habe. Nur das Programm gibt es schon vorab. Schaltung: Der PortB ist über NPN an die alle 7-Segmente angeschlossen (a,b,c,d,e,f,g). PortD Bit 0 bis 3 sind über Transistoren an jeweils eine Anode ageschlossen. Das ermöglicht die Nutzung einer separaten Spannung für das Display, zum Anschluss großer Anzeigen oder LED Gruppen. Die anderen Pins 4,5,6 sind an die drei Buttons nach plus geschaltet. Pin 6 ist noch ein Pieper dran (da wird zwischen in- output geschaltet). Software: Der Timer wird mit einen EEprom-Wert auf 12 min vorgeladen. Taster Pin 4 startet und stoppt den Timer. Taster Pin 6 stellt wieder auf die Startzeit. Taster Pin 6 und 5 gleichzeitig drücken stellt die Minuten aufwärts. Es kann nur die Zeit verändert werden wenn der Timer im Stopp-Modus ist. Kein versehentliches setzen, nur stoppen. Bei Null wird ein langer inpulsartiger Piepton erzeugt und natürlich Tastenpiepton beim Drücken. Zweitfunktion: Taster an Pin 4 halten und Reset drücken, z. B. Einschalten). Taster Pin4 zählt die Zahl links hoch, Taster Pin5 rechts. Zum Löschen muss zusätzlich der Taster Pin 6 gehalten werden. Jede Betätigung erzeugt ein kurzen Piepton. Einstellungen: Der Interrupt TC1 muss auf eine Sekunde getrimmt werden. Dazu muss der Teilfaktor angepasst werden. Da ich noch auf einen Quarz verzichtet habe und mit dem internen Taktgeber arbeite, muss jeder Chip abgeglichen werden. 60 min laufen lassen, dann die Differenzsekunden ermitteln und den Teiler korrigieren. 1s = 25350(compare TC1)*40(Softwareteiler)*8(prescaler TC1) x (compare TC1)= Realzeit/Sollzeit * 25350 (old compare TC1) Realzeit= die angezeigte Zeit (z. B. 59 min und 24 sek) Sollzeit= die wirkliche Zeit (z. B. 60 min und 0 sek) Den neuen Wert x eintragen und Chip beschreiben. Wenn Restwerte sind, aufrunden. Ein theoretischer Fehler von 0,08 Sekunden in einer Stunde ist meiner Meinung nach vernachlässigbar. Der Code ist nicht perfekt, eben ein erster Anfang, welcher funktioniert. Ok ich werde mich mit dem Schaltbild beeilen und bis dahin verbleibe ich mit Gruß und viel Spass Peter


