Hallo,
Ich habe gerad anfängliche Probleme mit meinem Controller...
Wenn ich auf dem PORTC nur mit den LEDs arbeite klappt alles. Arbeite ich nur mit den Motoren klappt alles. Nur wenn ich beides kombinieren will geht es nicht mehr....
also mein code für allgemeines INIT
Wenn ich diesen lade kann ich mit meinen LEDs mit folgendem Befehl arbeiten: PORTC = ~((1<<3)|(1<<4));Code:void init(void) { DDRA = 0x00; /* Port als Eingang deklarieren ( A/D-Wandler Eingänge ) */ PORTA = 0x80; DDRB = 0xff; /* Port als Ausgang deklarieren */ PORTB = 0x00; DDRC = 0xff; /* Port als Ausgang deklarieren */ PORTC = 0x00; DDRD = 0xff; /* Port als Ausgang deklarieren */ PORTD = 0x00; ADMUX = 0; ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); /* Spezialfunktionen ausschalten */ SFIOR = 0; }
habe auch schon PORTC &= ~((1<<3)|(1<<4)); probiert
wenn ich nun noch mein MotorInit machen geht das nicht mehr. Es liegt an der gemeinsamen Nutzung und ich weiß auch, dass ich PC7 und PC6 nicht mehr zur Verfügung habe. Wie muss ich das anstellen damit ich meinen Motor verwenden kann aber trotzdem eine LED anschalten kann
Mein Code für die MotorInit:
Mein Motor wird später mit folgendem Befehl gesetzt: Portc |= (1<<PC6)Code:void motorInit(void){ DDRD= (1<<PD4) | (1<<PD5); // PWM Pins als ausgang DDRC= (1<<PC6) | (1<<PC7); // 6=Motor 1 Kanal 1 7= Motor 1 Kanal 2 DDRB= (1<<PB0) | (1<<PB1); // 0=Motor 2 Kanal 1 1= Motor 2 Kanal 2 TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10); // 10 Bit Pwm, invertierend TCCR1B = (1<<CS11) | (1<<CS10); // Prescaler 64 OCR1A=1; // Mindestzeit für PWM1 OCR1B=1; // Mindestzeit für PWM2 }
Wie ich das sehe liegt mein Denkfehler an der AND und OR-Verknüpfung. Habe jedoch schon einiges probiert und bin bis jetzt noch auf keine Lösung gekommen.
Vielen Dank für einen Tipp
Basti







Zitieren
Lesezeichen