Hallo,
ich bin von AtmelStudio (Win) auf CodeBlocks und AVR-GCC(Debian9.1)
umgestiegen.
Unter AtmelStudio habe ich in einem Programm folgende Zeile:
1 | ATOMIC_BLOCK(ATOMIC_FORCEON) {sx_kopie_rueckgabewert=sx_rueckgabewert;}
|
Das ganze funktioniert ohne Probleme.
Die gleiche Zeile habe ich jetzt in CodeBlocks eingegeben. Hierbei
erhalte ich folgende Ausgabe:
1 | ||=== Build: Release in 0036_003_v1 (compiler: GNU GCC Compiler for AVR) ===|
|
2 | main.c||In function ‘main’:|
|
3 | main.c|60|error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode|
|
4 | main.c|60|note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code|
|
5 | main.c|51|warning: variable ‘sx_daten’ set but not used [-Wunused-but-set-variable]|
|
6 | main.c|51|warning: variable ‘sx_adresse’ set but not used [-Wunused-but-set-variable]|
|
7 | ||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 1 second(s)) ===|
|
Die Warnungen mit den unbenutzen Variablen kann man erst mal vergessen.
Das Programm ist noch nicht fertig geschrieben. Zeile 60 ist die oben
stehende Zeile mit dem Atomic-Block.
Hier meine while-Schleife in main:
1 | while(1)
|
2 | {
|
3 | //Selectrix-Bus auswerten
|
4 | ATOMIC_BLOCK(ATOMIC_FORCEON) {sx_kopie_rueckgabewert=sx_rueckgabewert;}
|
5 | sx_daten=(uint8_t)sx_kopie_rueckgabewert&255;
|
6 | sx_kopie_rueckgabewert>>=8;
|
7 | sx_adresse=(uint8_t)sx_kopie_rueckgabewert&255;
|
8 |
|
9 |
|
10 | }
|
Muss ich hier in CodeBlocks noch eine Einstellung vornehmen, und wenn
ja, wo finde ich diese?
Ich habe bereits folgendes bei den Compilereinstellungen versucht:
"Have gcc follow the 1999 ISO C language standard [-std=c99]"
Allerdings ohne Erfolg.