Datasheet en español: PIC12F629/675

(1/5) > >>

xocas:
Es importante destacar que el único documento válido es el datasheet original de Microchip y que los derechos les corresponden a ellos. A pesar del esfuerzo por ser lo más fiel posible al documento original no descarto que haya algún tipo de error, ya sea tipográfico o de interpretación.

He solicitado autorización de Microchip para publicarlo a nivel personal en los Foros en los que participo con mayor o menor frecuencia y solamente para los usuarios y/o visitantes de estos Foros llevé a cabo la tarea. No he obtenido el permiso para un formato final en pdf como me hubiera gustado y desautorizo su publicación -porque así lo expresa claramente Microchip (1)- en cualquier otra parte.

En todo caso, libro al Foro de todo tipo de responsabilidad y si algo se me ha pasado por alto y estoy vulnerando las normas de propiedad de Microchip, agradecería se me informara para actuar en consecuencia.

(1) Personal Use of Copyrighted Material: If you use Microchip copyrighted material solely for your personal use you do not need Microchip’s written permission to use such material. However, distribution or reproduction of such materials and images to others (including posting on a website) does require Microchip’s written permission.



*********************
PIC12F629/675
*********************


CPU RISC de alto rendimiento:
Sólo 35 instrucciones para aprender
Todas las instrucciones se ejecutan en un solo ciclo de reloj, excepto los saltos que requieren dos
Frecuencia de Operación de 0 a 20 MHz (DC a 200 nseg de ciclo de instrucción)
Posibilidad de Interrupciones
Pila (Stack) por hardware de 8 niveles
Modos de Direccionamiento Directos, Indirectos, y Relativos

Características especiales:
Opciones de oscilador Interno y externo
Oscilador interno de 4Mhz calibrado de fábrica a +/- 1%
Soporte para Oscilador externo a cristal y resonador
Tiempo de reacción tras el modo SLEEP: 5us (típico a 3.0V)
Ahorro de energía en el modo SLEEP
Amplio rango de voltaje  - 2.0V a 5.5V
Rango de temperaturas Industrial y extendida
Power-on-Reset (POR) de bajo consumo
Power-up Timer (PWRT) y Oscilador Start-up Timer (OST)
Brown-out Detect (BOD)
Watchdog Timer(WDT) con oscilador independiente para una operación confiable
MCLR/pin de entrada, multiplexado
Interrupción por cambio de estado
Resistencias pull-up internas programables Individualmente
Protección de código Programable
Alta duración de FLASH/EEPROM
- 100,000 escrituras  en memoria Flash
- 1,000,000 escrituras en EEPROM
- Flash/Data EEPROM Retención:> 40 años

Características de bajo consumo:
Corriente de Reserva (standby):
- 1 nA  a 2.0V, típico
Corriente de operación:
- 8.5 uA a 32Khz, 2.0V, típico
- 100 uA a 1Mhz, 2.0V, típico
Corriente Watchdog Timer:
- 300 nA 2.0V, típico
CorrienteTimer1 :
4 uA a 32Khz, 2.0V, típico

Características de  Periféricos:
6 entradas/salidas con control de dirección individual(*)
Alta corriente suministrada: 25mA
Módulo Comparador Analógico
Comparador de Voltaje Programable. Módulo (CVREF)
Entradas multiplexadas programables.
La salida del Comparador es accesible externamente
Módulo Convertidor Analógico/Digital (PIC12F675):
- Resolución de 10 bits
- Entrada de 4 canales programable
- Entrada de Referencia de Voltaje
Timer0: temporizador/contador de 8 bits con prescaler de 8 bits programable.
Timer1 Extendido:
- Temporizador/contador de 16 bytes con prescaler
- Modo de Entrada externo (External Gate Mode)
- Opción para usar OSC1 y OSC2 en modo de LP como oscilador de Timer1, si el modo INTOSC está seleccionado
Programación en circuito (In-Circuit Serial Programming (ICSP)) vía dos pines

