Hallo erstmal,
ich habe mich schon des oefteren hier im Forum bei Problemen informiert
und bin bis jetzt auch immer fuendig geworden.
Jedoch bin ich jetzt auf eine Eigenart in Atmel Studio gestossen, welche
fuer mich keinen Sinn ergibt.
Zu meiner Person sei noch gesagt, dass ich das Programmieren lediglich
als Hobby ausuebe und die Kenntnisse auf einem mittel-niedrig Level
sind, da ich erst vor ein paar Monaten von Basic auf C gewechselt habe.
Nun zu meinem Problem:
Wenn ich folgenden Code Compilieren moechte, dann funktioniert das zwar,
was aber auffaellig ist, sind folgende Daten aus dem Output:
(Und das Programm funktioniert auch nicht)
Program Memory Usage : 130 bytes
Data Memory Usage : 0 bytes
Aendere ich jetzt jedoch (i=0; i==18; i++) in (i=0; i<18; i++), dann
zeigt mir der Output folgendes an und das Programm funktioniert wie
erwartet:
Program Memory Usage : 424 bytes
Data Memory Usage : 144 bytes
Der Code ist erst mal nur ein Test zum Testen der Hardware: (F_CPU ist
mit 16MHz in den Symbols angegeben)
1 | #include <util/delay.h>
|
2 | #include <avr/io.h>
|
3 | #include <stdio.h>
|
4 | #include <avr/interrupt.h>
|
5 | #include "light_ws2812.h"
|
6 | #include "LightDefs.h"
|
7 |
|
8 | struct cRGBW led[36];
|
9 |
|
10 | int main(void)
|
11 | {
|
12 | int i;
|
13 | while(1)
|
14 | {
|
15 | for (i=0; i==18; i++)
|
16 | {
|
17 | led[i].r=0;led[i].g=20;led[i].b=0;led[i].w=0;
|
18 | if (i>0) {led[(i-1)].r=0;led[(i-1)].g=0;led[(i-1)].b=0;led[(i-1)].w=0;}
|
19 | led[(i+18)].r=0;led[(i+18)].g=20;led[(i+18)].b=0;led[(i+18)].w=0;
|
20 | led[(i+17)].r=0;led[(i+17)].g=0;led[(i+17)].b=0;led[(i+17)].w=0;
|
21 | ws2812_setleds_rgbw(led,36);
|
22 | _delay_ms(50);
|
23 | }
|
24 | }
|
25 | }
|
Natuerlich sollte man sowieso mit <> abfragen, jedoch kann es doch mal
vorkommen, dass man mit == abfragen kann oder stehe ich jetzt total auf
dem Schlauch?
Auf jeden Fall bedanke ich mich schon mal fuer`s durchlesen meines
Problems und lasse mich gerne eines Besseren belehren ;)
Malte