Erklärung zu Benutzung von Timer und DO/Loop

Gast #97681
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
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.