Programación del microcontrolador: Memoria EEPROM y Modulación por ancho de pulso
Introducción
¡Hola!
Es un gusto encontrarte nuevamente, espero que estés aprendiendo mucho, sobre todo, que tu ánimo no decaiga y sigas conociendo más acerca de los temas que se te presentan.
En esta clase continuamos con las prácticas 5 y 6. La práctica 5 está enfocada a que trabajes con la memoria EEPROM que es una memoria no volátil, esto es, la información se mantiene aunque el microcontrolador se desconecte de su fuente de alimentación. Es una memoria pequeña, de solo 256 bytes, pero suficiente para muchas aplicaciones donde se guarda una cantidad pequeña de datos, como ejemplo, si se desarrolla un termómetro digital y el usuario puede seleccionar entre grados Fahrenheit y Celsius. La selección representa un bit de información que se puede guardar en la memoria EEPROM. Así, cada vez que se encienda el termómetro, lo primero que se lee es el valor escogido por el usuario, así no lo tendrá que seleccionar cada vez que lo encienda.
La modulación por ancho de pulso o PWM (por sus siglas en inglés Pulse Width Modulation) es utilizada en múltiples aplicaciones, como señal de control de servomotores, para regular la velocidad a la que giren motores de DC o AC, para el control de la intensidad de lámparas LED, generar una salida analógica, generar señales de audio, enviar datos encriptados, etc. Por ello es importante realizar y entender la práctica 6, ya que esta permitirá el manejo de la intensidad de un LED mediante el valor proveniente del convertidor analógico/digital, que es alimentado por un potenciómetro.
Empecemos con energía. Vamos.
¡Mucho éxito!
Desarrollo del tema
La memoria EEPROM es una memoria no volátil, permitiendo almacenar datos que serán conservados, aunque el microcontrolador no reciba alimentación. Su tamaño es de 256 bytes con las direcciones 00h a FFh.
El acceso a esta memoria es indirecto y se lleva a cabo mediante el manejo de los siguientes registros:
- EECON1 – Es el registro de control
- EECON2 – No es un registro físico. Se utiliza solamente en la secuencia de escritura de la EEPROM.
- EEDATA – Este registro se carga con el dato que se quiere guardar o, al realizar un proceso de lectura, guarda el dato
- EEADR – Este registro se carga con la dirección de memoria a la que se quiere escribir o de la que se quiere leer.
Registro EECON1
bit 7 EEPGD: bit selector de memoria de programa/datos
1 = Acceso a la memoria de programa
0 = Acceso a la memoria de datos
bit 6 CFGS: Acceso a los registros de configuración/Memoria de programa FLASH o EEPROM de datos.
1 = Acceso a los registros de configuración
0 = Acceso a la memoria EEPROM de datos o FLASH de programa
bit 5 No implementado: Se lee como 0
bit 4 FREE: bit que habilita el borrado de renglones de la memoria FLASH
1 = Borra el renglón de la memoria de programa direccionado por TBLPTR en el siguiente comando WR (se limpia
al terminar la operación de borrado)
0 = Ejecuta solo escritura.
bit 3 WRERR: bit de bandera de error de memoria de datos EEPROM/programa FLASH
1 = Una operación de escritura fue interrumpida (Cualquier reinicio durante la operación normal o intento incorrecto de escritura)
0 = Operación de escritura completada
bit 2 WREN: bit de habilitación de escritura de la EEPROM/FLASH
1 = Permite ciclos de escritura
0 = Deshabilita la opción de escritura a la memoria FLASH/EEPROM
bit 1 WR: bit de control de escritura
1 = Inicia un ciclo de escritura o de borrado de la memoria de programa. El bit se limpia por hardware al finalizar
0 = Ciclo de escritura de la EEPROM completo
bit 0 RD: bit de control de lectura
1 = Inicia la lectura de la EEPROM; se limpia por hardware
0 = No se inicia la lectura de la EEPROM.
El módulo PWM genera una señal con ancho de pulso modulado (PWM por sus siglas en inglés Pulse-Width Modulated) en el pin CCP1 (pin17). El ciclo de trabajo, ancho de pulso y resolución se determinan por los siguientes registros:
- PR2 – Guarda el valor del ciclo de trabajo o periodo del PWM.
- TMR2 –Es el registro de control del TMR2 al que está asociado el PWM
- CCPR1L – Es el registro que guarda los 8 bits más significativos del valor del ancho de pulso.
- CCP1CON – Es el registro de control del módulo CCP1
Para determinar el periodo o ciclo de trabajo se aplica la siguiente fórmula:
Donde
Para determinar el ancho de pulso se utiliza la siguiente fórmula:
Registro CCP1CON: REGISTRO DE CONTROL DEL CCP1
bit 7-6 No implementados.
bit 5-4 Bits menos significativos del ciclo de trabajo del PWM.
bit 3-0 Bits de selección de modo de trabajo
- 0000 = Módulo CCP deshabilitado
- 0001 = Reservado
- 0010 = Modo Compara
- 0011 = Reservado
- 0100 = Modo Captura, en cada flanco de bajada
- 0101 = Modo Captura, en cada flanco de subida
- 0110 = Modo Captura, cada 4o flanco de subida
- 0111 = Modo Captura, cada 16avo flanco de subida
- 1000 = Modo Compara, inicializa pin CCP1 bajo; al igualarse valores, forza el pin CCP1 alto
- 1001 = Modo Compara, inicializa pin CCP1 alto; al igualarse valores, forza el pin CCP1 bajo
- 1010 = Modo Compara, genera una interrupción por software al igualarse valores
- 1011 = Modo Compara, disparo de evento especial, reinicia el temporizador, inicia conversión A/D al igualarse valores del CCP1
- 11xx = Modo PWM
Conclusión
Al concluir la práctica 5 has comprobado que el dato del contador se guarda y, si se interrumpe la alimentación del microcontrolador el contador no reinicia de 0, sino continúa en el valor en que estaba en el momento en que se desconectó de la alimentación. Es importante tener presente que la memoria EEPROM tiene una duración de cien mil ciclos de lectura/escritura, por lo que no debe utilizarse de forma continua.
Con el desarrollo de la práctica 6 pudiste observar el cambio de intensidad en la luz del LED, este cambio es el que se aplica en focos y lámparas comerciales que pueden ser ajustados ya sea mediante un control remoto o desde una aplicación en un teléfono inteligente. Y como se mencionó anteriormente, tiene muchas más aplicaciones.
Hemos llegado al final de nuestra sesión. No me resta más que felicitarte por tu esfuerzo y dedicación. Te invito a leer, estudiar y complementar tu aprendizaje por medio del material incluido en la sesión. Recuerda que siempre tendrás el respaldo de tu asesor. No dudes en consultarlo.
Por último, resuelve la consigna de este tema; te invito a cumplir con este compromiso en tiempo y forma.
Nos leemos en la siguiente sesión. ¡Sigamos adelante!