Sida 3 av 3
Re: Min C kod fungerar inte (AVR)
Postat: 31 oktober 2010, 20:00:15
av stekern
Jag håller med dig, jag har inte heller haft något behov av att något skulle vara exakt 2 s.
För en 2 s delay skulle jag också använda en timer.
Jag ville bara påpeka att det kan finnas användningsområden där delay-rutiner är befogade
(i mitt fall var det just 1-wire, men ett custom-protokoll där implementatören av någon anledning dragit timingen så snävt att jag var tvungen att ha precision ner till 1 klockcykel vid ~4MHz).
Re: Min C kod fungerar inte (AVR)
Postat: 31 oktober 2010, 20:07:15
av jesse
ISR använder man väl mest om det handlar om återkommande händelser. Interrupten kommer ju alltid att triggas vid en exakt tidpunkt, även om själva rutinen utförs något senare beroende på en massa push på stacken, wake up tid och annat.
delay tycker jag kan fungera bra i många sammanhang när man inte måste använda all processorkraft till annat. Som vid initiering av en display och man ska vänta 10 ms före nästa instruktion. Vem vill programmera en timer bara för det?
Re: Min C kod fungerar inte (AVR)
Postat: 31 oktober 2010, 21:09:58
av monstrum
Visst, handlar det om att man måste ha en delay på exakt 26 klockcykler så har man inte så mycket val än att använda en liten loop, men då är det ju inte en delayms-funktion man vill använda ändå.
För hyfsat tajta timingar så är det väl ok att stalla programmet "på stället" under en kort tid, men jag hävdar fortfarande att det "rätta" sättet är att använda en timer. Dvs, sätta timern, polla den i en loop och gå vidare ifall den har gått ner till 0. Då skiter sig inte hela funktionen p.g.a. t.ex. att man råkade ändra optimeringsinställningarna på kompilatorn, eller byta tool-chain ett år senare osv.