(*) GP3 puede funcionar como MCLR, como un pin de entrada con interrupción por cambio de estado o como Vpp para la programación del PIC, pero no como pin de salida.


xocas:
esta imagen nos permite ver las pocas diferencias existentes entre ambos PICs, básicamente que el 12F675 está dotado de 4 canales A/D. estas diferencias serán puntualmente comentadas a lo largo del tema:



y en la distribución de sus pines, una vista más detallada:




un detalle importante apuntado por el amigo palitroquez en otro hilo y que conviene tener presente: esta hoja de datos tiene la referencia DS41190E, que es la última versión del datasheet en este momento. podría pasarnos que hubiera alguna actualización importante en la que se corrijan errores con respecto a la versión que hemos descargado hace unos meses, y de igual forma revisar cualquier posible documento de erratas sobre el datasheet con el cual vayáis a trabajar. en el caso del PIC12F629/675 no dejar de ver: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010114

un saludo


xocas:
Diagrama de Bloques del PIC, con la descripción de sus pines y configuración interna. Podemos encontrar información adicional en el Manual de Referencia (PIC Mid-Range Reference Manual (DS33023)) en la web de Microchip,



Descripción detallada de los pines del PIC:



Esto es a mi entender el punto de partida necesario. Las primeras hojas del datasheet nos dirán si es la elección correcta a nuestras necesidades. ¿dispone de un número suficiente de entradas/salidas? (en adelante I/O), ¿necesitamos o sería muy conveniente disponer de un puerto serie por hardware?, ¿de un puerto USB?, ¿de más memoria?... todo esto lo podemos ver en unas pocas páginas del datasheet.

A modo de un pequeño repaso:
AN0..AN3 = Entradas de los canales de los convertidores A/D
CIN+ y CN- = Entradas Comparador
COUT = Salida Comparador
CLKIN = Entrada de reloj /conexión oscilador RC
CLKOUT = Salida FOSC/4
GP0..GP5 = I/O bi-direccionales  con pull-up programable e interrupción por cambio de estado.(*)
ICSPDAT = Pin de Datos para programación ICSP
ICSPCLK = Pin de Reloj para programación ICSP
INT = Interrupción Externa
T0CKI = Entrada reloj de TMR0
T1CKI = Reloj TMR1
T1G = TMR1 gate
VREF = Voltaje de Referencia Externo

(*) No es así en el caso de GP3, que puede funcionar solo como entrada.
GP3 = entrada  con interrupción por cambio de estado.
MCLR = Master Clear
VPP = Voltaje de programación

xocas:
Bien, como introducción a los Registros del PIC creo que 'Configuration Bits' (capítulo 9.1 del datasheet) es un buen punto de partida. Si bien es algo que podemos hacer a la hora de grabar el PIC seleccionando las opciones adecuadas en el software de grabación en mi opinión es altamente recomendable añadirlo al principio de nuestro programa. Según el lenguaje de programación hay diferentes sintaxis para hacerlo:

en ASM -> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
en CCS -> #FUSES XT,NOWDT,NOPROTECT,PUT
Como se puede ver, son bastante intuitivas ambas formas de hacerlo

en PSI -> Define CONF_WORD = 0x31a1
En el menú Options .. Configuration bits indicamos las opciones deseadas y nos da como resultado el valor de CONF_WORD



en PBP -> @ DEVICE pic12F675, 0x31A1
Sin embargo, y aquí quería llegar, ¿cómo obtenemos ese valor para PBP?
Podemos recurrir a ejecutar el software  de programación (Winpic800 por ejemplo), establecer las opciones y tomar nota del valor que devuelve en la posición 0x2007 para posteriormente añadirlo a la instrucción @ DEVICE pic12F675, valor. (ver que hay una diferencia en el valor devuelto: PSI = 0x31a1 y Winpic = 0x3FA1)



Para entender esta diferencia de valor y adentrarnos ya en el aprendizaje de los Registros, veamos la siguiente imagen y su descripción:



