Erklärung zu Benutzung von Timer und DO/Loop

Gast #97681
Lesenswert?

Hi.

Das ist vielleicht ne sehr dumme Frage, aber fragen kostet nichts. ;)

Ich habe vor in einem Bascom code einen Timer (zählz millisekunden)
zu verwenden.
Wer kann mir aber erklären wie das mit dem Code innerhalb der DO/LOOP
Anweisung zusammenspielt?

Also wenn ich eine Timerfunktion habe, wird darin ja immer gezählt.
Z.B. in millisekunden. Nun will ich, wenn bestimmte Zeit erreicht ist
z.B. eine LED ansteuern.
Wie ist aber der zeitliche Ablauf in der DO/Loop ?
Wie oft geht das Programm die DO/LOOP durch in der gleichen zeit die
Timerfunktion?

Aus meiner erfahrung her mit anderen Programmiersprachen (keine hohen),
wird der code komplett von oben nach unten gelesen.
Also würde nach meiner Annahme der code in DO/LOOP immer zu ungenauen,
nicht bestimmbaren zeiten ausgeführt wobei ich den code in der Timer-
funktion zeitlich genau steuern kann.

Muss ich also alles was zeitkrittisch ist in der Timer-Funktion
ausführen lassen?

(Mit Referenz zu
http://www.mikrocontroller.net/forum/read-1-91014.html#96346   und
http://www.ravers-home.de/pk1/ )
Gast #97682
Lesenswert?

hi,

der timer tickt los, nachdem er deklariert und enabled wurde.
wenn du jetzt noch interrupts enablest wird der timer0-int bei jedem
überlauf ausgeführt:

'config timer0 = timer, prescale = 1'
'enable timer0'
der timer läuft bei 1MHz clock ca. 3920x/sec über,
d.h. er erreicht 255, dann zählt er wieder bei 0 los.

der prescaler teilt die sysclock (z.B. 1MHz) /prescale.
'config timer0 = timer, prescale = 8'
der timer kreigt jetzt nur noch 125000 pulse/sec., läuft also ca.
490x/sec. über.

'x=timer0' würde jetzt völlig wirre ergebnisse zwischen 0 und 255
bringen, da ja x immer zum zeitpunkt der zuweisung beladen wird.
nur als zufallsgenerator zu gebrauchen.

'enable interrupts : enable int0 : on timer0 timer0_isr
jetzt wird der code in der timer0_isr routine ca. 490x/sec. ausgeführt.

hier könnte ein zähler stehen
'incr zahl'
oder eine variable geändert werden
'led = 1'
oder eine led geschaltet werden
'toggle pind.1'

das mal als anregung, fröhliches probieren noch, harry

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