Forum: Mikrocontroller und Digitale Elektronik BASCOM: Interrupt während waitms-Befehl


von marc (Gast)


Lesenswert?

Guten Morgen,

ich habe eine Uhr mit einem 2313 und einem 8MHz Quarz gebaut.
Der Timer läuft quasi nach einem Minute immer über und führt die Befehle 
in der Int-Routine aus, welche natürlich kürzer als eine Sekunde sind.

Nun eine Verständnisfrage, auch wenn waitms verpönt ist:
Wenn sind ein waitms 5000 Befehl (nur fürs Verständnis!) innerhalb des 
Codes befindet, führt der Timer trotzdem den Interrupt jede Sunde aus 
und somit die Befehle aus der Interruptroutine?? Oder wird das durch das 
waitms unterbunden???

Danke schon mal

marc

von Oliver (Gast)


Lesenswert?

Ein Interruptroutine wird immer ausgeführt, ausser, der Prozessor führt 
gerade eine andere Interruptroutine aus. DAnn wird die zweite ISR erst 
nach Ende der ertsen ausgeführt. Ob dein waitms (BASCOM?) intern in 
einer ISR läuft, musst du selber rausfinden. Das ist zwar sehr 
unwahrscheinlich, aber ...

Oliver

von Peter D. (peda)


Lesenswert?

marc wrote:

> Nun eine Verständnisfrage, auch wenn waitms verpönt ist:
> Wenn sind ein waitms 5000 Befehl (nur fürs Verständnis!) innerhalb des
> Codes befindet, führt der Timer trotzdem den Interrupt jede Sunde aus
> und somit die Befehle aus der Interruptroutine?? Oder wird das durch das
> waitms unterbunden???

Ich sach mal, das muß in der Bascom-Hilfe/Doku stehen.

Beim AVR-GCC wird Delay mit Zählschleifen gemacht, d.h. alle Interrupts 
werden ausgeführt und das Delay verlängert sich um diese 
Ausführungszeit.
Ein Delay wird daher immer nur dann benutzt, wenn ein minimales Timing 
einzuhalten ist.


Ein "waitms 5000" ist natürlich der Tod jeglicher Benutzerführung, kein 
Mensch ist bereit, immer 5s lang auf ne Taste zu drücken.
Außer in wenigen Spezialfällen ist daher ein "waitms 5000" vollkommen 
sinnfrei.
Waitms sollte generell sehr sparsam und überlegt verwendet werden, es 
vernichtet ja wertvolle CPU-Zeit.


Peter

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
Noch kein Account? Hier anmelden.