Está en la página 1de 6

INCREMENTAR Y DECREMENTAR SEÑAL PWM

MEDIANTE DOS PULSADORES

PROFESOR
Fiestas Ugas, Antonio Esteban

CURSO
Microcontroladores

ALUMNOS:
Castillo Zavaleta, Santiago Evaristo
Fernandez Campos, Piero Frank
Rivas Huamanñahui, Misael Mateo
Villamizar Morales, Patrick Michael

Lima – Perú
2022- 02
1. Problema:
A partir de dos pulsadores, con uno incrementar en un 5% la señal PWM, y con el segundo
pulsador, disminuir en 5% la señal PWM.

2. Código desarrollado
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
uint8_t suma;
uint8_t resta;
float crece=0;

//Configuracion PWM
void tconfig (void){
TCCR0A|= 0x83;
TCCR0B|= 0x05;
OCR0A=0;
}

int main(void)
{
DDRD=0x40;
DDRB=0X00;
tconfig();
while (1) {
suma= PINB&0b00000001;
resta= PINB&0b00000010;

//Boton uno pulsado


if(suma==1){
crece +=(5*2.55);
_delay_ms(500);
OCR0A=crece;
}

//Boton dos pulsado


if (resta==2)
{
crece-=(5*2.55);
_delay_ms(500);
OCR0A=crece;
}

}
}
3. Interpretación del código

En las primeras líneas del código, se llama a la librería delay para hacer uso
posteriormente en la pausa de secuencias. Por otro lado, dos variables, suma y resta, se
les asignó como un tipo de dato de 8 bits. Además, una variable crece de tipo flotante
va a permitir almacenar el valor porcentual al cual va estar la señal PWM.

De la 7 a la 10 línea de código, se ha configurado el timer para que pueda producir una


señal PWM. En el registro TCCR0A se ha configurado el registro de control A para que
esté como Clear OC0B, el cual esté en uno, y en cada comparación limpie el registro y ponga a
cero. También, configurar el modo de operación como Fast PWM. En el registro TCCR0B se
ha configurado el registro de control B para que exista un preescalador de 1024. En el
registro OCR0A es la salida que proporciona cuando hay igualdad con el registro A. En
este caso se ha puesto a cero, pues se va modificar el valor en función a la cantidad de
pulsaciones.

En el cuerpo del programa, se declara al puerto D pin 6 como salida, mientras que en el
puerto B, se declara todos los pines como entradas. Así mismo, se llama a la función de
la configuración de la señal PWM, el cual tiene como nombre de función tconfig()
En la variable suma, se va a guardar el valor recibido del puerto B pin 0. Mientras que
en la variable resta, se va a guardar el valor recibido del puerto B pin 1. Si se ha
presionado el pulsador uno, ubicado en el pin 0, se incrementa en +(5*2.55)% la señal
PWM. Este proceso se detiene por medio segundo y el valor almacenado en la variable
crece se copia en el registro OCR0A para poder tener como salida la señal aumentada
en %.

Si el % de la señal PWM se quiere reducir, se tendrá que presionar el segundo botón, es


decir recibir una señal de 1 por el pin 1. Si se presiona el botón 2, entonces se reduce en
-(5*2.55)% la señal PWM. Este proceso se detiene por medio segundo y el valor
almacenado en la variable decrece se copia en el registro OCR0A para poder tener
como salida la señal disminuida en %.

Es importante mencionar que, si se presiona 10 veces el botón para incrementar el % de


la señal PWM y se presiona luego 4 veces el botón 2 para disminuir el %, entonces el
valor almacenado en el registro OCR0A será la diferencia de pulsaciones, es decir, se
va a incrementar en 20%, y esto se va ver reflejado en el osciloscopio de manera
inmediata.

4. Simulación
5. Comentario de lo aprendido
- Con este laboratorio se ha aprendido a usar los registros del timer para configurar
señales como el del PWM.
- Se ha aprendido a identificar y calcular el valor que debe ir en el registro TCCR0A
y en el registro TCCR0B y el significado de cada bit.
- El conocimiento aprendido en clase, es muy útil, pues se va a utilizar para modular
la frecuencia de giros de las ruedas de nuestro robot, para que ambas ruedas giren de
manera uniforme.
6. Conclusiones
- Hacer uso del preescalador ha resultado ser más eficiente e importante para generar
ondas cuadradas.
- Se ha aprendido más acerca de los microcontroladores Atmega328p a través de la
lectura de la data. He de ahí que conocer la data del microcontrolador es importante.

También podría gustarte