bit 13-12    BG1:BG0: bits de calibración 'Bandgap' para voltaje de BOD  y POR (1)
                00 = Lowest bandgap
                11 = Highest bandgap
bit 11-9     No implementados: se leen como ‘0’
bit 8          /CPD: Data Code Protection bit(2)
                1 = Data memory code protection deshabilitada
                0 = Data memory code protection habilitada
bit 7          /CP: Code Protection bit(3)
                1 = Program Memory code protection deshabilitada
                0 = Program Memory code protection habilitada
bit 6          BODEN: Brown-out Detect Enable bit(4)
                1 = BOD habilitado
                0 = BOD deshabilitado
bit 5         MCLRE: GP3/MCLR pin function select(5)
                1 = GP3/MCLR pin function como MCLR
                0 = GP3/MCLR pin function como digital I/O, MCLR internamente llevada a VDD
bit 4         /PWRTE: Power-up Timer Enable bit
                1 = PWRT deshabilitado
                0 = PWRT habilitado
bit 3         WDTE: Watchdog Timer Enable bit
                1 = WDT habilitado
                0 = WDT deshabilitado
bit 2-0      FOSC2:FOSC0: Oscillator Selection bits
               111 = oscilador RC: CLKOUT en GP4/OSC2/CLKOUT, RC en GP5/OSC1/CLKIN
               110 = oscilador RC: I/O en GP4/OSC2/CLKOUT, RC en GP5/OSC1/CLKIN
               101 = oscilador INTOSC: CLKOUT en GP4/OSC2/CLKOUT, I/O en GP5/OSC1/CLKIN
               100 = oscilador INTOSC: I/O en GP4/OSC2/CLKOUT, I/O en GP5/OSC1/CLKIN
               011 = EC: I/O en GP4/OSC2/CLKOUT, CLKIN en GP5/OSC1/CLKIN
               010 = oscilador HS: cristal/resonador de alta frecuencia en GP4/OSC2/CLKOUT y GP5/OSC1/CLKIN
               001 = oscilador XT: cristal/resonador en GP4/OSC2/CLKOUT y GP5/OSC1/CLKIN
               000 = oscilador LP: cristal de baja frecuencia en GP4/OSC2/CLKOUT y GP5/OSC1/CLKIN

*******
Notas:
1: los bits de calibración de bandgap están programados de  fábrica y se deben leer y guardar antes de borrar el dispositivo. Tal como está especificado en 'PIC12F629/675 Programming Specification'. Estos bits se reflejan en la exportación de la palabra de configuración. Las Herramientas de Desarrollo de Microchip mantienen todos los bits de calibración a la configuración de fábrica.
2: Todos los datos contenidos en la EEPROM se borrarán cuando está desactivada la protección de código.
3: Toda la Memoria de Programa, incluido el valor  OSCCAL, se borrará cuando está desactivada la protección de código.
4: Habilitar Brown-out Detect no habilita automáticamente Power-up Timer.
5: Cuando MCLR se declaró en los modos INTOSC o RC,  se deshabilita el reloj del oscilador interno.
/: Indica 'negado' en el modo texto. 0 = habilitado, 1 = deshabilitado
*****

Ahora veamos bit a bit como llegar al punto de partida... el valor 0x31A1. Este valor hexadecimal se corresponde en binario con 11-000-110100-001 (los guiones son para mayor claridad), y consultando la tabla vemos que:
bandgap = 11 (Highest)
bits 11..9 = 000
/CPD = 1 (deshabilitado)
/CP = 1 (deshabilitado)
BODEN = 0 (deshabilitado)
MCLRE = 1 (funciona como MCLR)
/PWRTE = 0 (habilitado)
WDTE = 0 (deshabilitado)
FOSC2: FOSC0 = 001 (oscilador XT: cristal/resonador en OSC2 y OSC1)

¿y que pasaba con el valor 0x3FA1? Veamos este valor en binario: 11-111-110100-001 para apreciar que solo cambian los bits 11..9 cuyo valor siempre se lee como '0' y por tanto a efectos de configuración ambos valores proporcionan igual resultado.

