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