Programming: Outputting a PWM (Pulse Width Modulation) on More Than One Pin of the AVR Microcontroller

Important aspects of outputting to more than one pin are as follows: - Make sure the pins that will output the PWM are set for output data direction (i.e. DDRB = 0xFF for all PORT B pins output) - Make sure that the pins will be set high in the interrupt service routine (ISR) - Add another line within code block of the if (TCNT1>=800 && TCNT1<=2400) and make sure the pin reflect the correct output pin and the number after the TCNT1 >= value is correctly set for the position for that servo on that pin.



#include #include int main(void) { DDRA = 0xFF; DDRB = 0xFF; TCCR1A |= 1<= 2000 && bit_is_set(PORTB, PINB0)) PORTB &= ~(1<= 1000 && bit_is_set(PORTB, PINB1)) PORTB &= ~(1<= 1500 && bit_is_set(PORTB, PINB2)) PORTB &= ~(1<= 800 && bit_is_set(PORTB, PINB3)) PORTB &= ~(1<= 2300 && bit_is_set(PORTA, PINA0)) PORTA &= ~(1<= 1390 && bit_is_set(PORTA, PINA1)) PORTA &= ~(1<= 1800 && bit_is_set(PORTA, PINA2)) PORTA &= ~(1<= 1850 && bit_is_set(PORTA, PINA3)) PORTA &= ~(1<
Back to blog

Leave a comment

Please note, comments need to be approved before they are published.