Stránka 1 z 1

Problém s kompilací programu nf DDS generátoru na ATmega16

Napsal: 07 říj 2022, 14:24
od Milda134
Mám doma tento oscilátor:
https://chinese-electronics-products-te ... ested.html
, který je funkční, ale na stránce níže je nová verze firmware
https://github.com/dev26th/avr_dds_20
při otevření souboru makefile ve winawr a pokusu o kompilaci vypíše hlášku viz obrázek níže. ve všech verzích winawr je to stejné a v AVR Studiu taktéž
starší verze fw šly bez problému, ale tady fakt nevím, soubor jsem také připojil.
Dnes bych to už neřešil, ale když už to leží doma . . .
Díky za případnou pomoc.

Napsal: 07 říj 2022, 15:08
od nixdorf
asi by som skúsil novší WinAVR, ten čo máš rozbehaný je z 2007 so starým gcc. Alebo skús upraviť v makefile riadok 125 zo -std=gnu99 na -std=c99 , i keď to je taký mačkopes trocha (gnu99 má znamenať c99 s gnu extensions) a napriek tomu, že je ten gnu99 svič na commandline, tak naň hádže fekál: "using gnu89".

//edit: podľa tohto changelogu majú byť inline funkcie podporované až od 4.3, vo WinAVR ti beží GCC 4.2.2, takže jednoznačne stiahni novšiu verziu, táto verzia kompilátora z 2007 ešte nemá plne implementovaný C štandard 1999.
Možno bude stačiť vymeniť iba samotný gcc toolchain, ale to radšej asi stiahni celý winavr v celku.
Novšia verzia avr-gcc by mala tiež adresovať tie neexistujúce definicie infinity

Napsal: 07 říj 2022, 15:42
od Milda134
Omlouvám se ta chyba byla kvůli tomu, že jsem zkoušel starší verze a tak to přehrálo novější

ve verzi
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.

stále zůstává ta chybová hláška o kterou mi jde především

Compiling C: main.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o
main.c: In function 'pulse_updateDisplay':
main.c:1082: error: 'INFINITY' undeclared (first use in this function)
main.c:1082: error: (Each undeclared identifier is reported only once
main.c:1082: error: for each function it appears in.)
main.c: In function 'pulse_onLeft':
main.c:1096: error: 'INFINITY' undeclared (first use in this function)
main.c: In function 'pulse_onRight':
main.c:1115: error: 'INFINITY' undeclared (first use in this function)
main.c: In function 'pulse_onStart':
main.c:1138: error: 'INFINITY' undeclared (first use in this function)
make.exe: *** [main.o] Error 1

hledal jsem, zkoušel a nic jsem nenašel, jestli je tam nějaké kurvítko tak jsem ho nenašel

Napsal: 07 říj 2022, 15:44
od nixdorf
Okej, to zmizli už problémy s inline. Hoď navrch do main.c, napríklad na riadok 25 za includy, nasledovné

Kód: Vybrat vše

#include <math.h>
alebo, ak to nepomôže,

Kód: Vybrat vše

#ifndef INFINITY
#define INFINITY (1.0/0.0)
#endif
a malo by to zbuildiť.

Znova, schopný C99 kompilátor takéto makro musí poznať.

Napsal: 07 říj 2022, 16:10
od ZdenekHQ
nixdorf píše:...a malo by to zbuildiť.
To je krásný slovo... :D

Napsal: 07 říj 2022, 16:10
od Milda134
Teď to v pohodě prošlo, jenom to nevleze do ATmega16, bin má 121,2%
oba ty zápisy fungovaly téměř stejně. Rozdíl byl v desetinkách procenta zaplnění paměti

Napsal: 07 říj 2022, 16:14
od nixdorf
Jo, profesná deformácia. Stále viac tolerujem slová ako "thready" či "interfejs" než ako "vlákna", "nite" či nebodaj dokonca "medzitvárie", dybagovanie ako "odchrobákovanie", shell ako "škrupina" a tak ďalej podobným štýlom.
Výnimka 0x01DEADBEEF - neplatný popisovač vlákna. A babo raď, čo sa tým myslelo, keďže je to v slovenčine mišmaš a technik si musí invalid thread handle domyslieť.
No a ešte tí, ktorí puritánsky volajú po Jazyku Symbolických Adries, pretože asembler je predsa nástroj, ktorý to tam prevedie...

@Milda, čas zaviesť kód do nejakej namapovanej ROM :)

Napsal: 07 říj 2022, 16:20
od Milda134
Nevleze to tam, má to 121% 8O 8O

Napsal: 07 říj 2022, 16:21
od nixdorf
Do separátne namapovanej pamäti, nie v tej čo má interne atmega, tzn. doplniť obvod o flash/EEPROM prípadne zaviesť nejaký bootloader ak treba.
No alebo sa vrátiť k starej verzii. Alebo zosekať veci, ktoré ti v tejto netreba

Napsal: 07 říj 2022, 16:26
od Milda134
Tam žádná jiná paměť není, to je hotový vercajk viz odkaz výše, zkusím pohledat, co z toho zrušit, díky moc za radu.

Napsal: 09 říj 2022, 19:17
od Habesan
A což takhle odpájet ATmegu16 a připájet tam ATmegu32 ???

Napsal: 09 říj 2022, 19:28
od Milda134
Už jsem se na to díval, těch kusů je víc, tak to řeším