RTV forum PL | NewsGroups PL

Brak opóźnienia 60 sekund z _delay_ms() przy F_CPU = 2457600 w GCC

problem z double w GCC

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Brak opóźnienia 60 sekund z _delay_ms() przy F_CPU = 2457600 w GCC

Jacek M.
Guest

Thu Mar 16, 2006 1:49 pm   



Probuje uzyc funkcji opoznienia _delay_ms() i mimo, ze mam w pliku linie
#include <avr/delay.h>
nie dziala. wywoluje ja w taki sposob:
_delay_ms((double)60000);
Powinno byc opoznienie rzedu jednej minuty a niestety nie ma zadnego.
W pliku makefile jest ustawiony wlasciwy kwarc:
F_CPU = 2457600
Mozecie powiedziec mi dlaczego tak jest? Z gory dzieki
Pozdrawiam

Jacek M.

Jacek M.
Guest

Thu Mar 16, 2006 2:36 pm   



Quote:
Probuje uzyc funkcji opoznienia _delay_ms() i mimo, ze mam w pliku linie
#include <avr/delay.h
nie dziala. wywoluje ja w taki sposob:


Przepraszam za pomylke. Oczywiscie naglowek powinien brzmiec: "problem z
delay_ms"
Przepraszam i pozdrawiam

Jacek M.

Jacek M.
Guest

Thu Mar 16, 2006 2:57 pm   



Quote:
#include <avr/delay.h

W moim podręczniku do avr-libc napisali, że należy włączyć <util/delay.h

Ale ja nie widze takiej sciezki. Mozesz wyjasnic gdzie to znalazles?

Pozdrawiam

Jacek M.

Jacek M.
Guest

Thu Mar 16, 2006 4:04 pm   



Quote:
#include <avr/delay.h

W moim podręczniku do avr-libc napisali, że należy włączyć <util/delay.h

Masz nowsze libc, ale avr/delay.h ciągle zapewnia kompatybilność:
#warning "This file has been moved to <util/delay.h>."
#include <util/delay.h

Do autora wątku: spróbuj dodać "UL" do stałej: F_CPU = 2457600UL.
Przeniósłbym to też "na wszelki wypadek" z pliku makefile do kodu
źródłowego jako #define.

BTW, dokumentacja avr-libc sporo zyskała moim zdaniem na przejrzystości
wraz ze zmianą z 1.2 na 1.4.
Ta nowa dokumentacja rzeczywiscie wydaje sie bardziej przejrzysta, niestety

ja posiadam starsza wersje konpilatora i na razie musze zadowolic sie
dotychczasowa "ksiazka". Co ciekawsze jak uzupelnilem linie z deklaracja
czestotliwosci kwarcu literami UL kompilator zaczal mi krzyczec, ze on nie
zgadza sie na taki sufix:
"C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h:139:19:
invalid suffix "ULUL" on integer constant".
A sugerowana sciezka wystepuje prawdopodobnie (nie sprawdzalem) w nowszych
instalacjach WinAVR. Moze jakies inne pomysly?
Pozdrawiam

Jacek M.

Artur M. Piwko
Guest

Fri Mar 17, 2006 12:15 am   



In the darkest hour on Thu, 16 Mar 2006 13:49:19 +0100,
Jacek M. <tymkonto@poczta.onet.pl> screamed:
Quote:
Probuje uzyc funkcji opoznienia _delay_ms() i mimo, ze mam w pliku linie
#include <avr/delay.h
nie dziala. wywoluje ja w taki sposob:
_delay_ms((double)60000);
Powinno byc opoznienie rzedu jednej minuty a niestety nie ma zadnego.
W pliku makefile jest ustawiony wlasciwy kwarc:
F_CPU = 2457600
Mozecie powiedziec mi dlaczego tak jest? Z gory dzieki
Pozdrawiam


Za duża wartość argumentu. Podziel na mniejsze i wywołaj w pętli.
Dokładny zakres znajdziesz w samym pliku nagłówkowym delay.h.

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:227B ]
[ 23:14:34 user up 10917 days, 11:09, 1 user, load average: 0.06, 0.06, 0.06 ]

Press [ESC] to detonate or any other key to explode.

elektroda NewsGroups Forum Index - Elektronika Polska - Brak opóźnienia 60 sekund z _delay_ms() przy F_CPU = 2457600 w GCC

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map