Die Programmiersprache ist C und wird unter Windows mit WinAVR im
AVRStudio geschrieben.
1 | int main(void)
|
2 | {
|
3 | initialisierungen();
|
4 | LEDan();
|
5 |
|
6 | while(1)
|
7 | {
|
8 | if ( )
|
9 | ....
|
10 | if ( )
|
11 | ....
|
12 | if ( )
|
13 | ....
|
14 | if ( )
|
15 | ....
|
16 | if ( )
|
17 | ....
|
18 | if ( )
|
19 | ....
|
20 | }
|
21 | }
|
Die if-Bedingungen werden z.B. vom Timer, vom Taster und vom Interrupt
auf wahr gesetzt und führen dann einige Funktionen aus. Das seltsame
daran ist jetzt, dass wenn die Menge des Codes in der while-Schleife zu
viel wird, der Atmega8 nicht immer zuverlässig startet. Wenn er einmal
startet, funktioniert auch alles. Dass er garnicht erst startet sehe ich
daran, dass die LED dann auch nicht leuchtet.
Wenn ich jetzt eine dtostrf() auskommentiere, dann sinkt der
Speicherbedarf von 96,6% auf 82,4% und schon startet der Atmega jedes
mal. Genauso kann ich aber auch beliebige andere Funktionen
auskommentieren und es läuft wieder. Der Compiler optimiert mit -0s.
Die Compilerausgabe:
Program: 7914 bytes (96.6 % Full)
(.text + .data + .bootloader)
Data: 146 bytes (14.3% Full)
(.data + .bss + .noinit)