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
Hallo,
hier noch der Schaltplan. Ich hoffe, dass sich keine Fehler
eingeschlichen haben, weil die Schaltung aus Kopf erschaffen wurde und
nachträglich ich erst den Schaltplan erstellte.
Hallo nochmal,
hier noch eine etwas veränderte, verbesserte Schaltplanversion. Beim
ersten Schaltbild ist an der Basis von T13 beim Widerstand das k
verloren gegangen. 1,5k muss der sein, wie bei den anderen T14-T16.
Im Schaltbild ist ein Quarz angeschlossen, welcher im Programm nicht
benutzt wird. Entweder den Quarz weg lassen oder die Fuses im Chip
umstellen. Abgeglichen muss der Chip aber trotzdem, wenn der Quarz
leicht von seiner Frequenz abweicht.
Im Programmcode in der Zeile:
1
"cbr empInt, 0xc0 ;because clear bit 6 and 7, is used for minutes"
ist beim Formatieren das t verschwunden. Ich hatte die Tabs mit dem
Windows-Editor angepasst. Es muss heißen:
1
"cbr tempInt, 0xc0 ;because clear bit 6 and 7, is used for minutes"
sorry für den Schusseligkeitsfehler von mir.
Ein Foto von der Versuchsschaltung habe ich auch noch eingestellt. Da
könnte man vielleicht gucken, wenn noch etwas unklar ist. Die Größe ist
100mm x 120mm. Es ist eine einfache und gekürzte Europlatine.
Peter
Hallo Herr / Frau Bäcker,
die Idee von ihnen ist realisierbar. Das ursprüngliche Anliegen war es
für Sportwettkämpfe einen Timer zu schaffen, welcher nach vorgegebener
und vergangener Zeit ein Signal gibt(lauter Piep). In einigen Hallen
existiert sowas schon eingebaut, aber nicht überall. Als zweite Funktion
ist in dem Programm ein Aufwärtszähler integriert, weil Volleyball nicht
nach Zeit sondern nach Sätzen gespielt wird. Je nachdem, welche Sportart
gerade veranstaltet wird, ist die Zeit oder Zählfunktion aktivierbar.
Beides zusammen ist nur nach Schaltplanänderung mit zusätzlichen
Anzeigen realisierbar.
Der Fall von Zählen einer Menge (z.B. Brötchen) ist leicht zu erstellen.
Schaltplan wäre identisch, außer der Punkt, welcher aber auch im
Programm entfernt werden kann. Ein Taster zählt einfach nur einen
programmierten Zähler hoch, welcher bis 16 bit, aber wegen der 4 Digits
nur bis 9999 gehen würde. Und beim Drücken zweier Tasten wieder auf Null
gestellt wird. Das ist wichtig, wegen dem versehentlichen Drücken, und
dann wäre der Zählerstand im Ar***. Programm ließe sich erstellen, aber
nicht diese Woche, weil ich muss die große Version noch bis Sonnabend
als Hardware fertig bekommen ;-) Im Kleinen geht's ja schon.
Gruß Peter
p.s. Über eine Lichtschranke (Sensor) oder sowas zählt der auch alleine
ohne drücken von Tastern.
Eine eigene Frage?
Dieser Thread ist über 13 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.