Forum: Compiler & IDEs Keine Funktion des Programms auf Kontroller.


von Bruno Pierucki (Gast)


Lesenswert?

Hallo,

ich habe ein Testprogramm für das myAVR Board mit dem ATmega8
geschrieben. Wenn ich das Programm mit Hilfe von AVRStudio debugge,
dann funktioniert das Programm auch, laut Simulation. Nachdem ich das
Programm allerdings mit YAAP auf den Kontroller übertragen habe,
funktioniert gar nichts mehr.

int main()
{
  DDRB = 0x00;
  DDRC = 0xFF;
  for(;;)
  {
    switch(PINB)
    {
      case 0x01:  PORTC = 0x01;
          break;
      case 0x02: PORTC = 0x02;
                 break;
      default:   PORTC = 0x00;
    }

  }
  return 0;
}

Bin für jede Hilfe dankbar.

BP

von A.K. (Gast)


Lesenswert?

Ein Controller ist kein PC. Beim PC endet das Programm mit "return",
aber was soll der Controller denn dann machen? Üblicherweise hat man in
main() eine Endlosschleife.

von Bruno Pierucki (Gast)


Lesenswert?

Da ist ja die Endlosschleife mit for(;;)
Das return hab ich nur testweise darein geschrieben gehabt. Hatte bei
der Simulation keine Probleme. Und ohne return am Ende hatte das
Programm auch nicht funktioniert.

BP

von Alex (Gast)


Lesenswert?

Programm ist soweit i.O.

von A.K. (Gast)


Lesenswert?

Sorry, selektive Wahrnehmung.

Was hängt denn am Port B dran (alle Pins bitte)? Und wie verhält es
sich.

von Bruno Pierucki (Gast)


Lesenswert?

Also ich habe an Port B fünf Taster angeschlossen. Alle haben
Pulldownwiderstände. Also die internen sind abgeschaltet. die
restlichen sind frei. Die sind quasi undefiniert. Aber das sollte doch
eigentlich egal sein oder?
Wie soll sich was verhalten? Das Programm im AVRStudio oder auf dem
Kontroller oder?

von A.K. (Gast)


Lesenswert?

Na also, dachte ich es mir doch.

Was steht denn im Programm:
   wenn alle 8 Pins auf 0 sind ausser PB0 => 01 ausgeben
   wenn alls 8 Pins auf 0 sind ausser PB1 => 02 ausgeben
   in allen anderen Fällen => 00 ausgeben
Mit 3 undefinieren Eingängen stehen die Chancen schlecht, dass die alle
3 0 sind.

von A.K. (Gast)


Lesenswert?

Warum funktiniert es im Simulator: Weil undefinierte Pins dort nicht
wirklich undefiniert sind.

von Fritz G. (fritzg)


Lesenswert?

Mach

switch(PINB & 0x1f)

dann sollte es tun.

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.