lillahuset: Timern i timeout() startar om varje gång den löpt ut och nästa gång returnerar den 0?
Ett vanligt fall är ju annars, åtminstone för mej, är att när timern väl har löpt ut ska den förbli "true", även hur lång tid som sedan går, typ mer än 49 dagar.
Vad händer om getTicks() slår runt?
Nerräkningstimer kontra system-timer, tankar
- Jan Almqvist
- Inlägg: 1581
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Nerräkningstimer kontra system-timer, tankar
Förväntas man få fördröjningar som är längre än ett par timmar, så är det nog bättre att välja andra alternativ, till exempel en RTC.
Använder själv systimer för kortare tidräkning och RTC för längre.
Använder själv systimer för kortare tidräkning och RTC för längre.
Re: Nerräkningstimer kontra system-timer, tankar
Jan: lillahusets kod implementerar i princip den algoritm jag föreslog, och ja, hans är auto-restart.
Det krav du har att den ska vara "expired" hur lång tid som helst efter gör att denna algoritm inte funkar, men i de flesta (alla jag sett iaf:P) fall är det ett krav man inte behöver, eller om man verkligen behöver det går det hantera utanför timern t.ex. genom att sätta en separat flagga första gången den går ut och bara kolla timeout om flaggan är falskt.
Programmering är ju alltid en fråga om avvägningar och att inte göra en lösning som löser nått man inte behöver. Om det man vill ha, vilket oftast är fallet, är en signal när en timer gått ut _för första gången_, med automatisk restart eller inte, så är modulo 2^n-aritmetik (dvs unsigned) det absolut enklaste att få rätt och det blir också mest effektiv genererad kod.
Det krav du har att den ska vara "expired" hur lång tid som helst efter gör att denna algoritm inte funkar, men i de flesta (alla jag sett iaf:P) fall är det ett krav man inte behöver, eller om man verkligen behöver det går det hantera utanför timern t.ex. genom att sätta en separat flagga första gången den går ut och bara kolla timeout om flaggan är falskt.
Programmering är ju alltid en fråga om avvägningar och att inte göra en lösning som löser nått man inte behöver. Om det man vill ha, vilket oftast är fallet, är en signal när en timer gått ut _för första gången_, med automatisk restart eller inte, så är modulo 2^n-aritmetik (dvs unsigned) det absolut enklaste att få rätt och det blir också mest effektiv genererad kod.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Nerräkningstimer kontra system-timer, tankar
thebolt: Vi är helt överens. Vad det nu är värt?
Vad är det för kryptiskt med taggarna? Kan du föreslå en kommentarsrad som skulle tillföra något av värde?kodar-holger skrev:Ingår det i det gamla sättet att programmera att man inte skriver en enda kommentarsrad förutom några kryptiska taggar till doxygen så är jag mer emot det sättet än att använda delay()
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Nerräkningstimer kontra system-timer, tankar
Jag tycker inte heller det behövs några extra kommentarer. Headern förklarar ju det man behöver veta. Men det kanske är naivt av mig att tro att de som har skäl att läsa koden kan grundläggande syntax?
Och visst, en delay behöver ju inte vara en loop. T.ex. en delay(timeout, funktion_eller_lambda) som köar argumentet tills tiden gått ut skulle fungera bättre. Men hur många av dem ser man i arudino-API:t?
Och visst, en delay behöver ju inte vara en loop. T.ex. en delay(timeout, funktion_eller_lambda) som köar argumentet tills tiden gått ut skulle fungera bättre. Men hur många av dem ser man i arudino-API:t?