-
-
Erfahrener Benutzer
Roboter Experte
Code:
while (1); // endlos
Das Programm kommt überhaupt nicht bis zu dem Teil, wo OCR0 verändert wird.
-
Erfahrener Benutzer
Robotik Visionär
@sternst
Du hast recht. Das habe ich ganz übersehen.
MfG Hannes
-
Das Programm ist ursprünglich aus dem Buch ich habe es so abgeändert, dass halt in der while Schleife was steht. Im Original steht nichts in der while Schleife.
Das ist mir irgendwo auch bewusst, dass es nie bis zum ändern von OCR0 kommt, aber leider verstehe ich das nicht. Ich hab nämlich im Internet gesucht, wo LEDs ebenfalls über timer und PWM gedimmt werden, aber nie was für mich passendes gefunden. Was müsste ich denn abändern, oder besser gesagt, wie müsste es sein, dass die LED langsam ein geht.
Vielen Dank nochmals.
MFG
RP6fahrer
-
Erfahrener Benutzer
Robotik Visionär
Die while Schleife passt im Prinzip so. Du hast aber einen kleinen Fehler drinnen, der aber eine große Auswirkung hat. Das Semikolon muss entfernt werden. Ein gutes Tutorial für C ist das von Mikrocontroller.net => http://www.mikrocontroller.net/artic...R-GCC-Tutorial
Wenn du nur ein Kommando hast musst du ein Semikolon verwenden (z.B. DDRB |= (1<<PB1);). Ansonsten musst du mit den geschwungenen Klammern arbeiten. Da bei deinem While(1) ein Semikolon war, ist immer nur das While (1); ausgeführt worden (abgesehen von den ISR Routinen). Da zwischen while(1) und dem Semikolon nichts ist wird auch nichts ausgeführt. Würdest du z.B. while(1) PORTB ^= (1<<PB1); schreiben würdest du den PB1 immer toggeln (so schnell der µC arbeiten kann). Wenn keine ISR aktiv wäre würde der µC nur den Ausgang toggeln.
MfG Hannes
-
Vielen vielen Dank,
Ich hab das Semikolon hinter while(1) weggenommen und schon ging's. Ich hätte nicht gedacht, das es nur wegen so einem kleinen Fehler nicht geht. Also nochmals vielen Dank.
Mfg
RP6fahrer
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen