Hallo,
ich habe meinen ganzen Code mal angehangen, bzw. so weit wie ich jetzt
bin.
Der Code kurz erklärt:
Zeile 9 - 13 prüfen ob ein bestimmter Wert im EEPROM steht.. Falls
nicht, werden "Defaultwerte" in den EEPROM geschrieben.
Kann man das irgendwie ändern das ich nicht immer den Wert in der
eeprom.h ändern muss sondern das nach einem "Flash" immer die
Defaultwerte neu geschrieben werden?
Zeile 22 - 30
Je nachdem welcher "Boardmodus" eingestellt wird, soll das Board I/O
oder PWM Board sein.
I/O
Das Board selber verfügt über mehrere Modes (onoff.* files)
1 | volatile int onoffmodes[NUM_OF_ONOFF_MODES][NUM_OF_CHANS];
|
Ist der I/O Modus eingestellt kann man die "Modes" durchschalten.
In der loop wird dann nur verglichen und ggf. geschaltet...
1 | if (IOs[i] != isIOs[i]) {
|
2 | onoff(i);
|
3 | }
|
Das ganze hatte ich vorher nur mit einem Mode am laufen, das lief
problemlos. Da die Daten auch "gespeichert" werden können sollen greife
ich auf den EEPROM zurück. Das lief bis 2 Modes problemlos.
Nun mekkert der compilier mit
1 | ...........
|
2 | ...........
|
3 | eeprom.c:520:52: warning: large integer implicitly truncated to unsigned type [-Woverflow]
|
4 | uint8_t eeDataPWMCH31_7 EEMEM = 521;
|
5 | ^
|
6 | eeprom.c:521:52: warning: large integer implicitly truncated to unsigned type [-Woverflow]
|
7 | uint8_t eeDataPWMCH32_7 EEMEM = 522;
|
Wie bekomme ich mehr EEPROM Adressen als 255 zugewiesen? Also das ganze
funktioniert ja so.. nur eben.. ja.. sobald ich mehr EEPROM Adressen
will, geht es nicht mehr...
Was kann ich dagegen machen?
Nun soll das Board noch Software PWM haben....
Also wenn der Boardmode auf 2 (PWM) ist soll er.. ebenso wie bei IO die
PWM Werte vergleichen und 32CH Software PWM machen...
Wie stelle ich das am besten an?
Der ATMega128 wird mit einem 16Mhz Quarz betrieben.