Forum: Compiler & IDEs stk500 - avr-studio - problem delay


von michael schankin (Gast)


Lesenswert?

Hallo Leute,

habe seit kurzem ein stk500 und versuche mich gerade an der
c_programmierung mit avr-studio. Nun taucht mein erstes Problem auf.

Habe ein kleines prog geschrieben mit dem der Controller (Atmega8L)
sekunden zählen soll. Und zwar mit der _delay_ms()-Funktion.
Funktioniert auch wunderbar, solange der Atmega bei 1MHz läuft.
Ändere ich aber die Taktfrequenz über die Fusebits auf 8MHz zählt er zu
schnell. Ist ja auch klar. Habe dann in der delay.h F_CPU auf 8000000
geändert, was allerdings nichts geändert hat, zählt immernoch zu
schnell.
Kann mir jemand erklären wie ich die _delay_ms()-Funktion ändern muss,
damit sie auch bei 8MHz richtig funktioniert?

Hoffe ihr habt mein Pronlem verstanden.

MfG Mich-Beck

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Lass mich raten: dein Delay ist größer als als ca. 32 ms.
Lies dir bitte in der Doku durch, wie groß die maximale
Verzögerung werden kann.

Wenn du eine Sekunde verzögern willst, nimm:

1. am besten einen Timer
2. zur Not folgendes:
1
for (uint8_t i = 0; i < 100; i++)
2
  _delay_ms(10);

10 ms sind für alle derzeit zulässigen AVR-Taktfrequenzen
immer im zulässigen Bereich (der letztlich durch die 16-Bit-
Zahl begrenzt wird, die an _delay_loop_2() übergeben wird).

von michael schankin (Gast)


Lesenswert?

Ich danke wie verrückt, hatte schon bemerkt, dass da ein wert zu groß
wird, konnte mir aber trotzdem nicht helfen. Jetzt hab ich nur das
Problem, dass er bei 1MHz zu langsam zählt. Wahrscheinlich aufgrund der
Durchlaufzeit der for-Schleife. Werd wohl doch mal mit Timern
experimentieren müssen.
Vielen Dank jedenfalls erstmal

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.