Member since Apr 2012
12 posts
|
![]()
Subject: Julie 2013 2a: stoppuhr
Hallo zusammen.
Ich habe ein paar Fragen zu der Aufgabenstellung. Bei der Funktion showtime(uint16_t ms) steht man solle unnötige Aufrufe vermeiden. Ich hätte diese Funktion in einer for-Schleife hochzählen lassen;d.h. sie wird pro Millisekunde einmal aufgerufen. Kann/Soll man die Anzeige der aktuellen Zeit anders lösen? Desweiteren weiß ich nicht genau wie ich mit der Funktion void timer_setup(uint16_t ms) umgehen soll (TIMER1_COMPA_vect), bzw was diese Funktion auslöst und wo sie in der Stoppuhr vorkommt. Vielen Dank. Grüße Muffdey |
Member since Apr 2012
12 posts
|
![]()
So, hab mich jetzt mal an der Aufgabe versucht.
Aufgabenstellung: Programmieren Sie eine Stoppuhr, die mit Hilfe eines AVR-Mikrocontrollers implementiert ist. Die Stoppuhr hat zwei Taster. Der erste Taster startet und stoppt die Stoppuhr, der zweite Taster setzt sie zurück. Die Stoppuhr besitzt eine Flüssigkristallanzeige die über eine Bibliotheksfunktion angesteuert wird. Die Anzeige hat eine Genauigkeit von 1 Millisekunde und kann bis zu 999,999 Sekunden anzeigen. Des Weiteren steht eine Bibliothek zur einfacheren Konfiguration des Timers zur Verfügung. Im Detail soll Ihr Programm wie folgt funktionieren: – Initialisieren Sie die Hardware in der Funktion void init(void);. Es sollen keine Annahmen über den initialen Zustand der Hardware-Register getroffen werden. Das Display zeigt 0 an. – Das Programm wartet im Schlafmodus auf Tastendruck oder Timer-Interrupt. – Wird der Start-Stopp-Taster gedrückt, startet die Stoppuhr. Das Display wird jede Millisekunde aktualisiert. – Wird der Start-Stopp-Taster erneut gedrückt, stoppt die Stoppuhr. Bei einem weiteren Druck startet sie wieder. – Wird der Reset-Taster gedrückt, wird die Stoppuhr angehalten und in den Ausgangszustand zurückgesetzt. Display-Bibliothek: – showtime( uint16_t ms); Zeigt auf der Anzeige ms Millisekunden an. Beim ersten Aufruf wird das Display initialisiert. Da dies eine aufwändige Funktion ist, sollen unnötige Aufrufe vermieden werden. Timer-Bibliothek: Die Funktionen der Timer-Bibliothek dürfen nicht von einem Interrupt aus aufgerufen werden! – void timer_setup(uint16_t ms); Löst alle ms Millisekunden die Interruptquelle TIMER1_COMPA aus. ISR-Vektor-Makro: TIMER1_COMPA_vect – void timer_stop(void); Deaktiviert den Timer Mein Code:
Wäre sehr nett wenn jemand drüberschauen kann =) Grüße muffdey |
Powered by the Unclassified NewsBoard software, 20110527-dev,
© 2003-8 by Yves Goergen