Forum: Compiler & IDEs simple Zuweisung aus Array klappt nicht


von Ronny Schulz (Gast)


Lesenswert?

Ich habe so ein kleines Problem, dass ich mit dem Debugger entdeckt habe
aber auch nicht so beheben kann. Irgendwo habe ich wieder einen
Denkfehler. Vielleicht sieht ja jemand besser als ich. Hier ein
Schnipsel:

#define ABLED_NUM_PINS        3
#define ABLED_TYPE_SINGLE      1
#define ABLED_TYPE_DUAL        2
#define ABLED_TYPE_RGB        3

#define ABLED_NUM_LEDS        3

unsigned char abled_types[ABLED_NUM_LEDS] = {
  ABLED_TYPE_SINGLE,
  ABLED_TYPE_SINGLE,
  ABLED_TYPE_SINGLE
};

SIGNAL(SIG_OUTPUT_COMPARE0)
{
  unsigned char     value_first, value_next, value_new, value;
  unsigned char     count_led, count_col, count_pin;

  cli();
  value = TCNT0;
  value_first = 0xFF;
  value_next = value;
  for (count_led = 0; count_led < ABLED_NUM_LEDS; count_led++) {
    count_pin = abled_types[count_led];

.....

DIe Zeile wo "count_pin" gesetzt wird funktioniert nicht. Dort sollte
eine 1 drin stehen beim ersten Durchlauf. Da steht aber danach 255 drin
(laut AVR Studio Debugger). Wieso?! Raffe ich echt nicht.

von Florian Hrubesch (Gast)


Lesenswert?

probiers mal mit volatile.
cu Flo

von Florian Hrubesch (Gast)


Lesenswert?

volatile unsigned char abled_types[ABLED_NUM_LEDS] = {
  ABLED_TYPE_SINGLE,
  ABLED_TYPE_SINGLE,
  ABLED_TYPE_SINGLE
};

von Ronny Schulz (Gast)


Lesenswert?

Geht genauso wenig. Was sollte das "volatile" in diesem Fall bedeuten?

von Jörg Wunsch (Gast)


Lesenswert?

AVR Studio debugger?

Wie sieht's im realen Leben aus?

Benutzt Du die neuste Version von AVR Studio und das `extcoff' Format?

von Herbert (Gast)


Lesenswert?

Hallo Ronny,
das sieht sehr komplex aus was Du da machst. Was willst Du eigentlich
mit den LEDs machen. Offenbar willst Du mehrere LEDs unterschiedlich
hell ansteuern, oder ???
Wenn das so ist, würde ich das anders machen.

Gruß Herbert

von Ronny Schulz (Gast)


Lesenswert?

@Jörg Wunsch:
Funktioniert nicht so richtig, deshalb habe ich zum Debugger gegriffen.
AVR-Studio habe ich 4.07 oder sowas (vor etwa 4 Monaten
heruntergeladen). Weiß ich aber nicht genau. Da müsste ich mal zu Hause
schauen.
Ja und extcoff aus WinAVR. Anders geht es ja kaum.

@Herbert:
Genau richtig erkannt! Was würdest Du anders machen bzw. wie würdest Du
das machen?

von Jörg Wunsch (Gast)


Lesenswert?

Upgrade auf 4.08, dann geht's.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.