Tobi84 schrieb:
> Kann mir von euch einer sagen, was ich falsch mache?
Unter anderem:
* unvollständige Quelltexte posten
* die Forenregeln nicht lesen (da steht was von C-Code formatieren)
* keine Fehlermeldungen angeben
Ansonsten: Bei mir lässt sich dein Quelltextschnippel anstandslos
compilieren (gcc und clang).
Oh sorry für das posting oben!
anbei nochmal richtig.
die Fehlermeldungen sind:
../main.c:32: error: initializer element is not constant
../main.c:32: error: (near initialization for 'pwm_setting[0]')
../main.c:32: error: initializer element is not constant
../main.c:32: error: (near initialization for 'pwm_setting[1]')
In ANSI-C ist es glaub ich nicht zulässig, Arrays mit Variablen zu
initialisieren. Mach mal deine pwm_X von "volatile" zu "const" oder
trage die Werte direkt in die Feldinitialisierung ein.
Steht doch da: der Wert, mit dem du initalisierst, müsste konstant
sein. Tatsächlich ist es aber eine Variable.
Daß Sven es kann, liegt daran, daß er besser ist, oder daß der gcc
da nicht so pingelig ist in der Voreinstellung.
> uint8_t pwm_0 = 100;> pwm_setting[8]={pwm_0,pwm_1,pwm_2,pwm_3,pwm_4,pwm_5,pwm_6,pwm_7};
So ein Schwachsinn;) pwm_0 wird nie wieder benutzt.
Also:
pwm_setting[8]={100,pwm_1,pwm_2,pwm_3,pwm_4,pwm_5,pwm_6,pwm_7};
Restliche pwm_x genauso entsorgen.
Tobi84 schrieb:
> volatile uint8_t pwm_0 = 100;
Wenn es nur der Übersicht dient und nicht als Variable
benutzt wird (wie Holger schrieb) besser:
#define pwm_0 100
Dann wird bei
pwm_setting[8]={pwm_0,pwm_1,pwm_2,pwm_3,pwm_4,pwm_5,pwm_6,pwm_7};
pwm_0 direkt durch die 100 ersetzt.
avr
Wann einzeln verändern ?
Zur Compilezeit oder zur Laufzeit ?
Zur Compilezeit, dann nimm ein Makro, dann ists konstant und der
Compiler zufrieden.
so: #define pwm_0 100
Zur Laufzeit: dann greif auf das entspr. Element im array mit Hilfe des
Indexes zu und verändere es .
so: pwm_setting[0] = 100;
so: pwm_setting[1] = 80;
so: pwm_setting[i] = 23;
Vielleicht noch mehr Informationen, was Du mit der Variablen machen
willst ???
Klaus Wachtler schrieb:
> Steht doch da: der Wert, mit dem du initalisierst, müsste konstant> sein. Tatsächlich ist es aber eine Variable.>> Daß Sven es kann, liegt daran, daß er besser ist, oder daß der gcc> da nicht so pingelig ist in der Voreinstellung.
Nö, ich kompilierte strikt ISO-C99-konform. Dass es bei mir
funktioniert, liegt ganz einfach daran: Da der OT keinen Kontext
angegeben hat, hab ich mir halt einen ausgedacht. Wenn man Variablen und
den Vektor lokal macht, funktioniert das ganz unspektakulär...