_wait_ms

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

_wait_ms

#1 Příspěvek od jirkasi »

Zdravím nově jsem se začal zajímat o atmely, zkoušel jsem v avr studio 5 vytvořit jednoduchý program a když potřebuji pauzu tak jsem použil funkci
_wait_ms a udělalo to výsledný hex soubor přes 10 kb, což by se do atmega8 nevešlo, tedy jsem použil normálně for a prázdný příkaz což funguje, ale je to takové divoké a těžko říct jestli se vůbec dá na to časování nějak spolehnout, nevíte jaká jiná funkce by byla lepší?
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#2 Příspěvek od AB1 »

Kde je v Avr Studiu funkce _wait_ms() ?
Avrstudio je jenom programovací prostředí.
Nás zajímá použitý překladač. (Avr-gcc?)

Velikost souboru .hex neříká nic o velikosti kódu.
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#3 Příspěvek od jirkasi »

jasně, je to v knihovně delay.h
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#4 Příspěvek od AB1 »

V Avr-gcc je sice knihovna "delay.h", ale neobsahuje funkci _wait_ms().
Takže nevím...
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#5 Příspěvek od jirkasi »

odkazuje se to na knihovnu util/delay.h
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#6 Příspěvek od AB1 »

Bývá zvykem napsat: používám Avrstudio a Winavr.
Ani v knihovně util/delay.h není funkce _wait_ms().
Pleteš si ji asi s funkcí _delay_ms().

Pokud je to tak:
Funce _delay_ms() vyžaduje aby:
1. Optimalizace nebyla O0

2. Argument musí být konstanta (ne proměnná)
_delay_ms(100); //dobře

uint8_t doba=100;
_delay_ms(doba); //špatně

while(doba--)
_delay_ms(1); //dobře
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#7 Příspěvek od jirkasi »

dík, ale ve AVR Studiu se optimalizace nezadává, nebo jsem to tedy nenašel
Uživatelský avatar
divous
Příspěvky: 164
Registrován: 08 říj 2010, 00:00
Bydliště: ValMez

#8 Příspěvek od divous »

Zadává, stačí pořádně prohledat "Options...".
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#9 Příspěvek od jirkasi »

Dík našel jsem to, ale nefunguje to stejně, je tam pořád velikost hex souboru při použití 2 _delay_ms s konstantní hodnotou cca 10 kb. Asi už je to avr studio optimalizované pro ty novější mikrokontroléry co mají větší paměť. To nevadí snad někde seženu starší verze
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#10 Příspěvek od Andrea »

10kb HEX = 1,25kB HEX a to může být třeba 600B BIN :wink:
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#11 Příspěvek od jirkasi »

ne je to přesně 8810 znaků tedy bajtů
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#12 Příspěvek od Andrea »

Tak to převeď do binu, pak se dá mluvit o skutečné velikosti.
Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#13 Příspěvek od jirkasi »

to se dělá jak?
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#14 Příspěvek od Andrea »

Uživatelský avatar
jirkasi
Příspěvky: 49
Registrován: 27 dub 2008, 00:00

#15 Příspěvek od jirkasi »

dík, já se s tím nějak popasuju
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“