PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : _delay_ms()???



tholan
30.01.2006, 13:39
Hi,
ich mache gerade meine ersten Schritte mit WinAVR
und 'nem ATMega8.
Ich hänge ein bischen daran, definierte Pausen zu
generieren.
Ich nutze dazu die Funktion " _delay_ms()" aus der
"/avr/delay.h".
Im makefile habe ich bei Frequency
"F_CPU = 3686400" eingetragen.
In meinem Code wird "_delay_ms(100);" zehn mal
durchlaufen. Offensichtlich ist mein "aktives Warten"
allerdings immer zu schnell.
An PB0 - PB3 hängt ein 7-Segment LCD mit 'nem 7447 Decoder.
Die Ziffern werden höchstens 'ne halbe Sekunde angezeigt.
Wenn ich "_delay_ms()" mit 200 belege, dann rasen die Ziffern.
In der "delay.h" steht folgendes zur Funktion "_delay_ms()":
"The maximal possible delay is 262.14 ms / F_CPU in MHz."
Das währen dann nach meiner Berechnung 71 Nanosekunden
bei 3,6864MHz??
Ich werd daraus ehrlich nicht schlau.
Kann mir da jemand 'nen Tip geben?
Danke,
tholan

Cluni
30.01.2006, 13:45
Hallo!

Nein, nicht richtig - es sind dann max. 71ms! Du musst ja durch F_CPU in MHz teilen (also durch 3.6864)! ;)

Gruß, Bernd

tholan
30.01.2006, 14:05
Ups!
Hab vielen Dank für Deine schnelle Antwort.
Wer lesen kann, ist zugegeben im Vorteil ](*,) .
tholan

Cluni
30.01.2006, 14:08
Kann doch jedem passieren - ich hab das zuerst GANZ überlesen und mich gewundert, warum es nicht klappt - bis ich endlich den Hinweis "The maximal possible delay is 262.14 ms / F_CPU in MHz." entdeckt habe... *lol*

Gruß, Bernd