PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Blinker in Bascom mit Timer0



ktmfahrer
04.02.2008, 14:57
Hallo zusammen.
ich will mit bascom einen blinker programmieren der alle 3s einen befehl ausführt. d.h. der microcontroller soll aus dem hauptprogramm rausspringen, den befehl ausführen und wieder ins hauptprog zurück gehen. da timer1 schon besetzt ist habe ich nur noch timer0 zur verfügung.

der microcontroller ist ein atmell mega32, mit 16mhz.

wenn jemand weiß wie man das schnell realisieren kann, bitte antworten.

vielen dank schon mal im voraus.

Feratu
04.02.2008, 21:03
Wie schnell läuft denn dein TImer 1 ?
Also in welcher frequenz kommt der ISR ?
Da es ziemlich unprkaktisch ist 2 Timer zu verwenden und bei dem Timer 0 es rellativ doof ist 3 sec einzustellen würde ich dir vorschlagen einfach einen Wert in deiner ISR von Timer 1 Hochzählen zu lassen und diesen abzufragen
Sobald wert X den Wert Y erreicht hat (etwa 3sec dann)
Springt er in ein Sub (Gosub befehl) macht den Käse und springt zurück
(Return)
Wäre mein VOrschlag ^^

mfg

ktmfahrer
05.02.2008, 09:56
danke für die antwort.
über den timer1 zähle ich takte die ich von einem inkrementgeber bekomme, drum kann ich diesen nicht verwenden.
vielleicht kann jemand ein kurzes prog online stellen mit dem man überhaupt mal den timer0 benutzen kann, da ich totaler anfänger bin und ich es bisher nicht geschafft habe den timer mal in irgendeiner weise zu benutzen, so dass er nach einer bestimmten zeit irgendetwas tut.

mfg

milkbubi
05.02.2008, 10:55
Mit dem 8 Bit Timer kannst du keine 3 sek Abstände generieren
Im folgenden Programm (erstellt mit RNAvr) springt er 100 mal/sek in die ISR. Dort müsstet du dann eine Variable bis 300 zählen lassen und dann deine Aufgabe abarbeiten lassen.



$regfile = "m32def.dat"
$crystal = 16000000

'Hier wird der Timer und der Teiler festgelegt
Config Timer0 = Timer, Prescale = 1024

'Ausgang definieren
Config Pina.0 = Output
'Hier geben wir der Definition einen schöneren Namen
Led Alias Porta.0

'Hier wird das Unterprogramm festgelegt, das
'in dem von ihnen eingestellten Intervall aufgerufen wird
On Timer0 Timer_irq

'Diese Vorgabe wurde berechnet um die genaue Intervallfrequenz zu erreichen
Const Timervorgabe = 100


'Hier werden die Timer aktiviert
Enable Timer0
Enable Interrupts

'Hier ist die Programmhauptschleife
Do
Loop

'Dies ist der Programmteil, der in dem von ihnen gewählten
'Intervall aufgerufen wird
Timer_irq:
Timer0 = Timervorgabe
Toggle Led

Return



mfg milkbubi

ktmfahrer
05.02.2008, 11:15
vielen dank. das programm funktioniert.

mfg

milkbubi
05.02.2008, 11:29
Das freut mich, das Programm RNAvr gibts übrigens im RN-Wissen Bereich bei den Timern ganz unten

ktmfahrer
05.02.2008, 14:27
jetzt hab ich schon wieder ein neues Problem

wenn ich den timer0 als timer verwende und den timer1 als counter,dann zählt der counter alles mögliche nur nicht das was er soll.
kann mir jemand sagen an was das liegen kann?
die rn-wissen seite funktioniert zur zeit leider nicht

milkbubi
05.02.2008, 16:36
Dazu fällt mir jetzt nur ein, dass der counter sich Störsignale einfängt. Ich kenn leider deinen Aufbau nicht aber hast du evtl. nicht ausreichend mit Kondensatoren entstört?
Ansonsten kann ich dir leider auch nicht weiter helfen

mfg milkbubi