problem z double w GCC

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.

Reply to
Jacek M.
Loading thread data ...

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

Jacek M.

Reply to
Jacek M.

Dnia Thu, 16 Mar 2006 13:49:19 +0100, Jacek M. napisał(a):

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

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Dnia 16-03-2006 o 14:57:39 Marcin Stanisz snipped-for-privacy@poczta.bzdury.onet.pl> napisał:

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.

Reply to
Ostry

Dnia Thu, 16 Mar 2006 14:57:26 +0100, Jacek M. napisał(a):

avr-libc Reference Manual ver. 1.4.3, 23.01.2006. Pochodzi z najnowszego WinAVR (20060125). U mnie pełna ścieżka jest: C:\WinAVR\avr\include\util\

A tak w ogóle... Czy do obsługi double nie trzeba dodać LDFLAGS += -lm do makefile?

Pozdrawiam Marcin Stanisz

Reply to
Marcin Stanisz

Dnia 16-03-2006 o 16:04:54 Jacek M. snipped-for-privacy@poczta.onet.pl> napisał:

Racja, dla pliku makefile "UL" jest zbędne:

# Processor frequency. # This will define a symbol, F_CPU, in all source code files equal to the # processor frequency. You can then use this symbol in your source code to # calculate timings. Do NOT tack on a 'UL' at the end, this will be done # automatically to create a 32-bit value in your source code. F_CPU = 8000000

Reply to
Ostry

Thu, 16 Mar 2006 13:49:19 +0100, na pl.misc.elektronika, Jacek M. napisał(a):

Przekraczasz zakres :

<man delay.h>

void _delay_ms ( double __ms ) Perform a delay of __ms milliseconds, using _delay_loop_2(). The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz). Maximal possible delay is 262.14 ms / F_CPU in MHz. <<------------ [...] In general, for long delays, the use of hardware timers is much preferrable, as they free the CPU, and allow for concurrent processing of other events while the timer is running. </man>

Reply to
Jurek Szczesiul

Wlasnie! Taka sama odpowiedz przyslal mi emailem Ostry. Postawilem petle i juz mam potrzebne opoznienie. Dzieki wszystkim i pozdrawiam

Jacek M.

Reply to
Jacek M.

In the darkest hour on Thu, 16 Mar 2006 13:49:19 +0100, Jacek M. snipped-for-privacy@poczta.onet.pl> screamed:

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.

Reply to
Artur M. Piwko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.