Hallo McJenson,
Es sollte über einen Interrupt drei Tasten abgefragt werden.
Taste1 "PB3" soll den Motor mit 50% nach links laufen lassen.
Taste2 "PB4" soll den Motor mit 50% nach rechts laufen lassen.
Taste3 "PB5" soll den Moter auf 100% beschleunigen.
Nun das script erst ohne Interrupts, nur mal mit einer Taste.
Die LED geht an aber nder Motor läuft nicht.
Code:
#include <avr/io.h>
#include <stdint.h>
void pwminit()
{
// DDRD = (1<<PD5);
TCCR1A = (1<<COM1B1)|(1<<WGM10)|(1<<WGM12);
TCCR1B = (1<<CS10);
OCR1B = 128;
}
void main (void)
{
DDRD=0x0c; // Port PD2 u. PD3 auf Port D als Ausgang
PORTD=0x0c; // Pins PD2 u. PD3 auf Port D auf low
DDRB &=~(1<<PB3);
PORTB |=(1<<PB3);
// DDRB=0x38; // Port B als Eingang
// PORTB=0x38; // Pull-ups auf Port B ein
// DDRB = 0b11111111;
while(1)
if ( PINB & ( 1<<PINB3 ) )
{
PORTD |= (1<<PD5);
PORTD |= (1<<PD2); // LED ein "Test"
pwminit();
}
else
{
PORTD &= ~(1<<PD2); // LED aus "Test"
}
}
mfg
Enterprise
Lesezeichen