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:
Was hab ich jetzt noch falsch gemacht?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; }
Bene
//edit:
Jetzt funktioniert es auf einmal, es muss wohl an irgendeinem Wackelkontakt auf dem Steckbrett gelegen haben.







Zitieren

Lesezeichen