Hallo zusammen!
Ich versuche ein LED Lauflicht zu programmieren (Wie schon millionen
Anfänger vor mir). Genauer gesagt soll es "normal" links herum laufen,
aber wenn man auf einen Taster drückt (im Code angeschlossen an PIND.0)
soll es die Richtung ändern.
Die Hardware ist das STK500 mit dem mitgelieferten AtMega8515L, die
verbauten LEDs und Taster werden verwendet.
Code im Anhang. Ist wahrscheinlich alles noch sehr ungeschickt
programmiert, dafür kommentiert.
Vor dem ausführen wird timer=50000 gesetzt, die 1 nur zum simulieren.
Jetzt das eigentliche Problem:
In der Simulation funktioniert das ganze Prima. Alle Unterprogramme
laufen durch, gibt nichts zu meckern. Wenn ich mir PORTB anschaue läuft
alles exakt wie gewünscht, mit den Carry Bits gibts auch keine Probleme.
Aber sobald ich das Programm auf den Atmega lade funktioniert es
nichtmehr. Es leuchtet nur der Angangszustand, also die erste LED und
das wars dann.
Um das Problem zu lösen habe ich folgendes probiert:
Jeder Programmteil (also rechtsrum / linksrum) habe ich in ein eigenes
Programm gepackt und raufgeladen - Beide Richtungen funktionieren an
sich.
Dann hab ich die "Abfrageroutine" rausgeschrieben und zwei einfachere
Unterprogramme konstruiert: Für "nicht drücken" sind alle Lichter aus,
beim drücken geht eine LED an PORTB an - funktioniert auch.
Sobald ich alles zusammenpacke geht es in der Simulation ganz normal,
aber nicht mehr auf dem Controller.
Was könnte ich falschmachen?
Vielen Dank für die Hilfe!
Grüße,
Patrick