Arduino, jeden kod, rozdielne velkosti po preklade
Napísané: 14 Apr 2020, 14:08
Zdravim,
Skusam ozbehat meteostanicu, kde meriam teplot, vlhkost, smer vetra, rychlost vetra, tlak a zrazky. Kniznica je pouzita iba pre cidlo vlhkosti)teploty a tlaku. To funguje vporiadku.
Pri merani rychlosti vetra vyuzivam meranie casu medzi 4 impulzami z rychlomeru (2 impulzy na otacku).
Meria to celkom presne (kontrolovane podla otacok vrtacky, ktore su +- zname, mam mat 350 ot/min zmeral som 327 ot/min).
Z uvedeneho usudzujem, ze principialne je kod v poriadku.
Stalo sa mi vsak, ze po urcitom case sa vysledna rychlost zasekla na jednej hodnote a uz sa nemenila. Po restare to zas chvilu islo a potom znovu sa zaseklo. Kedze ariadenie je namontovane vonku, kod som preniesol do NTB, aj vsetky kniznice, skompiloval a nahraj do arduina (doska s ESP32)
Zarazila ma vsak velkost kodu skompiovaneho na PC (cca 219kB) a v NTB(200kB). Rozdiel je 20kB co je 10%. Pre istotu som nakopiroval kniznice z PC do NTB, pouzil rovnaku verziu IDE a vysledny kod mal rozdielnu velkost.
Netusite cim by to mohlo byt? (Na PC an na NTB bezi rovnaky OS - Mint )
najvacsia zahada je, ze ked som stanicu preniesol kvoli mechanickej oprave do dielne, zmenil som v programe iba dobu bliknutia LED (skratil som dobu svitu z 300ms na 100ms, cize zmena z delay(300) na delay(100) a nahral do ESPcka tak kod mal tych cca 219kB a zamrznutie sa prejavilo znovu!
Nechapem v com je problem, co je o tolko ine v prelozenom kode, ze je ina velkost a zrejme aj funkcnost/nefunkcnost.
Este mam v plane uplne rovnaky kod nahrat raz z PC a raz z NTB pre overenie, ze kod z PC zamrza...
Poznamka:
oprava kodu spocivala iba v deklarovani premennych co sa menia v obsluhe prerusenia, ako volatile.
Napadlo ma ci kompilator v PC ignoruje nastavenie volatile pre premenne a kompilator v NTB to respektuje.
Este poznamka, zamrzne iba meranie rychlosti, zvysok funguje dalej.
Budem vdacny za kazdu radu
Skusam ozbehat meteostanicu, kde meriam teplot, vlhkost, smer vetra, rychlost vetra, tlak a zrazky. Kniznica je pouzita iba pre cidlo vlhkosti)teploty a tlaku. To funguje vporiadku.
Pri merani rychlosti vetra vyuzivam meranie casu medzi 4 impulzami z rychlomeru (2 impulzy na otacku).
Meria to celkom presne (kontrolovane podla otacok vrtacky, ktore su +- zname, mam mat 350 ot/min zmeral som 327 ot/min).
Z uvedeneho usudzujem, ze principialne je kod v poriadku.
Stalo sa mi vsak, ze po urcitom case sa vysledna rychlost zasekla na jednej hodnote a uz sa nemenila. Po restare to zas chvilu islo a potom znovu sa zaseklo. Kedze ariadenie je namontovane vonku, kod som preniesol do NTB, aj vsetky kniznice, skompiloval a nahraj do arduina (doska s ESP32)
Zarazila ma vsak velkost kodu skompiovaneho na PC (cca 219kB) a v NTB(200kB). Rozdiel je 20kB co je 10%. Pre istotu som nakopiroval kniznice z PC do NTB, pouzil rovnaku verziu IDE a vysledny kod mal rozdielnu velkost.
Netusite cim by to mohlo byt? (Na PC an na NTB bezi rovnaky OS - Mint )
najvacsia zahada je, ze ked som stanicu preniesol kvoli mechanickej oprave do dielne, zmenil som v programe iba dobu bliknutia LED (skratil som dobu svitu z 300ms na 100ms, cize zmena z delay(300) na delay(100) a nahral do ESPcka tak kod mal tych cca 219kB a zamrznutie sa prejavilo znovu!
Nechapem v com je problem, co je o tolko ine v prelozenom kode, ze je ina velkost a zrejme aj funkcnost/nefunkcnost.
Este mam v plane uplne rovnaky kod nahrat raz z PC a raz z NTB pre overenie, ze kod z PC zamrza...
Poznamka:
oprava kodu spocivala iba v deklarovani premennych co sa menia v obsluhe prerusenia, ako volatile.
Napadlo ma ci kompilator v PC ignoruje nastavenie volatile pre premenne a kompilator v NTB to respektuje.
Este poznamka, zamrzne iba meranie rychlosti, zvysok funguje dalej.
Budem vdacny za kazdu radu