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

Re: Problem gelöst Kategorie: Programmierung (von AndrĂ© H. - 26.03.2007 0:04)
Als Antwort auf Problem gelöst von Franke - 15.03.2007 7:59
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo Franke,

> Wie mache ich das ??
> wĂĽrde gern einen Timer programmieren, komme aber nicht zurecht.
>
> Die Funktion läuft seit gestern, nachdem ich in einem anderen
> THread was geändert habe !!!

Ein benutzerdefinierter Timer ist etwas ganz einfaches.
Die erst Frage wäre, wie genau dieser sein mu�.
Wenn als Genauigkeit 1sec. reicht, kann man folgendes verwenden:

int timer, endwert; // max. 32767 Sekunden, fĂĽr mehr => long
byte second;
...
// --- Initialisierung
timer=0;
second=system.second();
endwert=300;//300Sekunden=5Min.
// ---
do
{
 if second!=system.second()
  {
   timer=timer+1;
   second=system.second();
  }
} while timer<endwert
...


Wenn es genauer sein muĂ?, kann man auch den System-Timer verwenden.
Allerdings mu� man hier beachten, da� dieser einen Tick zu schnell läuft.
(Eine Minute sind 60096ms)

long timer, warten;
warten=300480; //= 300.000 echte ms, bzw. 5 Min.
timer=system.timer();
wait system.timer()-timer>=warten;
...

Man kann das in eine Funktion packen, um den 0,16% zu schnell laufenden Timer
zu kompensieren.
Die RTC der CC2 läuft allerdings genau, basiert aber auf der ms-Timer-Interrupt-Routine.
Das OS korrigiert die CC2-Zeit alle 5 Sekunden um 8ms, damit diese exakt läuft.


MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: