Hi,

kaum ist das eine Problem gelöst, taucht schon das nächste auf.
Wenn ich die LED auf dem Steckbrett umpole und dazu auch die Richtung im Programm ändere, dann müsste sie ja trotzdem leuchten, oder?
Leider funktionieren nur Geschwindigkeiten von-255 bis -1.

Ich versteh das nicht, wenn ich auf eine positive Geschwindigkeit schalte dann tut sich nichts.

Hier das Programm so wie es jetzt aussieht:

Code:
/* ********************************************************
   PWM
   
   PWM-Ausgang: OC0/PB4
   I/O-Pins: PC0/PC1
   ****************************************************** */
#include <avr/io.h>
#include <stdint.h>


// Funktion zur Steuerung der Motoren
// speed[-255-255]=Motorgeschwindigkeit/Vorwärts-/Rückwärtsdrehen
int motor(int speed)
{
 if (speed<0)
 {
    PORTC |= ( 1 << PC0 ); // Linksdrehen
	PORTC &= ~(1 << PC1); 
	OCR0 = -speed;		    // Vergleichswert festlegen=Geschwindigkeit einstellen(0-255)
 }
 
 if (speed>=0)
 {
    PORTC &= ~(1 << PC0); // Rechtsdrehen
	PORTC |= ( 1 << PC1 ); 
	OCR0 = speed;
 }
}  

// PWM initialisieren
int pwm_init(void)
{
 DDRC = 0xff;
 DDRB = 0xff;
 TCCR0 = (0<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(1<<CS02)|(0<<CS01)|(0<<CS00); // Fast-PWM-Mode, toogle at Top
}


int main(void)
{
 pwm_init();
 while(1)
 {
  motor(255);
 } 
 return 0;
}
Was hab ich jetzt noch falsch gemacht?

Bene

//edit:

Jetzt funktioniert es auf einmal, es muss wohl an irgendeinem Wackelkontakt auf dem Steckbrett gelegen haben.