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:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1082.svg)
error: 'INFINITY' undeclared (first use in this function)
main.c
![:1082:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1082.svg)
error: (Each undeclared identifier is reported only once
main.c
![:1082:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1082.svg)
error: for each function it appears in.)
main.c: In function 'pulse_onLeft':
main.c
![:1096:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1096.svg)
error: 'INFINITY' undeclared (first use in this function)
main.c: In function 'pulse_onRight':
main.c
![:1115:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1115.svg)
error: 'INFINITY' undeclared (first use in this function)
main.c: In function 'pulse_onStart':
main.c
![:1138:](//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1138.svg)
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é
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... ![Very Happy :D](./images/smilies/icon_biggrin.gif)
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
![Smile :)](./images/smilies/icon_smile.gif)
Napsal: 07 říj 2022, 16:20
od Milda134
Nevleze to tam, má to 121%
![Shocked 8O](./images/smilies/icon_eek.gif)
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