Für die PWM musst du dich mit Timer auseinander setzen.
Dein Programm ist allerdings sehr unübersichtlich. Wenn es mal länger wird, kennst du dich sicher nicht mehr aus.
Jetzt hast du es übersichtlicher was du setzt und rücksetzt, PB5 ist hier immer low.Code:#include <avr/io.h> int main (void) DDRC &= ~(1<< PC1); //PortC Pin2 als Eingang definieren PORTC |= (1<< PC1); //PortC Pin2 Pullup aktivieren DDRB |= (1<< PB0); //als Ausgang definieren DDRB |= (1<< PB5); //als Ausgang definieren DDRD |= (1<< PD3); //als Ausgang definieren (Motor enable) { while (1) { if (!(PINC & (1<<PINC1))) //Läuft bei Taster geschlossen los { PORTB |= (1<< PB0); //auf high setzen // PORTB |= (1<< PB5); //auf high setzen PORTB &= ~(1<< PB5); //auf low setzen PORTD |= (1<< PD3); //auf high setzen (Motor enable) } else { PORTB &= ~(1<< PB0) |(1<< PB5); PORTD &= (1<< PD3); } } return 0; }







Zitieren

Lesezeichen