Archiv verlassen und diese Seite im Standarddesign anzeigen : was brauche ich da, Timer oder Interrupt?
Hallo! ich wollte mal etwas üben, und weiss nicht wie ich anfangen soll.
ich habe 2 verschidene programme. jetzt möchte ich es so hinkrigen, dass zuerst ein Programm, dann das andere Abläuft. wie mache ich das?
erstes programm:
$regfile = "m8.def"
$crystal = 1000000
config lcd ................... 'lcd konfigurieren
cls 'lcd löschen
do
locate 1 , 1
lcd "hello"
wait 5
locate 2 , 1
lcd "world"
wait 5
loop
und das zweite programm:
$regfile = "m8.def"
$crystal = 1000000
config lcd ................... 'lcd konfigurieren
cls 'lcd löschen
do
locate 1 , 1
lcd "zeile1"
wait 5
locate 2 , 1
lcd "zeile2"
wait 5
loop
das sind z.B. die Programme.
jetzt möchte ich das so machen, dass das 1. Programm 30 sek. abläuft, und dann das zweite 30 sek. und dann von vorne.
was brauche ich dafür? Timer oder Interrupt?
Danke
na ja, nicht so ein Sinnvolles beispiel.
besser ist das hier:
programm1
$regfile = "m16def.dat"
$crystal = 4000000
config lcd ............
Enable Interrupts
Config Clock = Soft
Time$ = "02:20:00"
Cls
Do
Locate 1 , 1
Lcd Time$
Loop
End
und das 2. programm:
$regfile = "m16.def"
$crystal = 4000000
config lcd ............
cls
do
locate 1 , 1
lcd "hello"
wait 5
locate 2 , 1
lcd "world"
wait 5
loop
wenn ich möchte dass LCD immer Zeit und "hello world" abwechselnd zeigt.
babei soll ja die Zeit weiterlaufen, in der Zeit wo Hello World angezeigt wird, und nicht wieder von vorne anfangen.
Wie kann man sowas realisieren?
milkbubi
22.11.2007, 20:02
Läuft die Uhr nicht über den Timer automatisch weiter? Hab ich zumindest aus der Hilfe so entnommen.
Und dann einfach zusammenführen die Programme:
$regfile = "m16def.dat"
$crystal = 4000000
config lcd ............
Enable Interrupts
Config Clock = Soft
Time$ = "02:20:00"
Cls
Do
Locate 1 , 1
Lcd Time$
wait ???
cls
locate 1 , 1
lcd "hello"
wait 5
locate 2 , 1
lcd "world"
wait 5
loop
end
so in der Richtung. Wird aber mit Sicherheit nicht besonders genau
mfg milkbubi
ich dachte den Befehl "wait" darf man nicht verenden!
dadurch wird ja der komplette mikrocontroller "eingefroren".
da kann die seit nicht mehr weiter laufen, oder?
ich glaube ich habe was verpasst.
milkbubi
22.11.2007, 20:13
Es stimmt schon, dass der eigentliche Prozesser in der Zwischenzeit nichts mehr machen kann aber so wie ich das verstehe, läuft die Uhr weiter.
Dazu ein Zitat aus der Bascom Hilfe:
"The CONFIG CLOCK statement will use the TIMER0 or TIMER2 in async mode to create a 1 second interrupt. In this interrupt routine the _Sec, _Min and _Hour variables are updated."
Da die Timer unabhängig vom rest laufen sollte das also funktionieren.
mfg milkbubi
wait darf man schon verwenden.
Nur je nach Programm ist das u.U. kontraproduktiv.
Du verwendest in Deinem Programm ja auch wait.
Der Controller "friert" nicht komplett ein. Die Timer (und deine Uhr) laufen dabei weiter.
$regfile = "m16def.dat"
$crystal = 1000000
Config Timer1 = Timer, Prescale = 64
Config Pind.0 = Output
Config Pind.1 = Output
Led Alias Portd.0
Luefter Alias Portd.1
On Timer1 Timer_irq
Const Timervorgabe = 1 ' WAS MUSS HEIR REIN?
'Hier werden die Timer aktiviert
Enable Timer1
Enable Interrupts
Do
Toggle Led 'Hier ist mein Hauptprogramm
Loop
Timer_irq:
Timer1 = Timervorgabe 'hier ist jetzt der Lüfter
Set Luefter
Wait 20
Reset Luefter
Return
milkbubi
22.11.2007, 20:52
Hast du eigentlich eine Idee was du machen willst. Denn das hat alles so überhaupt keinen Zusammenhang. Wenn du einfach nur ein bisschen was lernen willst ist das sicher löblich aber dann wär ein Blick ins RN_Wissen vermutlich die beste Möglichkeit, da du dort wahrscheinlich die meisten deiner Fragen schon beantwortet findest.
mfg milkbubi
wenn es euch nichts ausmacht, könnt ihr mir hier vielleicht helfen.
http://www.mikrocontroller.net/topic/84449
danke
Torsten_G
23.11.2007, 07:17
Hi,
Wait-Befehle werden vom Bascom-Simulator ignoriert.
Blöd, aber ist leider so...
Verarbeite mal die Tipps der Kollegen und entsorge den Wait-Befehl.
Vor allem das Hochzählen in der ISR ist für Dich interessant!
Gruß
Torsten
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.