Hallo, kann ich unter Bascom feststellen, ob ein Timer aktiv ist oder nicht ? Danke !!!
Hallo, >das gute alte LED-Blink Programm. >in die Timer ISR einfach das heißt ja, dass auch zusätzlich ein Interrupt aktiviert sein muss... >ob ein Timer aktiv ist oder nicht ? Ich kenne Bascom nicht, aber eine Möglichkeit wäre das "TCCRx"? (Timerclocksource) Register auszulesen und nachzusehen ob ein Clock aktiviert ist, der deinen Timer zählen lässt. Ob es möglich ist mit Bascom an das Register ranzukommen kann ich allerdings nicht sagen. Evtl Inline-Assembler? Gruß, Christian
Ich wollte, solange der Timer aktiv ist, ganz bestimmte tasten sperren.......
Der Timer ist nach der Aktivierung(Start Timer0) immer aktiv. D.h. nach dem er einen Überlauf hatte fängt er wieder von vorne an. Wenn Du einen Interrupt aktiviert hast kannst den Überlauf nutzen. Sonst kannst Du z.b timer0 als Byte-Variable nutzen if timer0 >= 20 then portb.0 = 0 Dabei ist aber die Abfragerate zu beachten.
Andreas wrote: > Ich wollte, solange der Timer aktiv ist, ganz bestimmte tasten > sperren....... Nunja, es kommt darauf an, was Du unter "Timer" verstehst. Da es auch Leute gibt, die in ihren Programmen die real vorhandene Hardware nutzen und programmieren, anstatt mit Bauklötzern zu spielen, denkt man beim Begriff "Timer" zuerst an einen der Hardware-Timer des Mikrocontrollers. Du meinst aber vermutlich einen programmierten "Timeout", also einen in Software nachgebildeten "Timer", also eine Variable, die (z.B. von einem Hardware-Timer, der immer läuft und einige Dinge im Programm synchronisiert) heruntergezählt wird, solange sie noch nicht 0 ist und bei Erreichen von 0 eine Aktion auslösen kann. Den Zustand eines solchen "Timeouts" kann man "nebenher" abfragen und daraus entscheiden, ob eine bestimmte Handlung (z.B. Tasten abfragen) durchgeführt wird oder nicht. Bei mir hat eigentlich jedes AVR-Programm einen Timer im Hintergrund laufen, in dessen Interrupt einzelne Arbeitsabläufe "synchronisiert" werden. Dies erhöht die Effizienz des Programms, da Warteschleifen (Busy-Waits, Delays) vermieden werden. Anstatt auf der Stelle zu treten und zu warten, kann sich der AVR anderen noch zu erledigenden Dingen widmen, ist halt sowas ähnliches wie Multitasking. Das geht natürlich nur bei hardwarenaher Programmierung, inwieweit sich vorgefertigte Module eines "Baukastens" in diese Phillosophie einbinden lassen, ist mir nicht bekannt. ...
Timer werden doch i.d.R. gestoppt und gestartet. Also einfach vor den Befehl 'Start Timer0' noch ein Flag setzen bzw. bei 'Stop Timer0' das Flag zurücksetzen. Dann das Abfragen der Tasten über dieses Flag steuern. O.
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.