Forum: Mikrocontroller und Digitale Elektronik CAN Botschaften zyklisch senden. Mit Timer?


von Martin (Gast)


Lesenswert?

Hallo,
in meinem Steuergerät gibt es verschiedene CAN Botschaften, die in 
unterschiedlichem Zyklus gesendet werden.
Dabei varriert der Zyklus zwischen 100ms und 250ms.
Wie setze ich das im C-Code um?
Benötige ich für jede Botschaft bzw. Gruppe mit gleicher Zykluseit einen 
eigenen Timer?
Gibt es eine elegantere Lösung?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Berechne das kleinste gemeinsame Vielfache der Sende-Frequenzen, lasse 
einen Timer mit dieser Frequenz laufen und zähle pro Nachricht eine 
Variable hoch, um die Frequenz zu teilen.

von Zeitbasis (Gast)


Lesenswert?

Ein System ohne Zeitbasis wirst Du sicher nicht bauen, oder?
Also nutze sie. So wie Du die Aufgabe verbal beschreiben kannst, so 
kannst Du das Zeitverhanlten auch in dem Programm umsetzen.

von Dieter M. (Gast)


Lesenswert?

Eine weitere Möglichkeit:
Mit einem timer einen Interrupt von 1ms erzeugen.
Für jede CAN message eine Variable als Counter einrichten, die im 
Interrupt hochgezählt wird. Dazu noch jeweils die Zykluszeit definieren.
Nach Erreichen der gewünschten Zykluszeit die Message senden und die 
Variable wieder zurück setzen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Dieter M. schrieb:
> Mit einem timer einen Interrupt von 1ms erzeugen.

Ist identisch zu meinem Vorschlag wenn man annimmt dass das kleinste 
gemeinsame Vielfache der Frequenzen 1kHz ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.