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

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;
}
Wenn ich diesen lade kann ich mit meinen LEDs mit folgendem Befehl arbeiten: PORTC = ~((1<<3)|(1<<4));
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:
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
}
Mein Motor wird später mit folgendem Befehl gesetzt: Portc |= (1<<PC6)

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