- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Basisfrage zum IRQs_pre_sencond

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2008
    Beiträge
    17

    Basisfrage zum IRQs_pre_sencond

    Anzeige

    Praxistest und DIY Projekte
    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?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2008
    Beiträge
    17
    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
  •  

Labornetzteil AliExpress