Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 TIMER - Abfrage 20ms????? Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Olaf - 13.06.2010 13:35)
Olaf nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro
Hallo,

bei meiner Timerabfrage habe ich ein seltsames Verhalten festgestellt!
Da ich bei der OM-Makro keine Pausen gebrauchen kann, habe ich mir eine Timerabfrage programmiert!
Hier mal ein par kurze Ausschnitte vom Programm:


'...........
#Hauptprogramm

'.................

FC_Ampelumschaltung

'....................

goto Hauptprogramm

'..........

' ---------------------------------------------------------------------------
' Ampelumchaltung: A13 auf Rot und A24 auf GrĂĽn
' ---------------------------------------------------------------------------

FUNC FC_Ampelumschaltung

'....................

' Ampel13 und Ampel24 gelber Blinktakt
if Ampel_W13 and Ampel_W24 then
   Ampel_W13OK=off
   Ampel_W24OK=off
   if not Ampel_W13GE then           ' gelb EIN
      A13_ROT=off                    'Bitmuster der Digitalports setzen
      A13_GELB=on
      A13_GRUEN=off
      A24_ROT=off
      A24_GELB=on
      A24_GRUEN=off
      PortB_Digital                  'Digitalports EIN/AUS

      if TimerZV>0 then
         FC_Timer
         if TimerZV==0 then
            Ampel_W13GE=on
         end if
         return
      else
         TimerZV=250
         return
      end if

   else
      A13_ROT=off                    'Bitmuster der Digitalports setzen
      A13_GELB=off
      A13_GRUEN=off
      A24_ROT=off
      A24_GELB=off
      A24_GRUEN=off
      PortB_Digital                  'Digitalports EIN/AUS

      if TimerZV>0 then
         FC_Timer
         if TimerZV==0 then
            Ampel_W13GE=off
         end if
         return
      else
         TimerZV=250
         return
      end if

    end if
end if

return
end FUNC

' ---------------------------------------------------------------------------
' Timerauswertung
' ---------------------------------------------------------------------------
FUNC FC_Timer

if Timer<>TimerV and TimerZV<>0 then
   TimerZ=TimerZ+1
   TimerV=Timer
   if TimerZ>TimerZV then
      TimerZ=0
      TimerZV=0
   end if
else
   TimerZ=0
   TimerZV=0
end if

return
end FUNC


Laut Doku zählt der Timer ca. alle 20ms um 1 weiter.
Ich frage den Timer mit einen Vergleicher (TimerV) auf Änderung des Wertes des Timers ab und Zähle dann den Zähler (TimerZ) um eins rauf, wird dann der Zähler grösser als mein Vergleicher (TimerZV) dann ist die Zeit abgelaufen!
Nun tritt aber folgendes Phänomen auf:
Wenn ich den TimerZV mit 25 vorbelege sollte doch eigentlich ein Blinktakt von ca. 500ms AN/AUS rauskommen, denn 20ms * 25 = 500ms!
Bei mir hingegen kommt da ein Takt von ca. alle 100ms AN/AUS raus !???
Wenn ich, wie im Beispielcode oben, 250 eingebe habe ich meinen Takt von 500ms!
Zählt der Timer der Makro, laut Berechnung und Messung, alle 4ms um 1 weiter???

Gruss

Olaf

 Antwort schreiben

Bisherige Antworten:

Re: TIMER - Abfrage 20ms????? (von Dietmar - 13.06.2010 19:11)
    Re: TIMER - Abfrage 20ms????? (von Olaf - 15.06.2010 18:07)
Re: TIMER - Abfrage 20ms????? (von ogoianer - 13.06.2010 17:02)