Raspberry - Timer

Gast #6554070
Lesenswert?
• ▲
▼
Hallo, für eine Anwendung in C benötige ich einen Softwaretimer.
Der Handler "timer_handler" wird allerdings nicht jede 10ms ausgeführt.
Der Timer läuft viel langsamer.
1
void timer_handler (int signum)
2
{
3
   /* do something */     
4
}
5
 
6
void Init(void)
7
{
8
    struct sigaction sa;
9
    struct itimerval timer;
10

11
    /* Installiere timer_handler als Signal Handler fuer SIGVTALRM. */
12
    memset(&sa, 0, sizeof (sa));
13
    sigemptyset(&sa.sa_mask);
14
    sa.sa_handler = &timer_handler;
15
    sigaction(SIGVTALRM, &sa, NULL);
16

17
    /* Timer konfigurieren fuer 10 ms ... */
18
    timer.it_value.tv_sec = 0;
19
    timer.it_value.tv_usec = 10000;
20

21
    /* ... und alle 10 ms danach */
22
    timer.it_interval.tv_sec = 0;
23
    timer.it_interval.tv_usec = 10000;
24

25
    /* Timer starten */
26
    setitimer(ITIMER_VIRTUAL, &timer, NULL);
27
}
#6558123
Lesenswert?
• ▲
▼
Was für ein Scheduler? Muss der Auslöser asynchron sein? Gehen auch 
Threads?

Zu deinem Code: Was du willst ist doch ITIMER_REAL/SIGALRM statt 
ITIMER_VIRTUAL/SIGVTALRM, oder nicht?

Ob der es dann schafft wirklich alle 10ms auszulösen, oder gar jede 1ms, 
und ob du die Signale schnell genug verarbeiten kannst musst du halt 
ausprobieren.

https://linux.die.net/man/2/setitimer

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.