AVR: Delay Time stimmt nicht

Gast #3033869
Lesenswert?

Hallo,

kleines Problem.

Ich programmiere grade einen Atmega1284P mit dem AVR-Studio in C.

Das Programm selber läuft zwar, aber die Delay-Zeiten sind laut Stoppuhr 
genau 10x so lang, wie sie sein sollten.

Die Taktfrequenz des Atmega1284P beträgt 20MHz und der Oszillator läuft 
auch mit 20MHz (extra nachgemessen).

Verwendet wird util/delay.h

In der entsprechenden .h-Datei, die zum Programm gehört, ist die 
Taktfrequenz korrekt angegeben.

Unter Configuration Options im AVR-Studio ist auch die korrekte 
Quarzfrequenz eingetragen.

Der Funktionsaufruf _delay_ms(1000); bewirkt beispielsweise eine 
Verzögerung von  10  Sekunden .

Woran könnte es liegen?
#3033899
Lesenswert?

Versuch mal folgendes:

_delay_ms(200)
_delay_ms(200)
_delay_ms(200)
_delay_ms(200)
_delay_ms(200)

Falls das funktioniert hast Du eine _delay_ms Implementierung, die keine 
1000 als Argument verträgt. Sollte dann aber auch im Header-File stehen.

Edit: Das #define F_CPU brauchst Du nicht in main.c, sondern stellst es 
in den AVRStudio Projektsettings ein.
Gast #3033918
Lesenswert?

Pete K. schrieb:
> Versuch mal folgendes:
>
> _delay_ms(200)
> _delay_ms(200)
> _delay_ms(200)
> _delay_ms(200)
> _delay_ms(200)
>
> Falls das funktioniert hast Du eine _delay_ms Implementierung, die keine
> 1000 als Argument verträgt. Sollte dann aber auch im Header-File stehen.

Funktioniert leider nicht, die Wartezeit bleibt bei 10 Sekunden.

1s Wartezeit gibts mit _delay_ms(100)


Pete K. schrieb:
> Edit: Das #define F_CPU brauchst Du nicht in main.c, sondern stellst es
> in den AVRStudio Projektsettings ein.

Das #define F_CPU steht in main.h
Kann dann also weg!?


Ansonsten verwende ich noch die lcd.h
Hat das Problem möglicherweise damit zu tun???
Gast #3034039
Lesenswert?

>und Stefan P. hast Du auch überlesen ;-)

Jepp, ich gebe es zu!


Noch mal  ganz  herzlichen  Dank  an die folgenden drei Poster!!!

Stefan P. schrieb:
> Sind es vielleicht 8 statt 10 Sekunden? Dann ist noch die DIV8-Fuse
> gesetzt.

Werner P. schrieb:
> Fuses: CKDIV/8 aktiviert?

Hubert G. schrieb:
> Mit deiner Fuse-Einstellung hast du CKDIV8 immer noch aktiv.


Ihnen und allen anderen wünsche ich außerdem eine schöne jecke 
Karnevalszeit!!!

X Y !!!

(X = Kölle oder jeder andere Ort)

(Y = Alaaf, Helau oder jeder andere zum Ort X passende Karnevalsruf)

;O)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren