Gast
#238965
Hallo Welche Header Datei muss ich einbindn damit ich z.B. delay als Pause nutzen kann? ich möchte eine Zeitverzögerung haben. Oder muss man die wie in ASM selbst herstellen? Gruss Frank
|
Anzeige
|
Pausen in c
Gast
#238965
Hallo Welche Header Datei muss ich einbindn damit ich z.B. delay als Pause nutzen kann? ich möchte eine Zeitverzögerung haben. Oder muss man die wie in ASM selbst herstellen? Gruss Frank
Gast
#238966
Gast
#238967
Hallo der Link geht leider nicht! Frank
Gast
#238968
Wenn du WinAVR nutzt, dann hast du die avr-libc Doku auf deiner Festplatte.
Gast
#238969
Hmm, ist wohl ein Bug in der Forumssoftware. Du mußt das <u> und das </u> in der URL-Zeile des Browsers entfernen. Oder geh einfach nach http://www.nongnu.org/avr-libc/user-manual/ und klicke dich durch.
Gast
#238970
Hallo Danke für den Link. Ist mir jetzt schon klarer. Aber wie kann man da Pausen von > 1sec. kriegen??? Frank
Gast
#238971
Hallo In meinen Augen ist der Delay-Befehl ebenso zu sehen wie der goto-Befehl: Finger weg ! Damit wird der Controller nur zum nichtstun verdonnert ! Je komplexer das Programm wird, desto wichtiger wird es, Wartezeiten für andere Aufgaben zu nutzen, um die Effizienz zu erhöhen. Statt einem Delay sollte man unbedingt auf Timer zurückgreifen. Ich selbst habe mir ein Zeitscheibensystem gebastelt, in der ich mittels eines Timers verschiedene "Zeitscheiben" (10ms, 20ms, 40ms...) verwende. Dieses System dient bei mir als Betriebssystem des Controllers. Innerhalb der einzelnen Zeitscheiben werden die Funktionsaufrufe eingebaut. Zum Beispiel: Abfrage eines Temperatursensors wird in der 1280 ms - Zeitscheibe aufgerufen. Zeitkritischere Anwendungen werden dann in der 10 ms-Zeitscheibe angestoßen. Damit lassen sich auch wunderbar Wartezeiten realisieren, die die anderen Funktionalitäten nicht zum Stillstand zwingen. Gruß Detlef
Gast
#238972
Mache ich auch so wie Detlef. Die Funktion setzt eine Variable auf die Wartezeit und der Timerinterrupt zählt diese runter. In der Mainloop machst Du die anderen Sachen und testest nebenbei die Variable auf 0 und dann erst gehts weiter. Mit 10ms Interrutpzeit kannst Du mit einem Byte max 2,55s warten. Wenn Du allerdings 16Bit-Zählvariablen nimmst, muß das Testen und Setzen immer unter Interruptverbot erfolgen, da ein 16Bit-Zugriff nicht atomar ist ! Peter
Gast
#238973
Mal eine Frage: Wie macht ihr denn die Pausen bei der I2C-Kommunikation z.B. Auch über Timer?
Gast
#238974
@Thomas, natürlich nicht. Für kurze Zeiten (SW-I2C) sind Delay-Loops durchaus sinnvoll. Aber alles über 1ms ist in meinen Augen CPU-Zeitverschwendung und kann besser genutzt werden. Peter Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|