Esta palabra de configuración de 14 bits se escribe durante el proceso de grabación del PIC y no se puede modificar durante la ejecución del programa. Ocupa la posición reservada de memoria 0x2007.

un saludo

xocas:

Configuraciones de oscilador

TIPOS DE OSCILADOR
El PIC12F629/675 puede funcionar en ocho modos diferentes de oscilador. El usuario puede programar tres bits de configuración (FOSC2:FOSC0) para seleccionar uno de estos ocho modos:
• LP - Cristal de Bajo Consumo
• XT - Cristal/Resonador
• HS - Cristal/Resonador de Alta Velocidad
• RC - Resistencia/Condensador Externa (2 modos)
• INTOSC - Oscilador Interno (2 modos)
• EC - Reloj Externo

OSCILADOR DE CRISTAL/RESONADOR CERÁMICO
En los modos XT, LP o HS un cristal/resonador cerámico se conecta a los pines OSC1 y OSC2 para establecer la oscilación (ver la Figura 9-1). El diseño de oscilador del PIC12F629/675 requiere el uso de un 'parallel cut crystal'. El uso de 'series cut crystal' (1) puede producir una frecuencia fuera de las especificaciones del fabricante del cristal. (1) la traducción más cercana que consigo: 'modo de resonancia paralelo o serie'
Cuando funciona en modo XT, LP o HS, el dispositivo puede tener una fuente de reloj externa en el pin OSC1 (ver la Figura 9-2).




 
Nota: una mayor capacidad aumenta la estabilidad del oscilador pero también aumenta el tiempo de puesta en marcha. Estos valores son una guía solamente. RS pueden requerirse en modo HS, así como modo XT para evitar sobrecargar el cristal. Dado que cada cristal tiene sus propias características, el usuario debe consultar con el fabricante del cristal para conocer los valores apropiados de los componentes externos.

RELOJ EXTERNO
Para aplicaciones donde un reloj está disponible ya en el circuito, podemos usarlo directamente con el pic12f629/675 a condición de que esta fuente de reloj externa cumpla las especificaciones de AC/DC listadas en la Sección 12.0
La figura 9-2 muestra como se debería configurar el circuito del reloj externo

OSCILADOR RC
Para aplicaciones donde no se necesite una temporización precisa, podemos usar la opción de oscilador RC. La operación y la funcionalidad del oscilador RC depende de varias variables. La frecuencia está en función de :
-Tensión de alimentación.
-Los valores de Resistencia (REXT) y Condensador (CEXT).
-La temperatura.
Se ha de tener presente también la tolerancia de R y C.
Dos opciones están disponibles para este modo de Oscilador, que permiten que GP4 sea usado como una entrada/salida (I/O) de propósito general o como una salida FOSC/4.



OSCILADOR 4 MHZ INTERNO
Cuando está calibrado, el oscilador interno proporciona un Reloj de sistema (nominal) de 4 MHz. Ver Especificaciones Eléctricas, en la Sección 12.0, para información sobre variación de voltaje y temperatura.
Dos opciones están disponibles para este modo de Oscilador que permiten que GP4 sea usado como I/O de propósito general o una salida FOSC/4.

Calibración del Oscilador Interno - Se tratará más adelante, junto con bandgap.

CLKOUT
Los dispositivos PIC12F629/675 se pueden configurar para proveer de una señal de reloj en los modos INTOSC y RC.
Cuando está configurado, se obtiene la frecuencia del oscilador dividida por cuatro (FOSC/4) en la salida del pin GP4/OSC2/CLKOUT. El FOSC/4 puede ser usado para test  o para sincronizar otra lógica.

para ampliar información:
http://www.huarpe.com/electronica/osc/oscilador-xtal.html
http://en.wikipedia.org/wiki/Crystal_oscillator#Resonance_modes
http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf

Navegación

[0] Índice de Mensajes

[#] Página Siguiente