Moin,
der Forumteilnehmer "schittl" hat mich auf eine Warning beim übersetzen meiner Lib aufmerksam gemacht, auf die ich auch auf anhieb keine Lösung habe, außer jeden einzelnen Wert auf unsigned long (uint32_t) zu casten.
Folgendes erzeugt eine Warning:
#define init_time (1000*1000*1000)
const PROGMEM uint32_t test = (uint32_t)(init_time);
warning: integer overflow in expression [-Woverflow]
Folgendes funktioniert:
#define init_time (1000000000)
const PROGMEM uint32_t test = (uint32_t)(init_time);
Normalerweise setzt der Compiler Konstanten doch ein bzw. löst die Multiplikation und setzt anstelle dieser eine Konstante ein (Code Optimierung)
Was läuft hier schief oder wird der Arduinocode nicht weiter optimiert?