Timer unter Bascom

Gast #583707
Lesenswert?

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
Gast #583721
Lesenswert?

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.
#583756
Lesenswert?

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.

...
Gast #583797
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren