Hallo Leute! Werde aus der Sache nicht ganz schlau: Ich hatte erst gedacht man könnte bei dem Atmega8 zwei unterschiedliche PWM Signale mit unterschiedlicher Frequenz ausgeben. Jetzt stellt sich jedoch heraus, dass man zwar zwei verschiedene PWM Signale einstellen kann, jedoch nur bei einer Frequenz. Ich habe einen Servo den ich mit einer Impulszeit von 20ms (500Hz) über OC1A ansteure. Nun möchte ich aber mit Hilfe einer H-Brücke (L293D) einen DC-Motor über OC1B in zwei Richtungen ansteuern. Die 500Hz sind jedoch zu wenig, ich würde lieber zwischen 2 - und 4 kHz liegen. Wie bekomme ich das nun hin? Hier mein Programm zum Ansteuern des Servos: Ich sende Zeichen über RS232 zum Einstellen des Winkels. #define FOSC 8000000UL // Clock Speed #define BAUD 9600UL #define MYUBRR ((FOSC+(BAUD * 8))/(16*BAUD))-1 // Servo Frame-Time: #define FRAME_TIME 20 // msec unsigned char USART_Receive( void ); void USART_Init( unsigned int); void USART_Transmit( unsigned char); void init_timer(void); void main( void ){ unsigned char a = 'U'; unsigned char b; int index; USART_Init (MYUBRR); init_timer(); do{ b=USART_Receive(); if(b=='M'){ OCR1A = 1400; } if(b=='R'){ OCR1A = 2380; } if(b=='L'){ OCR1A = 550; } }while(1); }
@Icke inwiefern? sorry beim Timer tue ich mich etwas schwer.. Hier nochmal mein init_timer(): void init_timer(){ // OC1A auf Ausgang DDRB = (1 << DDB1) | (1 << DDB2); PORTC |= (1<<PC0); PORTC |= (1<<PC1); ICR1 = FRAME_TIME * 1000; // PWM cycle time in usec TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11); // OC1A/B clr on match, set on TOP TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS11); // TOP = ICR1, clk = sysclk/8 (->1us) TCNT1 = 0; // reset Timer OCR1A = 950; // set Servo 1 to 1ms-position }
Timer 2 kann auch PWM allerdings nur 8 Bit. Habe ich selbst noch nicht benutzt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.