Hallo!
Ja ich hab mich heute noch einmal an die ganze Sache ran getraut. Ich hab mich jetzt mal entschlossen die Aufgabe meines Profs hier zu stellen, inklusive meines Lösungsansatzes.
Also die Aufgabe lautet wie folgt:
Mein Ansatz zur Lösung:Eine Lichtpunkt soll die LEDs von LED1 bis LED8 durchlaufen. Dabei sollen die LEDs gedacht kreisförmig angeordnet sein. Nach LED8 leuchtet also LED1. Mit den Schaltern S1 bis S3 geben Sie die Schrittweite binär an. Programmieren Sie das Lauflicht als Endlosschleife. Der Prozessor soll zwischen zwei Zuständen bis 5000 zählen.
Um den Code besser zu verstehen hab ich hier noch ein Schaltbild, was auch die Schikane dabei verdeutlicht. Und zwar liegt ein Schalter auf einem anderen Port. Den Zähler der nach jedem Durchlauf der while-Schleife auf 5000 zählen soll, habe ich aus Simulationszwecken mal weg gelassen.Code:#include <avr/io.h> void main() { uint8_t step; //Schrittweite uint16_t value; uint16_t count; DDRA = 0x00; PORTA = 0x00; //oder müsste das 0xFF sein? DDRC = 0xFF; PORTC = 0x00; DDRD = 0x00; PORTD = 0x00; //oder müsste das 0xFF sein? value = 1; while (1) { step = (PINA & 0x06) | ((PIND>>2)&0x01); value <<= step; value = (value & 0xFF) | (value >> 8); PORTC = (uint8_t) value; } }
Meine zwei Fragen:
- - Sind die Ports richtig initialisiert?
- Wieso "läuft" mein Licht nicht?
Leider kann ich in meiner Simulation mittels AVR Studio kein Lauflicht erkennen. Was mache ich falsch?
Danke für Hilfe!







Zitieren

Lesezeichen