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.
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;
}
Jetzt hast du es übersichtlicher was du setzt und rücksetzt, PB5 ist hier immer low.
Lesezeichen