Pokud vložím funkci _delay do smyčky for tak program zamrzne

Zdravím,

vyskytl se mi problém při řešení jednoho problému. Snažím se zobrazit na LCD řetezec a následně jej pozdržet na LCD cca 2s. Při běžném vykonávání programu mimo smyčku for s tím nejsou problémy, ale jakmile uvedu fci delay v smyčce for (viz. přiloha) dojde k zamrznutí a defacto se nic neděje.
Text, jenž by se měl následně zobrazit se nezobrazí.

Zkoušel jsem již vše v moji možnostech, zvláštností bylo že po odstranění fce. delay vse fungovalo sice se skutečnosti že se texty jenž se mají zobrazovat překrývali.

Začínám být zoufalý prosím poraďte.
Díky.

:arrow_right: administrator: přejmenováno z "problémy s fci. _delay"
prog.c (6.67 KB)

C-čko pre avr sa este len ucim, ale pri zbežnom kuknuti na kod mi tam chýba knižnica util/delay.h a podľa nej aj nastavenie frekvencie procesora v tvare:

#define F_CPU 1000000UL // 1 MHz //#define F_CPU 14.7456E6 #include <util/delay.h>.

Ale neviem, či toto nenačítava nejaká ina knižnica…Ako píšem, zatial sa to len učím…

Určite keď sa na to kukne piityy, tak chybu najde hneď :slight_smile:

Knihovnu util/delay.h mám v projektu zahrnutou, jak říkám funkci delay využívám nespočetně v programu, ale jakmile ji uvedu v for(;:wink: dojde k zamrznutí.

Každopádně díky :slight_smile: .

Zkus tam dat jenom _delay_ms(1000); Mam pocit, ze jsem s tim mel taky potize…

Uživatelské .h soubory by měly být uvedeny s uvozovkami, ale to není problém (určuje to prioritu při hledání).
Jak píše stanleyv, <util/delay.h> tam není. Je jedno, jesli ji máš někde v projektu jinde, musí být v každém souboru, kde se z ní funkce používá (nevidím tam uživatelský .h, který by to mohl importovat).
Co se týká F_CPU, to může být definováno v nastavení projektu. Pokud je to tam, tak vpořádku.

Ohledně maximální hodnoty zpoždění: _delay_ms() by měla umět až 6.5s, ovšem za skoušku se snížením času nic nedáš.

Nějaké varování nebo něco není?

Chyby a varování žádná.

Zaraží mě skutečnost, že jsem s tím problémy při běhu programu nikdy neměl až poté co jsem umístil delay do hlavní smyčky.

Ohledně absence deklarace knihovny jsem to nepovažoval za nutné, když při rozkliknutí všech importovaných knihoven v avr studiu, se v seznamu krom jiných iom16,…, objevuje i delay.h

Štábní kulturu zápisu deklarací knihoven zlepším :wink: :slight_smile: .

Díky.

Neměl jsem čas se problémem zabývat až dnes započal s modifikacema. Každopádně mám již problém vyřesen stačilo pouze mnou definované knihovny (SPI.H a LCD.H ve kterém byla vložena knihovna delay.h s FCU) do úvozovek :slight_smile: . Díky všem za podnětné odpovědi :slight_smile: .

Mám ještě jednu otázku zda je možné obecně zařízení se 4tlačítky a zobrazování na LCD a ovládání dvou portů řídit skrze MCU bez nutnosti multitaskingu?

Všechno lze.
Tomu postupu se říká “hledání kompromisu”. :smiling_imp:

Bohužel problémy s fcí.delay přetrvávají byl jsem v takové euforii že by to všechno mohlo fungovat a zapomněl jsem na další chod programu :frowning: :cry: .

Zkoušel jsem snížit čas jak dragonsoul=>nepomohlo. Jak jsem psal výše knihovnu delay.h i s FCU mám deklarovánu v knihovně LCD.H .
Nula chyb a varování stále přetrvává.

Vlož sem celý projekt, podívám se na to.

Diky, v příloze je vše co mám v projektu.
ProgAtmega16.zip (32.1 KB)

To asi není, jinak bys to nepřeložil. Chybí “SPI.H” a “LCD.H” s jejich zdrojáky (*.c). Ty mají být ve složce projektu aby v tom nebyl bordel.

Vše napravím až dorazím z práce.
Díky :slight_smile: .

Napravuji chybu a posílám i zbývající knihovny :slight_smile: .
SPI.H (847 Bytes)
LCD.H (2.46 KB)

neviem ako to mas zapojene ale videl som tam pouzitie PortuC … tak pozor na JTAG standartne je zapnuty a moze robit problem…

Diky za info, s tímhle jsem měl taky kdysi problémy.
Teď mám toto ošetřeno v konfigurační paměti prostředí XP dodávané k
programátoru Presto.
JTAG mám vypnut. :slight_smile:

To je nádhera. Co dělá kód v .h souborech?
Přemejšlim, jesli se to pokoušet opravit, nebo smazat a jít na večeři… :unamused:

edit: Tak jsem tomu trochu času dal. Doplnil jsem chybějící soubory a opravil strukturu. V lcd.c jsou dvě chyby (zakomentovaný a s komentářem).
Samozřejmě s funkčností moc nepočítám, ale už je to při překladu bez chyb a varování. Svůj příští projekt na tomto prosím nezakládej.
Ohledně stavby projektu z více souborů, vzor tu: AVR Studio - Projekt s více soubory - jak includovat - #4 by piityy
Další info např. na builderu.
ProgAtmega16.zip (36.9 KB)

Hlavne ze to ide co tam potom…niektore prekladace to zhltnu …a potom narazi na taky co to nezhltne …a prepise to do normalu…moj pripad…:smiley:
Zaciatky boli tazke :smiley: