Mike wrote:
> Hi!
>
> Ich bin noch ein mutiger Anfänger in Sachen MC und möchte ein relativ
> Programm schreiben
Was ist ein "relativ Programm"?
> für das ich auch schon ein paar Codeschnipsel
> gefunden hab. Dabei soll auf dem MC eine real time clock implementiert
> werden. Die Uhr wird durch einen Timerinterrupt jede Sekunde
> weitergezählt.
Warum nicht jede 10ms, dann kann der Interrupt auch gleich die Tasten
mit entprellen?
Oder alle 1ms, dann kann der Interrupt auch gleich die Anzeige
synchronisieren?
> Nun möchte ich einen externe Interruptpin durch einen
> Taster
Sehr schlechte Idee, denn (mechanische) Taster prellen. Der einzige
sinnvolle Grund, einen mechanischen Bedienungstaster an einen
Interrupt-Pin anzuschließen, ist das Aufwecken des MCs aus dem
"Tiefschlaf" (z.B. Power-down" beim AVR). Ansonsten fragt man Taster
zyklisch ab (Timer-Interrupt), such mal in der Codesammlung nach
"bulletproof" und in der Artikelsammlung nach "entprellung".
> von VCC auf GND ziehen und es soll die Zeit gestoppt werden, wie
> lange ich auf den Taster drücke.
Das geht auch sehr gut im Timer-Interrupt.
> Die Uhr soll aber ständig laufen und
> nicht nur wenn der Taster gedrückt wird. Geht das denn so einfach?
Ja, wenn man es richtig macht.
> Wenn
> ein Interrupt durch den Taster ausgeführt wird, kann dann noch der
> Timerinterrupt für die Uhr ausgelöst werden wenn der Taster z.B. für 4
> sek gedrückt wird??? Der Mikrocontroller befindet sich doch dann in der
> Interruptroutine für den externen Interrupt, oder?!
Deshalb hält man die Interrupt-Routinen so kurz wie möglich und fragt
Taster im Timer-Interrupt ab. Wie das im Einzelfall am günstigsten geht,
wird durch die anderen Aufgaben des Programms bestimmt. Z.B. von der
Ansteuerung eines LCDs oder dem Multiplexen einer mehrstelligen
Siebensegmentanzeige oder was auch immer sonst noch gemacht werden muss.
>
> Gruß
> Mike
...