Forum: Mikrocontroller und Digitale Elektronik Blinklicht zu schnell, Externer Quartz oder interner?


von Flo (Gast)


Lesenswert?

Hallo Quartz-Experten...

ich möchte gleich zu meinem Problem kommen, ich habe mit der delay_ms 
Funktion eine schleife aufgebaut wo eine LED im sekundentakt getoggled 
werden soll. Wenn ich meine Fusebits auf den internen osc. setze, so 
kommt das mit der sekunde ganz gut hin, wenn ich allerdings einen 
externen mit 3.6MHz verwende, dann blinkt es um einiges schneller. Ich 
hab einiges über die Optimierung gelesen (steht auf -0s)
Wie bekomm ich die LED mit einem 3.6mhz im Sekundentakt zum blinken?

Besten Dank und schönen Abend
Florian

von Frank L. (hermastersvoice)


Lesenswert?

einfach dem Compiler nen kleinen Hinweis über den benutzten Takt 
zukommen lassen.

bye

Frank

von Flo (Gast)


Lesenswert?

Danke Frank,

meinste du mit dieser Zeile???
#define F_CPU 3686400L
ist drin, aber funktioniert nicht... das verwundert mich ja gerade...

Danke nochmal -.-

Gruss Flori

von nixversteh (Gast)


Lesenswert?

Wenn es um einen möglichst genauen Sekundentakt geht, kann ich 
eigentlich nur folgenden Thread wärmstens empfehlen. 
Beitrag "Die genaue Sekunde / RTC"
Ansonsten wäre etwas mehr Code als "#define F_CPU 3686400L" 
möglicherweise hilfreicher.

von Flo (Gast)


Lesenswert?

Ich habe nicht beachtet, dass die maximale delay_ms in meinem fall ca 
70ms  beträgt... ich hatte vorher angenommen, dass ich mit einer 
schleife von 4 mal 250ms zurechtkomme. nun steht in der delay_ms(50) und 
es fuktioniert mit einer schleife von 200... Danke

von mr.chip (Gast)


Lesenswert?

> nun steht in der delay_ms(50) und
> es fuktioniert mit einer schleife von 200...

Eher nicht :-)

von fubu1000 (Gast)


Lesenswert?

Morgen,

The maximal possible delay is 262.14 ms / F_CPU in MHz.

Also in gut deutsch 71,110026041666666666666666666667 ms sind drin.


Gruss

von fubu1000 (Gast)


Lesenswert?

natürlich maximal gemeint,
also 50ms passen
Gruss

von fubu1000 (Gast)


Lesenswert?

Man iss noch früh,
also benutz den Timer 0/1/2 besser(sofern ATMEGA),
dann kannste währenddessen anderes erledigen.

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.