Hallo Freunde ,
schon vor einiger Zeit hatte ich mich hier wegen der AVR - Kapriolen
von Code::Blocks unter Linux hier etwas durchgefragt und es auch Gott
sei dank der Antworten von hier und vieler Internetrecherchen
geschafft, das ich mit Code::Blocks sozusagen das AVR-Studio ( Windows)
unter Linux damit ersetzen konnte.
Aber wie der Pechvogel nun so fliegt, kam ein HHD Fehler und damit auch
ein Neuaufsetzen des PC mit gleich dem aktuellem Linux auf mich zu.
Natürlich installierte ich auch wieder Code::Blocks, was für mich etwas
einfacher zu handeln ist bei der AVR Programmierung.
Nun habe ich heute, zum ersten Male, damit Hantieren wollen und wieder
ein "Fehlschuss" der nach hinten los ging. :(
Code::Blocks meckert beim Compilieren über die Funktionen
_delay_ms bzw. _delay_us.
Hier der Code:
1 | // avr-test.c
|
2 | // STK-500 mit ATmega32 MCU
|
3 | // Zählt von 255 gegen NUlL usw..
|
4 | // Die Ziffer wird binär auf dem STK500 mittels LEDs angezeigt
|
5 | #include <avr/io.h>
|
6 | #include <stdint.h>
|
7 | #define F_CPU 3686400UL // Quarz mit 3.6864 Mhz STK500
|
8 | //#define F_CPU 16000000UL
|
9 | #include <util/delay.h> // in älteren avr-libc Versionen <avr/delay.h>
|
10 |
|
11 |
|
12 |
|
13 | int main( void )
|
14 | {
|
15 | DDRB = 0xFF ; // PB0 an PORTB als Ausgang setzen
|
16 | PORTB = 0xFF;
|
17 | uint8_t var = 255;
|
18 | while( 1) // Endlosschleife
|
19 | {
|
20 |
|
21 | PORTB = var; // schreibe Variable in PORTB z. B. angeschlossene LEDs
|
22 |
|
23 | _delay_ms(1000); // Eine Sekunde warten...
|
24 | --var;
|
25 | if (var <= 0)
|
26 | {
|
27 | var = 255;
|
28 | }
|
29 | }
|
30 | return 0;
|
31 | }
|
Fehleranzeige : /usr/lib/avr/include/util/delay.h|163|error:
__builtin_avr_delay_cycles expects a compile time integer constant
Habe recherchiert und herausbekommen das ich nicht der Einzige bin der
vor diesen Rätsel steht, aber keine rechte Lösung gefunden .
Mit Geany kann ich den Code ohne Fehler compilieren ...
Geany und C::B benutzen doch wohl den selben AVR Compiler und selbe AVR
Libs... ???
Kann mir wer bitte einen Tip geben wo ich nach suchen muss/kann , um
dieses Makel zu beheben ??
Besten Dank für eventuelle Hilfe
Gruss
Gerhard