Chyba při kompilaci *vyřešeno*

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
hafca
Příspěvky: 4722
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

Chyba při kompilaci *vyřešeno*

#1 Příspěvek od hafca »

Chtěl jsem si postavit detektor blesků s AS3935. Při kompilaci mi to hází chybu
uvod_logo.c:3:9: error: variable 'uvod_logo' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
uint8_t uvod_logo[] PROGMEM={

Může mi někdo zkušenější poradit, jak to opravit?
Naposledy upravil(a) hafca dne 22 črc 2019, 14:22, celkem upraveno 1 x.
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
Hill
Administrátor
Příspěvky: 21231
Registrován: 10 zář 2004, 02:00
Bydliště: Jičín, Český ráj

#2 Příspěvek od Hill »

Zkus deklarovat "uvod_logo" jako konstantu a vlož do ní adresu v paměti, kde je logo.
Uživatelský avatar
hafca
Příspěvky: 4722
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#3 Příspěvek od hafca »

Zkoušel jsem to, ale Arduino moc neumím a výsledek tomu odpovídá. Víc chyb než bez úprav. :(
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#4 Příspěvek od frpr666 »

Podívej se do dokumentace k avr-libc.
Tam je příklad jak nakládat s makrem PROGMEM.
avr-libc-user-manual.pdf
Podle mě je možné, že ti v hranatých závorkách chybí velikost pole. Kompilátor neví, jakou velikost flash paměti alokovat.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#5 Příspěvek od lesana87 »

Tak překladač hlásí, co je tam za chybu, má to být definované jako konstanta, chybí tam const.

Kód: Vybrat vše

const uint8_t uvod_logo[] PROGMEM = { 
Uživatelský avatar
hafca
Příspěvky: 4722
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#6 Příspěvek od hafca »

To bylo první, co jsem zkusil. Ale jak jsem psal, jen víc chyb.
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
lesana87
Příspěvky: 4393
Registrován: 20 zář 2014, 00:00

#7 Příspěvek od lesana87 »

Ta chyba, co jsi sem vložil, je chybějící const, pokud ti to pak hlásí další chyby (třeba že do té konstanty zapisuješ), tak tam máš asi další chyby, ale ty se z té jedné chybové hlášky nevyčtou. Takže buď sem vložíš celý program nebo budeš muset počkat na někoho s věšteckou koulí.
Uživatelský avatar
hafca
Příspěvky: 4722
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#8 Příspěvek od hafca »

Kouli netřeba, programy jsou tady:
http://hafca.h.sweb.cz/Storm/Lightning_Detector.ino
a
http://hafca.h.sweb.cz/Storm/uvod_logo.c

Edit
Asi těch chyb tam bude víc. Zkusil jsem vyřadit načítání toho loga a objevily se další chyby. Nebo to dělám blbě. :(
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#9 Příspěvek od frpr666 »

Nezbývá než program rozdělit na menší části a hledat, kde je chyba.
Nevím jak teď, ale dříve se vyžadovalo pro přidávání vlastního .h souboru do projektu arduina použít direktiva:
extern "C"
{}
Aby kompilátor nějak věděl, že v onom modulu je kód napsaný v C. Viz. URL:
https://stackoverflow.com/questions/288 ... in-arduino
Uživatelský avatar
hafca
Příspěvky: 4722
Registrován: 27 črc 2004, 00:00
Bydliště: 25km na západ od Prahy

#10 Příspěvek od hafca »

Po velkém bádání a hledání se vše v dobré obrátilo. Chyba byla v jedné knihovně, konkrétně v Nokia-5110-LCD. Zkusil jsem jinou verzi a kompilace proběhla bez chyb.
Děkuji všem za pomoc hafca
Kdyby Edison nevynalezl elektřinu, do teď se díváme na televizi při svíčkách.
Uživatelský avatar
Celeron
Příspěvky: 20508
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#11 Příspěvek od Celeron »

Jo, v těch Hajduríno knihovnách je docela bordel, taky jsem se s tím setkal. Stejnej název, dokonce stejná dýlka a podobný chyby co ti to psalo. Asi nesouhlas definic.
Jirka

Proč mi nemůže všechno chodit hned ?!!
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“