Forum: Compiler & IDEs Problem mit "case-Struktur"


von Thomas (Gast)


Lesenswert?

Hallo!
Habe ein Problem mit den Case-Anweisungen. Und zwar läuft das unten
stehende Programm nicht. Aber ich weiss nicht warum. Der case 0x00 wird
anscheinend abgehandelt(da die LEDS richtig leuchten). Aber wenn ich z.B
Taster0 (PINA0) betätige tut sich nichts.
Kann mir vielleicht jemand helfen?
µC = AtMega32
Compiler = AVR-GCC

MFG
Thomas

int main (void)
{
DDRA = 0x00;
DDRC = 0xFF;

for(;;)
{
inp(PINA) = Temp2;
switch (Temp2)
  {
  case 0x00:
  PORTC = 0xF0;
  break;

  case 0x01:
  PORTC = 0x01;
  break;

  case 0x02:
  PORTC = 0x04;
  break;
  }
}
}

von Elektrikser (Gast)


Lesenswert?

inp(PINA) = Temp2;

Du versuchst hier Temp2 an inp(PinA) zu übergeben.
Mach es mal anders herum. Übergib die Eingänge an Temp2.

Temp2 = inp(PINA);

Gruß Elektrikser

von Chris (Gast)


Lesenswert?

Eins vorweg: inp solltest du nicht mehr verwenden, du kannst PINA wie
eine normale Variable behandeln.


Außerdem macht:
inp(PINA) = Temp2;
ziemlich wenig Sinn. Du weist hier PINA den Wert von Temp2 zu (Temp2
ist aus mir unerfindlichen global oder gar nicht deklariert).
Du willst wahrscheinlich:
Temp2 = PINA;
switch(Temp2) { /* cases... */ }

Noch besser wäre aber das hier:
switch(PINA) { /* cases... */ }

Wie gesagt, PINA ist wie eine normale Variable zu behandeln.

von Thomas (Gast)


Lesenswert?

Vielen Dank für die Antworten.
Gruß Thomas

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.