Archiv verlassen und diese Seite im Standarddesign anzeigen : F_CPU und _delay_ms - Richtige Werte schein Falsche zu sein
Hi,
ich hab ein Problem mit dem _delay_ms. Es funktioniert - Aber nicht wenn ich F_CPU so setzt wie ich das für richtig halte. Wo ist mein Denkfehler:
Also ich hab den RN-Control 1.4 Mega32 (ist doch AT32mega?!) mit 16MHz.
Makefile Eckdaten: MCU_TARGET = atmega32 und OPTIMIZE = -Os
Wenn ich nun #define F_CPU 1000000UL setzt ist alles soweit okay. Aber eigentlich müsste ich doch F_CPU auf 16000000UL setzen (da = 16MHz), dann ist mein delay aber viel zu langsam.
Was ist da falsch?
btw.: wofür steht das UL???
Vielen Dank
zumgwadrad
27.06.2007, 13:48
Hi,
sind denn deine Fusebits ordentlich gesetzt? Und wieviel hast du in dein delay_ms() in die Klammer geschrieben? das ist beschränkt durchs Zahlenformat und der maximal mögliche Wert muss auch noch durch den Takt in MHz geteilt werdeen!
Musst mal in die Lib selber schauen, steht dann als Kommentar dabei!
Und des UL war irgend so ein Zahlenformat glaub ich!
UL = unsigned long
Grüsse, Stefan
zumgwadrad
27.06.2007, 13:54
Wusst ichs doch! =D>
So also die Fusebits. Hatte die eigentlich nicht verstellt. Nun hab ich mal unter:
http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega323&P=ATmega32&V_LOW=F1&V_HIGH=99&M_LOW_0x0F=0x01&M_LOW_0x40=&M_LOW_0x80=0x80&M_HIGH_0x01=&M_HIGH_0x06=0x00&M_HIGH_0x08=&M_HIGH_0x20=0x00&M_HIGH_0x40=0x00&M_HIGH_0x80=&B_JTAGEN=P&B_SPIEN=P&B_CKSEL3=P&B_CKSEL2=P&B_BOOTSZ1=P&B_CKSEL1=P&B_BOOTSZ0=P
geschaut und gesehen das meine Fusebits nun doch anders sein müssten. Also hab ich die mal anders gesetzt aber dadurch ist nur alles noch langsammer und schlimmer geworden.
Wie müssen dei den richtig, wenn ich den den 16MHz Quatz benutzen will?
Dann doch eher so:
http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega32&P=ATmega32&V_LOW=EE&V_HIGH=99&M_LOW_0x3F=0x2E&M_LOW_0x40=&M_LOW_0x80=0x80&M_HIGH_0x01=&M_HIGH_0x06=0x00&M_HIGH_0x08=&M_HIGH_0x10=&M_HIGH_0x20=0x00&M_HIGH_0x40=&M_HIGH_0x80=&B_JTAGEN=P&B_SPIEN=P&B_SUT0=P&B_BOOTSZ1=P&B_BOOTSZ0=P&B_CKSEL0=P
Als Referenz:
http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html
Mit 16 Mhz kannst du somit
262.14 / 16 = 16,38375 ms max. warten.
(Kannst ja auch zwei delay_ms untereinanderschreiben)
Grüsse, Stefan
Ich glaub jetzt hab ich ein PROBLEM. Hm hab ausversehen falsche Clock eingestellt und nun antwortet das Board nicht mehr.
Und nun? Kaput?
Retten mit dem NE555 z.B., falls du auf external resonator/oscillator gestellt hast. Dazu gibts auch Beiträge im Forum.
vg
Dank hab ich schon gesehen aber n Kumpel hat n Endwicklungskit und der hat mir die schnell wider richtig gesetzt.
Was hab ich daraus gelernt: Nicht an allem rumspielen von dem ich NULL ahnung hab.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.