-
-
Neuer Benutzer
Öfters hier
Basisfrage zum IRQs_pre_sencond
Hallo Leute, ich bräuchte mal eure Hilfe.
Ich habe folgenden Thread gelessen. http://www.rn-wissen.de/index.php/Ha...LED_blinken%29
Da steht z.B.
#ifndef F_CPU
#define F_CPU 1000000
#endif
// So viele IRQs werden jede Sekunde ausgelöst.
// Für optimale Genauigkeit muss
// IRQS_PER_SECOND ein Teiler von F_CPU sein
// und IRQS_PER_SECOND ein Vielfaches von 100.
// Ausserdem muss gelten F_CPU / IRQS_PER_SECOND <= 65536
#define IRQS_PER_SECOND 2000 /* 500 µs */
Ich verstehe es nicht, warum F_CPU/IRQS_PER_SECOND<=65536 sein muss? F_CPU ist 1M Takt/Sekunde und IRQ wird 2000 mal/Sekunde aufgerufen. D.h. pro ISR entspricht 500 Takten oder? Kann IRQS_PER_SECOND nicht 1 oder 2 sein?
-
Erfahrener Benutzer
Robotik Einstein
genaugenommen ist <=65536 sogar falsch
65535 is die maximal mögliche positive zahl die mit einem unsigned integer gespeiert werden kann, 0-65535 um mal den zahlenbereich zu nennen ...
in dem beispiel, wäre die aussage immer falsch, es sei denn du schreibst eine 0, denn wenn die zahl überläuft, schlägt sie zum minimum um, in dem falle eben 0
normalerweise müsste es auch
1000000l heissen mit einem kleinen "L" um zu sagen dass der wert ein long wert ist
der timer auf den das beispiel zugeschnitten ist, scheint ein 16bit timer zu sein, bei dem eben diese integergrenze zuschlägt ...
du definierst hier quasi wieviele timerüberläufe pro sekunde du hast und kannst dich danach richten wieviel sekunden UND im wievielten teil einer sekunde du dich gerade befindest
und ausrechnen kannst du das, wenn du die variable, die im timer inkrementiert wird, durch deine konstante teilst ... und den Rest auf millisekunden umrechnest
sofern du den Timer auch richtig eingestellt hast
-
Neuer Benutzer
Öfters hier
Hallo Ceos,
vielen Danke für deine schnelle Antwort. Es war sehr hilfreich. Ich habe jetzt kapiert. Danke nochmal!
mfg
tim
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen