Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Timer zur Portansteuerung Kategorie: Programmierung (von Volker - 11.03.2012 21:12)
Als Antwort auf Timer zur Portansteuerung von Volker - 11.03.2012 13:13

> Hallo!
> Ich suche nach einer Möglichkeit einen Port für 500ms bzw. 1200ms auf High
> und dann wieder auf Low zu schalten (ich benötige einen Puls).
> Bisher mache ich das im Moment mit einem "sleep" Befehl, nicht die sauberste Lösung.
> Jemand einen Tip, wie ich das mit einem Timer machen könnte? Event. mit dem system.timer?
> Danke!
> Volker

Hallo!
Ich habe im Forum eine Lösung gefunden, aber da bräuchte ich noch einen Tip:


byte zaehler;
long timer;
zaehler=0;
timer=math.labs(system.timer());  

loop
 {
  if  math.labs(system.timer()) -timer >=500  
   {
    timer= math.labs(system.timer());
    zaehler=zaehler+1;
    ... hier alle 500ms etwas tun
   }

  if zaehler==2
   {
    ... hier alle 1000ms etwas tun
   }

  if zaehler==3
   {
   zaehler=0;
    ... hier alle 1500ms etwas tun
   }
 }


Damit sollte es passen, ich kann einen Digitalpin setzen und diesen entweder nach 500ms, 1000ms
oder 1500ms zurücksetzen.
Allerdings wie stelle ich sicher, dass der Digitalpin auch ca. 500ms aktiv ist? Wenn ich z.B. den
Digitalpin bei Wert system.timer=400 setze, würde er ja bereits bei system.timer>=500 wieder
zurückgesetzt, sprich der Pin ist nur ca. 100ms auf high. Ich könnte natürlich vor dem Setzen des
Pins ein timer= math.labs(system.timer()) machen. Damit wäre der Timer neu initialisert und es
würden mindestens 500ms vergehen. Aber das würde ja das Timing eines anderen Pins, der auf 1500ms
wartet, stören.
Vielleicht doch drei Schleifen, die jede einen andere Zeit (500ms, 1000ms und 1500ms) abdecken?

Danke!

Volker



    Antwort schreiben


Antworten:

Re: Timer zur Portansteuerung (von nitraM - 13.03.2012 7:58)