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
Kann der Zähler auch vorwärts zählen? Morgens muß ich meine Brötchen immer von Hand zählen; mit einem Back-Counter wäre das viel einfacher.
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.
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.