Pfad: Home => AVR-Übersicht => Anwendungen => Timer2313
Timer mit tiny2313

Timer mit ATtiny2313 und Siebensegmentanzeige

Diese Anwendung eines AVR beschreibt einen einstellbaren Timer für maximal eine Stunde Dauer mit einer vierstelligen Siebensegmentanzeige und Tastenbedienung.

Der Timer hat folgende Eigenschaften:

0. Inhalt

1. Hardware

Das Schaltbild zeigt den Aufbau des Timers.

Schaltbild Timer Er besteht aus:

- dem Prozessor ATtiny2313,
- der Stromversogung aus der Batterie mit Schalter und Abblockkondensator,
- der vierstelligen Anzeige mit LED-Anzeigen mit gemeinsamer Anode,
- zwei LEDs zwischen Minuten und Sekunden
- den vier Anodentreibertransistoren,
- Strombegrenzungswiderständen für die Treibertransistoren (1k5) und die Segmente (56 Ohm),
- einem Schalter für die Zählrichtung,
- drei Tastern für Abwärts, Aufw>ärts und Start,
- einem Ausgabeport.

Die Anodentreiber sind an den Portausgängen PD3 bis PD6, die Segmente an den Portausgängen PB0 bis PB6 angeschlossen. Die beiden LEDs werden von PB7 gesteuert.

Die Anschlussfolge der LED-Anzeigen entspricht den Vishay-Telefunken-Anzeigen.


Zum Inhaltsverzeichnis

2. Aufbau

Der Aufbau erfolgt auf zwei separaten Platinen.

Auf der Displayplatine sind die Anzeigen verbaut und verdrahtet. Links und rechts sind zwei Stiftleisten angeordnet, mit denen die Displayplatine auf die Prozessorplatine aufgesteckt wird.

Display von unten Die Verdrahtung erfolgt mit lötbarem Kupferlackdraht. Wegen der umgekehrten Montage der Stiftleiste ist für diese Platine beidseitig kaschiertes Lochraster-Material hilfreich.

Prozessor von oben Der Prozessor und alle restlichen Bauelemente sind auf der unteren Platine verbaut. Die beiden 7-poligen Pinreihen halten die Displayplatine. Die beiden linken Transistoren sind wegen der einfacheren Verschaltung mit der Beschriftungsseite nach unten montiert.

Prozessor von unten Hier kommt einfach kaschiertes Lochraster zum Einsatz. Auch diese Platine ist mit lötbarem Kupferlackdraht verdrahtet.

Die Gesamtschaltung Die beiden Batterien werden angeschlossen.

Nach dem Einschalten Die Schaltung, mit der Batterie verbunden, wird eingeschaltet und zeigt die Abschaltzeit an.

Anordnung der Bauteile So sind die beiden Platinen aufgebaut. Die Anschlussbelegung der Transistoren und der sechspoligen Programmierschnittstelle sind ebenfalls angegeben.

Aufwärtszählen Aufwärts-Zählen ist gestartet.

Ruhezustand Nach 20 Sekunden erlischt die Anzeige und die beiden LED werden gedimmt um Strom zu sparen.



Zum Inhaltsverzeichnis

3. Bedienung

ZustandTasteEffekt
InaktivDownVergleichszeit um 5 Sekunden erniedrigen und speichern
UpVergleichszeit um 5 Sekunden erhöhen und speichern
GoZählen aktivieren
AktivDownAbgelaufene Zeit um 5 Sekunden erniedrigen
UpAbgelaufene Zeit um 5 Sekunden erhöhen
GoZählen neu starten


Zum Inhaltsverzeichnis

4. Software

Die Software gibt es im HTML-Format hier und im asm-Format hier.

Sie funktioniert folgendermaßen:
  1. Nach der Inittierung der Ports, des Segment- und Anodentreiberpuffers, dem Lesen der Timer-Schaltzeit aus dem EEPROM und dem Starten des 16-Bit-Timers erfolgt die weitere Bearbeitung nach dem Aufwecken des Prozessors durch den Timer-Interrupt in der Hauptprogramm-Schleife.
  2. Der 16-Bit-Timer TC1 läuft mit dem standardmässig eingestellten Takt von 1 MHz und einem Vorteiler durch acht. Er läuft im CTC-Modus mit dem ICR-Register als Vergleichsquelle. Erreicht der Zähler 625 (nach 5 ms) wird ein Interrupt ausgelöst.
  3. In der Interrupt-Serviceroutine wird
  4. In der Hauptprogramm-Schleife wird zuerst die 5-ms-Flagge ausgewertet. Ist diese gesetzt, wird sie wieder gelöscht. War bislang keine Taste gedrückt (Tastenblockade inaktiv, zur Tastenentprellung), werden die drei Tastenbits abgefragt. Ist eine der Tasten gedrückt, wird abhängig vom Auf-/Abwärtsschalter die entsprechende Bearbeitungsroutine angesteuert und die weitere Tastenauswertung blockiert. Das geschieht mit den drei Tasten im Inaktiv-Modus: Im Aktiv-Modus werden die drei Tasten folgendermaßen behandelt: Bei blockierter Tastenauswertung werden die Tasten abgefragt, ist eine Taste gedrückt, wird ein Zähler auf vier gesetzt. Ist keine Taste gedrückt wird der Zähler um Eins erniedrigt. Erreicht der Zähler dabei Null, wird die Tastenblockade aufgehoden.
  5. In der Hauptprogramm-Schleife wird dann die 1-s-Flagge abgefragt. Ist diese gesetzt, wird sie zurückgesetzt. Ist Zählen aktiv, wird abhängig vom Auf-/Abwärtsschalter der Zählerstand der abgelaufenen Zeit erhöht bzw. erniedrigt. Bei Abwärts wird der erreichte Stand mit Null, bei Aufwärts mit der Vergleichszeit verglichen und bei Gleichstand die Aktiv-Flagge und und der Ausgang deaktiviviert. Der neue Stand wird in Minuten/Sekunden umgerechnet, in Sieben-Segment umkodiert und in den Siebensegment-Puffer geschrieben.
Für die ordnungsgemäße Funktion kann mit den werksseitigen Voreinstellungen gearbeitet werden und es sind keine Fuses zu setzen. Wer eigene Änderungen an der Software machen will, kann die EESAVE-Fuse setzen, damit bei der Flashprogrammierung das EEPROM nicht gelöscht wird und nach dem Flashen immer wieder neu programmiert werden muss.

Zum Inhaltsverzeichnis

©2012 by http://www.avr-asm-tutorial.net