RTC Timer für 8 Ereignisse

tbegle
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Beiträge: 150
Dabei seit: 01 / 2018
Betreff:

RTC Timer für 8 Ereignisse

 · 
Gepostet: 09.12.2020 - 14:13 Uhr  ·  #1
Hallo User,

kann mir jemand auf die Sprünge helfen?

Ich möchte von 8 Geräten zu unterschiedlichen Zeiten „innerhalb einer Minute!“ die Zeit messen die ich dann für jedes Gerät aufaddiere

Herausforderung:
wie deklariere ich die 8 Timer? dass jeder Timer (1-8)für sich arbeitet (startet und stoppt)
-------------------------------------------------------------------------------------------

import SysTick,SerPort,ADCPort,TWIMaster,RTclock,;
from RTclock import RTCtimer,Random,float;
define
ProcClock = 16000000; // Hertz
SysTick = 10,Timer0; // msec}
…...
…...
// RTCtimer = [1..8],cannels,iData; // Cannels; Fehler ??????
RTclock = iData, DateTime; // DateTime
RTCsource = SysTick; //
RTCtimer = 4; ?????
--------------------------------------------------------------------------------------------------------------
procedure RTC_start(chan:byte); // (1-8)
begin
Disableints;
RTCsetSecond(0);//RTCsetminute(0); // Timer (1-8) auf 0 ?????
Enableints;
end;
// --------------------------------------------------------------
procedure RTC_stop(chan:byte); // (1-8)
begin
Disableints;
st:=RTCgetSecond;//RTCgetMinute; // Timer (1-8) st = xx Sek
Enableints;
end;

Grüsse
Toni
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: RTC Timer für 8 Ereignisse

 · 
Gepostet: 09.12.2020 - 16:46 Uhr  ·  #2
Hallo Toni,

brauchst du die Uhrzeit oder nur diese 60 Sekunden? Ich hatte mal ne Anwendung, bei der ich nur eine Zeitdifferenz benötigte. Dazu habe ich an einen Eingang einen 1Hz Oszillator angeschlossen und mit einem Interrupt darauf eine LongWord hoch gezählt. Dann gabs noch je Teilnehmer eine Start- und Stop-Variable als LongWord. Start: Start-Var:=TimerVar und Stop: Stop-Var:=TimerVar. Zeit:=StopVar - StartVar. Fertig.

LongWord reicht für ca. 136 Jahre ;)

Gruss
Harry
tbegle
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Beiträge: 150
Dabei seit: 01 / 2018
Betreff:

Re: RTC Timer für 8 Ereignisse

 · 
Gepostet: 09.12.2020 - 17:05 Uhr  ·  #3
Hallo Harry,
136 Jahre dürften gerade reichen!- hihi
Die Motherboard's sind fertig, da möchte ich nicht mehr herum basteln
ich brauche nur Sekunden (RTCgetSecond(1-8) aber für Motor 1 - 8 jeweils einzeln um bei erreichen eines max Wert Pumpen einzuschalten

Gruss
Toni
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: RTC Timer für 8 Ereignisse

 · 
Gepostet: 09.12.2020 - 17:49 Uhr  ·  #4
Hallo Toni,

genau ist aber anderst ;).

Ich verstehe das so: Du rufst Procedure RTCtimer_Load (chan : byte; seconds : word[longword]); auf, mit chan 0...7 und einer Zeit seconds. Ist die Zeit abgelaufen, wird die CallBack-Procedure RTCtimer(chan : byte); mit dem gleichen Kanal chan aufgerufen.
Wenn du keinen festen Timer willst, mußt du die Zeit messen.Du kannst meine o.g. Methode verwenden, läßt die Zeitvariable aber über die CallBack Procedure RTCtickSecond; aufaddieren.

Harry

PS: Dieses Unterforum dient zum bereit stellen von Codeschnipseln, Programmen, Treibern, ..... nicht dazu, Fragen zu stellen ;)
tbegle
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 65
Beiträge: 150
Dabei seit: 01 / 2018
Betreff:

Re: RTC Timer für 8 Ereignisse

 · 
Gepostet: 10.12.2020 - 09:56 Uhr  ·  #5
Hallo Harry,
jetzt bin ich armer Tor genau so schlau wie zuvor, ich dachte es wäre einfacher zu lösen als longword... vielleicht habe ich mich auch
völlig missverständlich ausgedrückt und unerlaubt um eine Problemlösung in diesem Portal gebeten.
Bei EINEM Timer (Bad Beleuchtung) count down -> 120" -> 0" funktioniert's
Gruss
Toni

Ich werde nun auch diese 8 Timer in meine Do loop Schleife einbauen wo bereits 40 zuverlässig(perfekt) laufen (sehr zu empfehlen, simpel, und Speicher sparend)
Do
mdelay(10);
Befehlsregister(30 Befehle - if serstat = true ......) IF BF 'xx' then ....'
Time Out Proc -> if M1-M8_Flag = true then inc(x01-x08): '.......... ~10ms Auflösung
HW-Watchdog
loop
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: RTC Timer für 8 Ereignisse

 · 
Gepostet: 10.12.2020 - 10:16 Uhr  ·  #6
Zitat geschrieben von tbegle

... unerlaubt um eine Problemlösung in diesem Portal gebeten.

Das ist ein Blödsinn, natürlich kannst du hier im Forum fragen, aber vielleicht besser da: index.php?f=1

Aber wieso willst du plötzlich 8 Timer auf diese Art realisieren, wenn du schon 40 anderst laufen hast?

Was ich immer noch nicht verstanden habe: Sind deine Timer immer gleich lang?

Gruss
Harry
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 14 · Cache Hits: 14   108   122 · Page-Gen-Time: 0.032072s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI