Guía de Usuario USBasp V3.0| HeTPro
_delay_ms(100);
}
return 0;
}
#include <AVR/io.h>
#include <util/delay.h>
int main(void) {
int ipwm;
DDRB=0xFF;
Se incluyen las librerías io y delay, se inicia el main y declaramos una variable de tipo
entero con el nombre de ipwm, después se declara el DDRB como salida.
TCCR1A = 0b10000011; //Fast PWM 8 Bit
TCCR1B = 0b00000001; //Sin preescalador
TCNT1 = 0;
En este caso los registros se modificaron asignando los valores en binario, como se ah
comentado se puede hacer de varias formas (binario, decimal, hexadecimal, con
_BV(_)...), Para los registros TCCR1A u TCCR1B se seleccionan las opciones Fast PWM
a 8 bits y sin preescalador (revisar los registros en la hoja de datos, para que se vea
que bits de cada registro se seleccionaron), después se manda a cero para resetear el
TCNT1.
for(;;) {
El ciclo for al que no se le pone ninguna condición nunca termina, es como el while(1),
sirve para lo mismo.
ipwm=0;
while (ipwm <= 255){
OCR1A=ipwm++;
_delay_ms(5);
}
La variable ipwm se inicializa en cero, y mientras sea menor o igual a 255 va a cumplir
la condición del while por lo tanto, OCR1A tendrá el valor del ipwm incrementado en
uno y con esto incrementando el ancho del pulso generado, y habrá un retraso de 5
milisegundos, esta rutina se repetirá hasta que el ipwm llegue a ser mayor que 255.
//Reset TCNT0
47