-         

Ergebnis 1 bis 10 von 10

Thema: was brauche ich da, Timer oder Interrupt?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82

    was brauche ich da, Timer oder Interrupt?

    Anzeige

    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

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    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?

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    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:

    Code:
    $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

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    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.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    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

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Ort
    München
    Beiträge
    111
    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.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    $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

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    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

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    82
    wenn es euch nichts ausmacht, könnt ihr mir hier vielleicht helfen.
    http://www.mikrocontroller.net/topic/84449
    danke

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •