3. Características generales de los MCU Recursos comunes en microcontroladores: • Procesador o CPU • Memoria: • Memoria no volátil (ROM, Flash, EEPROM…) para almacenamiento del programa. • Memoria volátil (RAM) para almacenamiento de los datos. • No existen sistemas de almacenamiento masivo
4. Características generales de los MCU • Reloj principal • Los mC suelen disponer circuitos osciladores, que necesitan redes RC o cristales de cuarzo para su funcionamiento
5. Características generales de los MCU • Perro guardián (“watchdog”) Contador que resetea al mC cada vez que se desborda. • Evita fallos de funcionamiento • Es necesario inicializarlo antes de su desbordamiento
6. Características generales de los MCU • Protecciones ante fallos de alimentación (“brownout”) • Circuitos que resetean al mC cuando la tensión de alimentación se ubica por debajo de un valor crítico.
7. Características generales de los MCU Periféricos: • Puertos E/S digital (DIO). • Temporizadores. • Convertidores A/D y D/A. • Comparadores analógicos • Moduladores de anchura de impulso (PWM) • Puertos de comunicación: • USART • I2C
8.
9. Memoria de datos.• Permite acceso simultaneo a memoria Segmentación de instrucciones: • Ejecuta instrucciones en un solo ciclo Formato de longitud constante: • Simplifica la realización de ensambladores y compiladores
10. Características generales de los PIC RISC (“Computadora con Conjunto de Instrucciones Reducido”) Instrucciones ortogonales: • Todas las instrucciones pueden manejar cualquier elemento de la arquitectura Arquitectura basada en registros
11. Familia PIC16xxx 92 modelos; 14 a 64 pines •frecuencia de reloj 40 MHz max. • Hasta 8 Kpalabras de programa • Hasta 368 bytes de datos (RAM) • E/S digitales, temporizadores, CD/A de hasta 12 bits, PWM, comparadores analógicos, comunicación serie, memoria de datos EEPROM... • Hasta 1 vector de interrupciones • 33 ó 35 instrucciones
12.
13. Juego de instrucciones Se pueden dividir en cuatro grupos: • Sobre registro orientadas a bytes. • Sobre registro orientadas a bits. • Operaciones con literales. • Instrucciones de control. Todas tienen un ancho de 14 bits. Entre unas y otras varían sus campos
18. Tienen multiplexadas otras funciones alternativas asociadas a otros periféricos de los PIC.
19. En total existen 7 puertos de E/S, aunque no aparecen todos en todos los modelos.
20.
21. Puerto B • Está formada por 8 pines de E/S configurado a través de TRISB. • Se puede configurar una carga activa implementada con un CMOS: • Se activa siempre que: • El pin esté trabajando como entrada. • El flag NOT_RBPU del registro de opciones, bit 7, esté a 0. • Cuando se configura la carga activa, ésta actúa en todos los pines configurados como entrada. • Se desactiva siempre que se trabaje como salida o con un POR.
22. Temporizador TMR0 • Contador/Temporizador ascendente de 8 bits. • Puede leerse y escribirse en cualquier momento. • Dispone de un predivisor de frecuencia programable de 8 bits. • La fuente de reloj puede ser interna o externa. • Puede generarse una interrupción de overflow (0xFF a 0x00). • Si el reloj es externo, el flanco de incremento de TMR0 es seleccionable.
23. Temporizador TMR0 • Los bits de configuración son: • T0CS (OPTION_REG<5>): Selección de fuente de reloj. ‘1’, transición por RA4/T0CKI. ‘0’, transición por Tosc. • T0SE (OPTION_REG<4>): Selección para flanco por RA4/T0CKI (Siempre que T0CS = 1). ‘1’, incremento con flanco descendente. ‘0’, incremento con flanco ascendente. • PSA (OPTION_REG<3>): Asignación del predivisor. ‘1’, predivisor asignado a WDT. ‘0’, predivisor asignado a TMR0. • PS2:PS0 (OPTION_REG<2:0>): Razón de división.
24. Temporizador TMR0 • Cuando TMR0 actúa como temporizador (T0CS=0), se produce un incremento del temporizador por cada ciclo de instrucción (Tcy) siempre que la división de frecuencia sea 1:1. • Cuando se realiza una escritura (movwf TMR0), el incremento se inhibe durante los dos siguientes ciclos de instrucción. • En el caso de que el divisor de frecuencias esté habilitado, al escribir algún valor en TMR0, se pone a ‘0’. Debido a esto el incremento de TMR0 se inibe durante dos ciclos más el tiempo definido en el preescáler.
25. Temporizador TMR0 • Si TMR0 está configurado como contador (T0CS=1), se produce un incremento por cada flanco de subida o bajada (en función de T0SE) en RA4/T0CKI. • La señal de salida del divisor de frecuencia se sincroniza con la señal de reloj interna. Ésta se realiza muestreando la señal en Q2 y Q4. • Esto obliga a que la señal tenga un ancho mínimo para que pueda ser detectada. • Debido a la sincronización existe un retardo desde que aparece la señal en RA4/T0CKI hasta que se incrementa TMR0.
26. Temporizador TMR0 • Las interrupciones en TMR0 se producen en el momento del desbordamiento (0xFF -> 0x00). • Los flag asociados son: T0IE (INTCON<5>). T0IF (INTCON<2>).