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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.