un code C pour avr-gcc :
#include <avr/io.h>
#define PWM_DDR DDRD
#define PWM_PORT PORTD
#define PWM1 5
#define PWM2 6
void PWM_init(void){ // Initialisation de la PWM
PWM_DDR |= (1<<PWM1)|(1<<PWM2); // Les ports PWM sont des sorties
TCCR0A |= (1<<COM0A1)|(1<<COM0B1); // Les ports PWM se comportent normalement
TCCR0A |= (1<<WGM01)|(1<<WGM00); // Minuteur mis en mode PWM
TCCR0B |= (1<<CS00); // Pas de pré-diviseur, démarre le compteur
}
int main(void){
PWM_init();
int pwm=0;
while(1){
pwm++; if(pwm>100) pwm=0;
OCR0A=pwm*255/100; // PWM pour le port 5 (ramenée à 255)
OCR0B=(100-pwm)*255/100; // PWM pour le port 6 (ramenée à 255)
_delay_ms(10);
}
return 0;
}