Seccion 1- Teoria de Microcontroladores Nov-2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES SECCION 1 TEORIA GENERAL DE MICROCONTROLADORES Guía de Proyectos Microc

Views 100 Downloads 0 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

SECCION 1 TEORIA GENERAL DE MICROCONTROLADORES

Guía de Proyectos Microcontrolados By: Ing. Oscar J. Cabrales B. e-mail: [email protected] Colombia Cel: 310-7374112 Mat. Prof: NS 206-45262

1 de 94 Guía de Proyectos Microcontrolados Versión Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES PROBLEMA

OBJETIVOS ESPECIFICOS

La preparación de profesionales especializados en áreas relacionadas con la Electrónica Digital Microcontrolada es de gran importancia actual y futura para la región y el país. El sector industrial colombiano está abocado a una inminente competencia de calidad en el mercado nacional e internacional, lo cual exige una gran flexibilidad de adaptación y una calidad suficiente a costos competitivos. Estas condiciones sólo se logran con una gran dedicación de recursos humanos y económicos a la transferencia e incorporación de nuevas tecnologías en los lenguajes de programación que facilite y optimice los recursos de un microcontrolador en el desarrollo de proyectos en el sector productivo tales como robótica, visión artificial, control numérico, control digital, el control „adaptativo‟, la microelectrónica, la economía energética, la gestión de la producción, informática industrial, la telemática industrial, la gestión ambiental, etc.

METODOLOGIA Los cursos se desarrollarán a través de clases teóricas fundamentales acompañadas de prácticas como proyectos de aplicación en los temas que lo requieran. Elaboración de prototipos, maquetas, y montaje de circuitos en protoboard, sustentación y verificación de las prácticas de laboratorios.

Impartir información básica relevante a la Electrónica Digital, unificar criterios fundamentales previos a la incursión en el mundo de los microcontroladores. Introducir al estudiante en las técnicas de interfaz de periféricos avanzados, diseño optimizado de desarrollo tecnológico con circuitos digitales microcontrolados según las características del fabricante. Desarrollar habilidades en la programación estructurada de la familia 18F de microchip, respetando la sintaxis y estructura de un código para microcontroladores.

BIBLIOGRAFIA MICROELECTRONIC CIRCUITS. Adel. S. Sedra & K. C. Smith. Editorial OXFORD UNINERSITY PREES Diseño Electrónico. Circuitos y sistemas. Savant, Roden y Carpenter. 2ª. Edition. Addison Wesley App Notes de Microchip (www.microchip.com) Tutorial PIC Basic profesional Tutorial MPLAB IDE versión 7.1 de Microchip Data sheet microcontroladores microchip

OBJETIVO GENERAL Desarrollar habilidades en la programación de microcontroladores microchip de la gama alta mediante la aplicación del programa LPM2 y el versátil software de simulación avanzada Proteus Profesional.

2 de 94 Guía de Proyectos Microcontrolados Versión Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

INDICE SECCION 1

PÁG

REFLEXIONES

5

LA MAGIA DE PENSAR EN GRANDE LA LEY DE MURPHY (léase merfi) PARA INGENIEROS ELECTRÓNICOS

7

TEORÍA GENERAL DE MICROCONTROLADORES

10

RESEÑA HISTÓRICA DE MICROPROCESADORES Y MICROCONTROLADORES

10

DISEÑO DE SISTEMAS CON MICROPROCESADOR

13

INTRODUCCIÓN A LOS MICROCONTROLADORES

14

DIFERENCIA ENTRE MICROPROCESADOR Y MICROCONTROLADOR

14

VENTAJAS DEL MICROCONTROLADOR Vs MICROPROCESADOR µC Vs µP

16

VENTAJAS DEL MICROPROCESADOR Vs MICROCONTROLADOR µP Vs µC

16

CONTROLADOR Y MICROCONTROLADOR

17

APLICACIONES DE LOS MICROCONTROLADORES

18

EL MERCADO DE LOS MICROCONTROLADORES

18

¿QUÉ MICROCONTROLADOR EMPLEAR?

19

VENTAJAS DE LOS MICROCONTROLADORES PIC MICROCHIP Vs OTROS FABRICANTES

20

RECURSOS COMUNES A TODOS LOS MICROCONTROLADORES

22

RECURSOS ESPECIALES DE LOS MICROCONTROLADORES

25

LAS GAMAS DE PIC

29

LA GAMA ENANA: PIC12CXXX DE 8 PINES CON INSTRUCCIONES DE 12 /14 BIT

29

GAMA BAJA O BÁSICA: PIC16C5X CON INSTRUCCIONES DE 12 BITS

30

GAMA MEDIA. PIC16FXXX CON INSTRUCCIONES DE 14 BITS

31

GAMA ALTA: PIC17CXXX, PIC18FXXXX CON INSTRUCCIONES DE 16 BITS

32

COMPARACION ENTRE GAMA ALTA (18F) Y LAS OTRAS GAMAS DE MICROCHIP (16XXXX, 14XXXX, 12XXXX)

32

VENTAJAS DE GAMA ALTA Vs GAMA MEDIA (18F) Vs (16F)

34

GENERALIDADES DE LOS PIC

36

ARQUITECTURA DE MICROPROCESADORES

36

CLASES DE CPU‟S (UNIDAD CENTRAL DE PROCESAMIENTO)

37

ARQUITECTURA, CPU Y CARACTERISTICAS FUNCIONALES DEL PIC

38

HERRAMIENTAS PARA EL DESARROLLO DE APLICACIONES MICROCONTROLADAS CON PIC

40

CONCEPTOS DE PROGRAMACIÓN DE MICROCONTROLADORES

41

CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

43

MACRO DE ASSEMBLER

43

ARGUMENTOS O PARAMETROS

43

DECLARACION DE UNA MACRO

43

SUBRUTINAS O PROCEDIMIENTO

43

SUBRUTINAS ANIDADAS

44

FUNCION

44

INSTRUCCIÓN, COMANDO O NMEMÓNICO

44

ETIQUETA (LABEL

44

VARIABLE (GPR): (GENERAL PURPOSE REGISTER) (REGISTRO DE PROPOSITO GENERAL)

44

8

3 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES REGISTRO (FILE) (SFR) (SPECIAL FUNCTION REGISTER) (REGISTRO DE PROPOSITO ESPECIAL

44

CONSTANTE

44

VARIABLE (REGISTRO):

44

BANDERA (FLAG) DEL PROGRAMA

44

CONTADOR (COUNTER)

45

LIBRERÍA DE SUBRUTINAS

45

SINTAXIS DE PROGRAMACIÓN DIRECTIVA DE ASSEMBLER

45 45

TECNICA POLLING (SONDEO DE ENTRADAS

45

INTERRUPCIONES (INT) INTERNAS Y EXTERNAS

46

INTERRUPCIONES VECTORIZADAS PRIORIDAD DE INTERRUPCIONES (High or Low Priority) (léase jai or lou praióriri)

46

MAIN PROGRAM (PROGRAMA PRINCIPAL (léase mein program)

47

BANCOS DE MEMORIA (MEMORY BANK)

47

SET DE INSTRUCCIONES DE LA FAMILIA 18F (INSTRUCTIONS SET)

47

CICLO DE MAQUINA

47

MEMORIAS DE UN MICROCONTROLADOR PIC

48

MEMORIA ROM: (MEMORIA DE SOLO LECTURA)

48

MEMORIA DE PROGRAMA EEPROM FLASH (MEMORIA DE INSTRUCCIONES)

48

MEMORIA DE DATO EEPROM

48

MEMORIA DE DATO RAM-S PARA USUARIO, (REGISTROS DE PROPOSITO GENERAL GPR)

48

MEMORIA DE DATO RAM-S PARA CONFIGURACION INTERNA DEL MICROCONTROLADOR

48

MEMORIA DE PILA RAM-S: (STACK MEMORY)

49

GLOSARIO TÉCNICO DE ELECTRÓNICA DIGITAL

50

CODIGO ASCII STANDARD (CÓDIGOS 0 – 127)

71

CODIGO ASCII EXTENDIDO (CÓDIGOS 128 – 255)

71

SOFTWARE Y HARDWARE PARA EL DESARROLLO DE PROYECTOS MICROCONTROLADOS

72

HERRAMIENTAS Y MATERIALES

73

ELEMENTOS Y DISPOSITIVOS ELECTRÓNICOS

73

DISPOSITIVOS DE SENSORICA

76

PROVEEDORES DE DISPOSITIVOS ELECTRÓNICOS

80

PAGINAS WEB RECOMENDADAS

82

BIBLIOGRAFIA RECOMENDADA

84

47

4 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

REFLEXIONES Para que un sueño se haga realidad, sólo hace falta un soñador (Walt Disney) Si lo puedes imaginar... Lo puedes hacer (Albert einstein). Calidad es satisfacer necesidades y brindar confianza Muchas veces la cantidad conspira contra la calidad. La intención es la compañera activa de la atención, es la manera de convertir procesos automáticos en procesos conscientes. (Dipak Chopra) La única diferenca entre una persona rica y una pobre es lo que hacen en su tiempo libre. (Robert Kiyosaky) El unico tiempo que existe es aquel del cual somos conscientes (Dipak Chopra) Si le das un pedazo de queso a un ratón, luego querrá un vaso de leche. En la vida debemos soportar lo que oportunamente no pudimos evitar. Información es todo aquello que reduce el umbral de incertidumbre. El 99% de tus miedos no se realizarán Felicidad es una manifestación externa de un sentimiento interno de nuestras vidas. Es la condición interior de un buen corazón. Felicidad es una vida que consiste no en tener muchas cosas, sino en estar contento con lo que uno tiene. Nadie tiene el monopolio de la razon ni la exclusividad de la mentira. Los ricos construyen redes (Robert Kiyosaky) Libertad es tener opciones (Robert Kiyosaky) Hay que ser fuerte, no rudo ni mandon (Robert Kiyosaky) El que te hieran no te da derecho a ser cruel El problema de los sueños es la realidad Busque una manera de materializar sus sueños La diferencia entre una persona rica y una persona pobre está en sus palabras, y sus palabra se convierten en sus ideas. (Robert Kiyosaky) Entre a más personas logras darles lo que ellas quieren, más ellos te daran lo que tu quieres (Robert Kiyosaky) No aceptes un empleo por lo que puedes ganar sino por lo que puedes aprender (Robert Kiyosaky) Los orientales represental en vocablo crisis con un ideograma compuesto: peligro + oportunidad Un ser humano considera que hay un problema cuando una situacion es diferente a como considera que debe ser, así que muchas veces solo es necesario cambiar la concepción de la situación y el problema desaparecerá. El cambiar las expectativas depende de nosotros pues somos quienes las hemos creado. No es la realidad en si misma lo que determina que exista un problema, es la forma en que la persona percibe dicha realidad. La forma como usted interpreta la realidad, es su realidad. Nuestras creencias son Autojustificadoras, cuando creemos algo nos inventamos la forma de comprobarlo. Querer + creer = poder Mientras perseguimos lo inalcanzable hacemos imposible lo realizable (robert agree) Un paradigma es la manera en que usted ve al mundo Es importante enseñar lo que aprendemos pues de esta forma tenemos una motivacion social Hábito es el encuentro entre el conocimiento (qué hacer), la capacidad (cómo hacer) y la actitud (porqué hacer, querer hacer, motivación) Dialéctica es el arte de dialogar, argumentar y discutir.

5 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES Retórica es el arte del bien decir, de dar al lenguaje escrito o hablado eficacia bastante para deleitar, persuadir o conmover. A veces se gana y a veces se aprende... porque experiencia es lo que se adquiere cuando no se consigue lo que se busca. Para saber el valor de un semestre pregúntale a un estudiante que reprobó el examen final. Para saber el valor de un mes pregúntale a una madre que ha dado a luz prematuramente. Para saber el valor de una hora pregúntale a los amantes que esperan verse.

6 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

LA MAGIA DE PENSAR EN GRANDE 1. Mantente fresco cuando otros estén furiosos y pierdan la cabeza. Tú tienes el control sobre tus emociones, no lo pierdas. No se trata de no demostrar tu molestia, sino de hacerlo mesuradamente, sin después arrepentirte de una acción cometida en un momento de descontrol. 2. Recuerda que cada discusión tiene al menos tres puntos de vista: el tuyo, el del otro y los de terceros, los cuales probablemente están más cerca de la objetividad. Siendo más versátil y viendo las cosas desde la perspectiva de los demás enriquecerás tu propio punto de vista. 3. Espera a calmarte antes de hablar. Ten en cuenta que la relación es más importante que la discusión. Dále más relevancia a las personas que a las opiniones. 4. Trata a toda persona con la cual tengas contacto como si fuera un pariente rico, de quien esperas ser incluido en su testamento. Nunca te arrepientas de tratar muy bien a la gente. Es el mejor negocio en todos los sentidos. 5. Busca el lado positivo y agradable, aun de las situaciones más complicadas y dolorosas. Es una disciplina que te ayudará a pasar más fácilmente los momentos difíciles, y a convertir los problemas en oportunidades. 6. Establece el hábito de hacer preguntas y, sobre todo, de escuchar las respuestas. Pregunta antes de reaccionar. Algunas veces disparamos y después preguntamos. También preguntamos, pero escuchamos para contestar, y no para tratar de entender. 7. No hagas o digas nada que pueda herir o hacerle daño a otra persona. Aférrate al proverbio que dice que todo lo que uno haga, se devolverá. La gente no recuerda tanto lo que tú dices o haces, sino la intención con la que lo haces. 8. Sé consciente de la diferencia entre análisis amigable y crítica destructiva. Observa si el propósito de tus palabras es ayudar, desahogarte o hacer daño. 9. Ten presente que si toleras a los demás, ellos también serán pacientes contigo en los aspectos no muy gratos de tu personalidad. 10. El verdadero líder sabe reconocer sus errores y aceptar responsabilidad. No olvides que un conflicto bien manejado fortalece la relación, y te ayuda a aprender de las diferencias. El pensamiento positivo es una disciplina que, ejercitada con constancia, te dará el poder de cambiar tu entorno y, por consiguiente, tu vida.

7 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

LA LEY DE MURPHY (léase merfi) PARA INGENIEROS ELECTRÓNICOS Prácticamente todo en nuestra vida está bajo la influencia de la ley de Edsel Murphy. Su estudio es tan importante, que se la incluye en los cursos de oficiales militares, astronautas, pilotos, etc. La electrónica no escapa a la influencia de esta peculiar ley. Solo con un profundo dominio de sus principios, estará preparado para enfrentar los imprevistos. Y aunque no podrá evitar que “ciertas cosas” ocurran, al menos estará prevenido, sabrá por que ocurren, aprenderá aceptarlas y tal vez, solo tal vez, logrará reducir sus efectos. La ley básica de Murphy es: Si algo puede ir mal, irá... He aquí algunos enunciados de la ley de Murphy (o atribuidos a él), especialmente aplicados al campo de la electrónica. PROYECTO Y DISEÑO En todo presupuesto el costo final excederá el gasto previsto por un factor de 3. Si el modelo de prueba funciona perfectamente, el producto terminado jamás. En un cálculo matemático, todo error que pueda filtrarse, lo hará. Y será en el sentido que más daño haga en el cálculo. En cualquier cálculo dado, la cifra que obviamente es la correcta, será la raíz del error. Las valores siempre se indicarán en los términos menos usuales. Por ejemplo potencia en WPMPO, etc. Las tolerancias se acumularán unidireccionalmente hacia la máxima dificultad del proyecto. La probabilidad de omisión de un valor en un diagrama, es directamente proporcional a su importancia. Las especificaciones de los fabricantes sobre el rendimiento se deben multiplicar por un factor igual a 0,5. En especificaciones, la Ley de Murphy anula la ley de Ohm. ENSAMBLADO Si un proyecto requiere de "n" componentes, la disponibilidad será de "n-1". Las partes intercambiables no lo serán. Partes que no deberán ni podrán ser armadas indebidamente, lo serán. La pieza más delicada, siempre se caerá. El manual de armado y/u operación se botará con el material de embalaje. El recolector habrá pasado 5 minutos antes su carrera al depósito de basura. La necesidad de una modificación de diseño de mayor entidad aumenta a medida de irse completando el armado y cableado de la unidad. Un componente seleccionado al azar de un grupo con una confiabilidad del 99%, pertenecerá al 1%. La disponibilidad de un componente es inversamente proporcional a su necesidad. De necesitarse una resistencia (o condensador) de determinado valor, no se encontrará. Más aún, no se podrá lograr mediante ninguna combinación serie o paralelo. Todo cable cortado a la medida será demasiado corto. Si los cables se pueden conectar de dos o más formas diferentes, la primera de ellas es la que causa más daños. Los miliamperímetros serán conectados en paralelo, y los voltímetros en serie con la fuente de poder. PRUEBAS Componentes idénticos probados bajo condiciones idénticas no lo serán en la prueba final, después de haber sido armado el equipo. Un oscilador auto-oscilante, no lo será. Un oscilador controlado por cristal oscilará en una frecuencia distinta; si oscila. Un circuito amplificador atenuara la señal de entrada. Un transistor PNP se revelará como NPN. Un circuito de seguridad destruirá otros. Si un circuito no puede fallar, fallará. Un circuito costoso protegido por un fusible instantáneo, protegerá al fusible, quemándose primero.

8 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 TEORÍA GENERAL DE MICROCONTROLADORES

REPARACIONES Una vez quitado el último de los 20 tornillos de la tapa, para revisar el fusible, se descubrirá que el cable de alimentación estaba desconectado. Una vez colocado el último de los 20 tornillos de la tapa; encontrara debajo del diagrama, el fusible que quitó para revisar. La probabilidad de que determinado componente sea la causa del problema aumenta en forma proporcional a la dificultad para reemplazarlo y a su precio; e inversamente a su disponibilidad. Si puede localizar la pieza dañada, no tendrá herramientas para sacarla. Cuando logre sacarla, en la tienda de repuestos le dirán que no la tienen, pero que está pedida. Cuando por fin la consiga, descubrirá que no estaba dañada y no necesitaba cambiarla. Si un trabajo se ha hecho mal, todo lo que haga para mejorarlo sólo lo empeorara. Cualquier pieza al caer rodará al rincón menos accesible del taller. La facilidad de localización de una pieza que ha caído al suelo es directamente proporcional a su tamaño e inversamente a su importancia para la terminación del trabajo. Una herramienta caerá siempre donde pueda hacer mayor daño. (También conocida como "Ley de la Gravedad Selectiva".) Si tiene que comprobar, uno por uno, cierta cantidad de componentes de un circuito para localizar el que está defectuoso; ese será el ultimo de todos, sin importar el orden en que realice la comprobación. Si es necesario retocar un ajuste, será el menos accesible. De ser necesario el manual de servicio, no estará disponible. Si dispone del manual de servicio, no lo necesitará. Si consigue una fotocopia del diagrama, el problema se encuentra en la parte que quedo borrosa. Los trabajos urgentísimos, y muy bien pagados, sólo llegan cuando usted ha aceptado un trabajo urgentísimo, pero mal pagado. CLIENTES El cliente que paga menos es el que más se queja. El cliente que llama todos los días para preguntar si esta reparado su aparato, tardara 3 semanas en pasar a recogerlo cuando esté terminado. Si hay dos maneras de pronunciar el nombre de un cliente, usted lo pronunciará de la que no es. No importa cuanto les cobre, si no es gratis, siempre les parecerá caro. El 50% de los usuarios de aparatos electrónicos solo lee las instrucciones después de haber estropeado el equipo con su uso indebido, el otro 50% ni aun así las lee. GENERALIDADES En un instrumento o dispositivo caracterizado por una cierta cantidad de errores en más y en menos, el error total será la suma de cada uno, sumados en el mismo sentido. La probabilidad de un error tal en un circuito es directamente proporcional al daño que puede causar. En todo error dado, la culpa nunca podrá ser determinada si más de una persona ha estado involucrada. Cuando un error ha sido descubierto y corregido, se descubrirá que estaba bien desde el principio. Si usted es el cliente, una garantía de sesenta días es la promesa de que el aparato dejara de funcionar el día sexagésimo primero. Si usted es el responsable de la garantía, el aparato dejara de funcionar mucho antes. CONCLUSION Si algo puede ir mal, irá ! ....y será en el peor momento. Si dos cosas pueden salir mal, ocurrirán al mismo tiempo.

9 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

TEORÍA GENERAL DE MICROCONTROLADORES RESEÑA HISTÓRICA DE MICROPROCESADORES Y MICROCONTROLADORES A partir de 1971, el panorama de la electrónica cambio radicalmente con la aparición del microprocesador. Vendría la época de oro del Z-80, el 8085, el 6800 y otros microprocesadores utilizados como elementos centrales en aparatos de control y se consolidarían las técnicas de integración, el estudio de las memorias, la programación en lenguaje de maquina y la adaptación de periféricos de todo tipo. En 1980, aproximadamente, los fabricantes de circuitos integrados dieron a conocer un nuevo chip llamado microcontrolador, el cual contenía toda la estructura de un microcomputador, es decir, unidad central de proceso (CPU), memoria RAM, memoria ROM y circuitos entrada salida. Este se concibió como un dispositivo programable que puede ejecutar un sin numero de tareas y procesos. Desde este momento, el diseño de productos electrónicos cambió radicalmente. Circuitos lógicos, manejo de periféricos, temporizadores y estructura de computadores, todo programable y alojado en un solo integrado, es decir, un pequeño computador para todas las aplicaciones. La compañía estadounidense INTEL (inteligente) es la compañía pionera en el campo de fabricación de microprocesadores (uP), seguida de la compañía AMD (Advanced Micro Device). LA LEY DE MOORE: El doctor GORDON MOORE uno de los fundadores de INTEL CORPORATION, formuló en el año 1965: “El número de transistores contenidos en un microprocesador se duplica más o menos cada 18 meses”. Esto implica que otros aspectos tales como velocidad de procesador, memoria RAM y disco duro se comportarán con una dinámica similar.

EVOLUCION CRONOLÓGICA DE LOS MICROPROCESADORES Fecha

Fabric ante

uP

# Byte Memo ria de Prog

Frec MHz

# Bit del bus de memo ria de prog

Comentario

15/Nov/197 1

INTEL

4004

640B

0.1

4

Primer μP del mundo con 1800 transistores se desarrolló la calculadora BUSICOM,

1/Ab/1972

INTEL

8008

16KB

0.2

8

3500 transistores, fue el antecedente del procesador que sirvió de base para el primer computador personal en el año 1974 llamado ALTAIR.

1973

INTEL

8080

64kB

2

8

10 veces más potente que el 8008. 6200 transistores, fue el corazón del primer computador personal en el año 1974 llamado ALTAIR. Costaba $400 dólares de la época, 64KB de memoria de programa, 2MHz de velocidad. En unos meses se vendieron decenas de miles de unidades. Microsoft (Bill Gates y Paul Allen) crearon el BASIC para este computador en 1975.

1973

MOTO ROLA

6800

1975

INTEL

8085

1975

ZILOG

Z80

1975

MOTO ROLA

6809

Motorola: Sonido en movimiento. Empresa japonesa, escogida por MAKINTOSH Y APPLES para sus PC.

10 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA Junio/1978

INTEL

8086

1MB

5,8, 10M Hz

16

Fue el corazón del IBM PC,el gigante azul que acaparó la venta de computadores personales en el mundo. 29000 transistores con la tecnología de 3 micras

1978

MOTO ROLA

68000

Junio/1979

INTEL

8088

1MB

5,8, 10M Hz

8

Igual al 8086 pero con bus de 8 bit para hacerlos más económico

1979

ZILOG

Z800

1979

MOTO ROLA

68010

1979

MOTO ROLA

68020

1979

MOTO ROLA

68030

1979

MOTO ROLA

68040

1980

INTEL

80186

1980

ZILOG

Z8000

1980

MOTO ROLA

68020

1/Feb/1982

INTEL

80286

1GB

8,10 , 12 MHz

16

Introduce el concepto de memoria virtual, 134000 transistores con la tecnología de 1.5 micras. Con este μP otras empresas se animaron a competir con IBM (Internacional Business Machine) (negocio internacional de máquinas) creando otras marcas de PC. Se aproxima a 15 millones los PC vendidos en el mundo con este procesador.

17/Oct/1985

INTEL

80386DX

4GB

33 MHz

32

275000 transistores. Se incrementa la velocidad y capacidad reprocesamiento por el bus de 32 bit

1988

INTEL

80386SX

4GB

33 MHz

16

Sacrifican el bus de 32 bit del 80386DX para hacerlo más comercial en costos. Este μP es famoso por popularizar el entorno gráfico y sistema operativo Windows que no había calado mucho con las versiones anteriores de uP.

10/Ab/1989

INTEL

80486DX

4GB

50 MHz

32

Incorpora la memoria caché de nivel 1 (L1) en el propio chip, lo que acelera la transferencia de información, incluye un co-procesador matemático en el propio chip. Se sobrepasa el millón de transistores usando la tecnología de 0.8 micra. Aparecen los juegos de computadora y entornos gráficos en lugar de comandos con el antiguos sistema operativo MS-DOS (Sistema operativo de disco de Microsoft)

Ab/1991

INTEL

80486SX

4GB

50

32

Igual al anterior pero eliminaron el co-

μC 8048 (INTEL) PRIMER MICROCONTROLADOR

1980

11 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA MHz

procesador matemático dentro del microprocesador para reducir costos y hacerlo más comercial.

1993

INTEL

Pentium P5

4GB

60200 MHz

32

INTEL se ve obligado a poner nombre a sus μP porque otras empresas estaban fabricando μP y utilizaban los mismos números de serie que Intel. Popularizaron Windows 95

27/Mar/1995

INTEL

Pentium MMX

4GB

233 MHz

64

Versión de Pentium Pro para el mercado doméstico. La tecnología MMX está compuesta de 57 nuevas instrucciones y 4 tipos de datos nuevos que realizan de forma optimizado trabajos cíclicos en procesos de comprensión de vídeo, audio y gráficos.

27/Mar/1995

INTEL

Pentium Pro

4GB

150233 MHz

64

Mejora los servidores de red para empresas, Internet, tecnología de 0.32 micras capaz de incluir 5.5 millones de transistores, velocidad de memoria caché mejorada con un segundo chip interno en el uP

27/Mar/1995

INTEL

Pentium II

4GB

233, 266, 300 MHz

64

Combina lo mejor de Pentium pro y Pentium MMX

27/Mar/1995

INTEL

Pentium II

4GB

233, 266, 300 MHz

64

Combina lo mejor de Pentium pro y Pentium MMX

INTEL

Pentium III

INTEL

Pentium IV

INTEL

PIV D DOUBLE CORE

INTEL

PIV QUAD CORE

12 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

DISEÑO DE SISTEMAS CON MICROPROCESADOR Antes de existir el microcontrolador, se utilizaban para control los sistemas con microprocesador, el cual necesitaba varios elementos externos para llevar a cabo sus funciones. Cuando se hace un diseño de este tipo se utilizan varios módulos: 

Microprocesador (CPU o Unidad Central de Proceso). Es el encargado de controlar el sistema, ejecuta las funciones escritas en la memoria de programa.



Memorias ROM (Memoria de solo lectura). Se utilizan para almacenar el programa y no pierden la información aunque se retire la alimentación del sistema.



Memorias RAM (Memoria de acceso aleatorio). Se utilizan para guardar datos temporales durante la ejecución del programa. estas memorias se conocen como memorias volátiles por que pierden la información al retirarle la alimentación al sistema. Decodificadores de direcciones. Sirve para acceder correctamente a las memorias y a los dispositivos periféricos del microprocesador.



El proceso de diseño involucra los siguientes pasos:    

Selección de los circuitos. Diseño del mapa de memoria. Diseño del decodificador de direcciones. Montaje del circuito y programación

Si consideramos la estructura del microcontrolador, se puede ver que cumple con los requerimientos descritos anteriormente.

13 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

INTRODUCCIÓN A LOS MICROCONTROLADORES Los microcontroladores están conquistando el mundo. Están presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los teléfonos, en los hornos microondas y los televisores de nuestro hogar. Pero la invasión acaba de comenzar y el siglo XXI es testigo de la conquista masiva de estos diminutos computadores, que gobernarán la mayor parte de los aparatos que fabricaremos y usamos los humanos. “El Microcontrolador es un circuito integrado programable que contiene todos los elementos necesarios para controlar un sistema” El desarrollo de cada nuevo dispositivo electrónico trae consigo técnicas de diseños diferentes, por lo general más simples. En los anos 70, para construir un reloj digital se necesitaba acoplar un gran número de circuitos lógicos como contadores, divisores, decodificadores y redes combinatorias. Hoy en día es común encontrar microcontroladores en las cafeteras, hornos microondas, videograbadoras, alarmas automóviles, etc. Las aplicaciones son infinitas, el único límite es la imaginación. La posibilidad de manejar señales de entrada y salida, así como su capacidad para procesar datos y tomar decisiones, lo convierten en uno de los elementos más versátiles que existen actualmente.

DIFERENCIA ENTRE MICROPROCESADOR Y MICROCONTROLADOR MICROPROCESADOR: es un circuito integrado que contiene la Unidad Central de Proceso (CPU), también llamada procesador, de un computador. La CPU está formada por la Unidad de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta. Los pines de un microprocesador sacan al exterior las líneas de sus buses de direcciones, datos y control, para permitir conectarle con la Memoria y los Módulos de E/S y configurar un computador implementado por varios circuitos integrados. Se dice que un microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la aplicación a la que se destine. (Figura 1.1.)

Figura 1.1. Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el exterior permite que se configure a la medida de la aplicación.

14 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA Si sólo se dispusiese de un modelo de microcontrolador, éste debería tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciación supondría en muchos casos un despilfarro. En la práctica cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Es posible seleccionar la capacidad de las memorias, el número de líneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño es la selección del microcontrolador a utilizar.

Figura 1.2.

El microcontrolador es un sistema cerrado. Todas las partes del computador están contenidas en su interior y sólo salen al exterior las líneas que gobiernan los periféricos.

15 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

VENTAJAS DEL MICROCONTROLADOR Vs MICROPROCESADOR µC Vs µP Como se puede ver, existen algunas ventajas importantes cuando se realiza el diseño de un circuito utilizando un microcontrolador: 1.

El circuito impreso es mucho más pequeño ya que muchos componentes se encuentran dentro el circuito integrado.

2.

El costo de sistema total es mucho menor, al reducir el número de componentes.

3.

El consumo de potencia total es mucho menor (Stand By).

4.

Los problemas de ruido que pueden afectar el bus de comunicación externo de los sistemas con microprocesador se eliminan, debido a que todo el sistema principal se encuentra en un solo encapsulado.

5.

El tiempo de desarrollo de un sistema se reduce notablemente.

6.

Sistema Robusto: al estar todo el sistema en su solo chip puede funcionar en ambientes inhóspitos de alta temperatura, vibración, etc.

VENTAJAS DEL MICROPROCESADOR Vs MICROCONTROLADOR µP Vs µC 1. Mayor velocidad de ejecución y procesamiento. (GHz) 2. Se pueden implementar programas de mayor complejidad de procesamiento (MATLAB). 3. Las aplicaciones tienen una mejor interfaz gráfica hombre – máquina (Sistemas SCADA) 4. Mayor memoria RAM (GBytes) 5. Mayor memoria EEPROM (disco duro GBytes) 6. Facilidad de programación y edición de código fuente (Lenguajes gráficos y de alto nivel)

16 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

CONTROLADOR Y MICROCONTROLADOR Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno dispone de un sensor que mide constantemente su temperatura interna y, cuando traspasa los límites prefijados, genera las señales adecuadas que accionan los efectores que intentan llevar el valor de la temperatura dentro del rango estipulado. Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación física ha variado frecuentemente. Hace tres décadas, los controladores se construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han podido incluir en un chip, el cual recibe el nombre de microcontrolador. 

MICROCONTROLADOR: Realmente consiste en un sencillo pero completo computador contenido en el corazón (chip) de un circuito integrado.



MICROCONTROLADOR: Es un circuito integrado de alta escala de integración que incorpora la mayor parte de los elementos que configuran un controlador. UN MICROCONTROLADOR DISPONE NORMALMENTE DE LOS SIGUIENTES COMPONENTES

1. Procesador o μP (CPU - Unidad Central de Proceso). 2. Memoria RAM para Contener los datos. 3. Memoria para el programa tipo ROM/PROM/EPROM. 4. Líneas de E/S para comunicarse con el exterior. 5. Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.). 6. Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema. LOS PRODUCTOS QUE PARA SU REGULACIÓN INCORPORAN UN MICROCONTROLADOR DISPONEN DE LAS SIGUIENTES VENTAJAS 1. Aumento de prestaciones: un mayor control sobre un determinado elemento representa una mejora considerable en el mismo. 2. Aumento de la fiabilidad: al reemplazar el microcontrolador por un elevado número de elementos disminuye el riesgo de averías y se precisan menos ajustes. 3. Reducción del tamaño en el producto acabado: La integración del microcontrolador en un chip disminuye el volumen, la mano de obra. 4. Mayor flexibilidad: las características de control están programadas por lo que su modificación sólo necesita cambios en el programa de instrucciones. El microcontrolador es en definitiva un circuito integrado que incluye todos los componentes de un computador. Debido a su reducido tamaño es posible montar el controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de controlador empotrado (embedded controller).

17 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

APLICACIONES DE LOS MICROCONTROLADORES Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y disminuir el consumo. Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo determinado producidas en una semana. Este dato puede dar una idea de la masiva utilización de estos componentes. Los microcontroladores están siendo empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores, computadoras, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones con las que seguramente no estaremos tan familiarizados como instrumentación electrónica, control de sistemas en una nave espacial, etc. Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.

EL MERCADO DE LOS MICROCONTROLADORES Aunque en el mercado de la microinformática la mayor atención la acaparan los desarrollos de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por cada uno de aquéllos. Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante sea entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer. La razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran mayoría de las aplicaciones, lo que hace absurdo emplear micros más potentes y consecuentemente más caros. Uno de los sectores que más tira del mercado del microcontrolador es el mercado automovilístico. De hecho, algunas de las familias de microcontroladores actuales se desarrollaron pensando en este sector, siendo modificadas posteriormente para adaptarse a sistemas más genéricos. El mercado del automóvil es además uno de los más exigentes: los componentes electrónicos deben operar bajo condiciones extremas de vibraciones, choques, ruido, etc. Y seguir siendo fiables. El fallo de cualquier componente en un automóvil puede ser el origen de un accidente. En cuanto a las técnicas de fabricación, cabe decir que prácticamente la totalidad de los microcontroladores actuales se fabrican con tecnología CMOS (Complementary Metal Oxide Semiconductor). Esta tecnología supera a las técnicas anteriores por su bajo consumo y alta inmunidad al ruido. Pese a estar diseñados con tecnología CMOS, los uC no son vulnerables a las descargas electrostásticas (ESD) pues sus terminales están protegidos por diodos zener. La distribución de las ventas según su aplicación es la siguiente:      

Una tercera parte se absorbe en las aplicaciones relacionadas con los computadores y sus periféricos. La cuarta parte se utiliza en las aplicaciones de consumo (electrodomésticos, juegos, TV, vídeo, etc.) El 16% de las ventas mundiales se destinó al área de las comunicaciones. Otro 16% fue empleado en aplicaciones industriales. El resto de los microcontroladores vendidos en el mundo, aproximadamente un 10% fueron adquiridos por las industrias de automoción. Hasta el año 2007 la empresa Microchip es pionera en el mundo en el número de microcontroladores vendidos.

También los modernos microcontroladores de 32 bits van afianzando sus posiciones en el mercado, siendo las áreas de más interés el procesamiento de imágenes, las comunicaciones, las aplicaciones militares, los procesos industriales y el control de los dispositivos de almacenamiento masivo de datos.

18 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

¿QUÉ MICROCONTROLADOR EMPLEAR? Al seleccionar un microcontrolador para un diseño concreto hay que tener en cuenta multitud de factores, como la documentación y herramientas de desarrollo disponibles y su precio, la cantidad de fabricantes que lo producen y por supuesto las características del microcontrolador (tipo de memoria de programa, número de temporizadores, interrupciones, etc.): COSTO: Como es lógico, los fabricantes de microcontroladores compiten duramente para vender sus productos. Y no les va demasiado mal ya que sin hacer demasiado ruido venden 10 veces más microcontroladores que microprocesadores. Para que nos hagamos una idea, para el fabricante que usa el microcontrolador en su producto una diferencia de precio en el microcontrolador de algunos pesos es importante (el consumidor deberá pagar además el coste del empaquetado, el de los otros componentes, el diseño del hardware y el desarrollo del software). Si el fabricante desea reducir costes debe tener en cuenta las herramientas de apoyo con que va a contar: emuladores, simuladores, ensambladores, compiladores, etc. Es habitual que muchos de ellos siempre se decanten por microcontroladores pertenecientes a una única familia. APLICACIÓN. Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de la aplicación: PROCESAMIENTO DE DATOS: puede ser necesario que el microcontrolador realice cálculos críticos en un tiempo limitado. En ese caso debemos asegurarnos de seleccionar un dispositivo suficientemente rápido para ello. Por otro lado, habrá que tener en cuenta la precisión de los datos a manejar: si no es suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores de 16 ó 32 bits, o incluso a hardware de coma flotante. Una alternativa más barata y quizá suficiente es usar librerías para manejar los datos de alta precisión. – ENTRADA SALIDA: para determinar las necesidades de Entrada/Salida del sistema es conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea sencillo identificar la cantidad y tipo de señales a controlar. Una vez realizado este análisis puede ser necesario añadir periféricos hardware externos o cambiar a otro microcontrolador más adecuado a ese sistema. CONSUMO: algunos productos que incorporan microcontroladores están alimentados con baterías y su funcionamiento puede ser tan vital como activar una alarma antirrobo. Lo más conveniente en un caso como éste puede ser que el microcontrolador esté en estado de bajo consumo pero que despierte ante la activación de una señal (una interrupción) y ejecute el programa adecuado para procesarla. MEMORIA: para detectar las necesidades de memoria de nuestra aplicación debemos separarla en memoria volátil (RAM), memoria no volátil (ROM, EEPROM, etc.) y memoria no volátil modificable (EEPROM). Este último tipo de memoria puede ser útil para incluir información específica de la aplicación como un número de serie o parámetros de calibración. El tipo de memoria a emplear vendrá determinado por el volumen de ventas previsto del producto: de menor a mayor volumen será conveniente emplear EEPROM, OTP y ROM. En cuanto a la cantidad de memoria necesaria puede ser imprescindible realizar una versión preliminar, aunque sea en pseudo-código, de la aplicación y a partir de ella hacer una estimación de cuánta memoria volátil y no volátil es necesaria y si es conveniente disponer de memoria no volátil modificable. ANCHO DE PALABRA COMANDO O INSTRUCCION (WIDE INSTRUCTIONS): el criterio de diseño debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicación. Usar un microcontrolador de 4 bits supondrá una reducción en los costos importante, mientras que uno de 8 bits puede ser el más adecuado si el ancho de los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su relativo alto costo deben reservarse para aplicaciones que

19 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA requieran sus altas prestaciones (Entrada/Salida potente o espacio de direccionamiento muy elevado). DISEÑO DE LA PLACA: la selección de un microcontrolador concreto condicionará el diseño de la placa de circuitos. Debe tenerse en cuenta que quizá usar un microcontrolador de gama baja incremente el precio del resto de componentes del diseño. Por ejemplo si se requiere un conversor análogo digital entonces es preferible comprar un uC con dicha función en lugar de implementarlo externamente. LOS MICROCONTROLADORES MÁS POPULARES SE ENCUENTRAN, SIN DUDA, ENTRE LAS MEJORES ELECCIONES: 8048 (Intel). Es el padre de los microcontroladores actuales, el primero de todos. Su precio, disponibilidad y herramientas de desarrollo hacen que todavía sea muy popular. 8051 (Intel, ATMEL y otros). Es sin duda el microcontrolador más popular. Fácil de programar, pero potente. Está bien documentado y posee cientos de variantes e incontables herramientas de desarrollo. 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los populares microprocesadores 8086 y 8088. Su principal ventaja es que permiten aprovechar las herramientas de desarrollo para PC. 68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente y popular con gran cantidad de variantes. 683xx 68HC908 (Motorola). Surgido a partir de la popular familia 68k, a la que se incorporan algunos periféricos. Son microcontroladores de altísimas prestaciones. PIC 12XXX, 16FXXX, 17XXX, 18FXXX (MICROCHIP). Familia de microcontroladores que gana popularidad día a día. Fueron los primeros microcontroladores RISC.

VENTAJAS DE LOS MICROCONTROLADORES PIC MICROCHIP Vs OTROS FABRICANTES ¿Qué es lo que ocurre con los PIC?, ¿Por qué están en boca de todos?. Hemos buscado en multitud de bibliografía y realmente nadie da una respuesta concreta, pero una aproximación a la realidad puede ser esta: Los PIC tienen “ángel”, tienen “algo” que fascina a los diseñadores, puede ser la velocidad, el precio, la facilidad de uso, la información, las herramientas de apoyo... . Quizás un poco de todo eso es lo que produce esa imagen de sencillez y utilidad. Para las aplicaciones más habituales (casi un 90%) la elección de una versión adecuada de PIC es la mejor solución; sin embargo, dado su carácter general, otras familias de microcontroladores son más eficaces en aplicaciones específicas, especialmente si en ellas predomina una característica concreta, que puede estar muy desarrollada en otra familia. Los detalles más importantes que vuelven atraen a los profesionales de la microelectrónica y microinformática y las razones de la excelente acogida que tienen los PIC son los siguientes: Sencillez de manejo: Tienen un juego de instrucciones reducido; 33 gama baja, 35 en la gama media, 75 gama alta. Buena información, fácil de conseguir y económica. Precio: Su coste es comparativamente inferior al de sus competidores. Poseen una elevada velocidad de funcionamiento. Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código compacto, etc. Herramientas de desarrollo fáciles y baratas. Muchas herramientas software se pueden recoger libremente a través de Internet desde Microchip (http://www.microchip.com). Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC. Diseño rápido.

20 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicación. Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo. Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes. La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el más conveniente para su proyecto. Herramientas de soporte potentes y económicas. La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intérpretes y Compiladores BASIC, etc. La arquitectura Harvard y la técnica de segmentación son los principales recursos en los que se apoya el elevado rendimiento que caracteriza estos dispositivos programables, mejorando dos características esenciales: 1. Velocidad de ejecución. 2. Eficiencia en la compactación del código. Líneas de E/S de alta corriente. Las líneas de E/S de los PIC pueden proporcionar o absorber una corriente de salida de hasta 25 mA, capaz de excitar directamente ciertos periféricos como led o microrelés tipo REED.

21 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

RECURSOS COMUNES A TODOS LOS MICROCONTROLADORES Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y sus características básicas son muy parecidas. Todos deben disponer de los bloques esenciales Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar los recursos más idóneos para las aplicaciones a las que se destinan preferentemente. En este apartado se hace un recorrido de todos los recursos que se hallan en todos los microcontroladores describiendo las diversas alternativas y opciones que pueden encontrarse según el modelo seleccionado.

ARQUITECTURA BÁSICA: Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de von Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control). La arquitectura Harvard dispone de dos memorias independientes una, que contiene sólo instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias.

Figura 1.3. La arquitectura Harvard dispone de dos memorias independientes para datos y para instrucciones, permitiendo accesos simultáneos.

EL PROCESADOR O CPU: Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software. Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado. MEMORIA: En los microcontroladores la memoria de instrucciones o programa y la memoria de datos RAM está integrada en el propio chip. Una parte debe ser no volátil, tipo PROM ó EEPROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos. Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales: 1. No existen sistemas de almacenamiento masivo como disco duro o disquetes. 2. Como el microcontrolador sólo se destina a una tarea en la memoria de programa, sólo hay que

22 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA almacenar un único programa de trabajo (no es multitarea como windows, linux u otro sistema operativo). RAM STATICA: La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la EEPROM de programa. Los usuarios de computadores personales están habituados a manejar Megabytes Y GigaBytes de memoria, pero, los diseñadores con microcontroladores trabajan con capacidades de memoria de programa EEPROM comprendidas entre 512 bytes y 32 k bytes y de RAM comprendidas entre 20 y 1536 bytes aproximadamente. TIPOS DE MEMORIA DE PROGRAMA EN LOS MICROCONTROLADORES: Según el tipo de memoria de programa que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de memoria de programa no volátil que se pueden encontrar en los microcontroladores del mercado. 1. ROM CON MÁSCARA: Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades. 2. OTP: El microcontrolador contiene una memoria no volátil de sólo lectura “programable una sola vez” por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido. 3. UV-EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico. 4. EEPROM: Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan “grabadores en circuito” que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta. Por ejemplo el PIC 16C84. 5. EEPROM FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados “In Circuit”, es decir, sin tener que retirar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto. Entre los Microcontroladores de este tipo se puede mencionar el 16F84, 16F628, 18F452.

23 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

PUERTOS DE ENTRADA / SALIDA (Input / Output): La principal utilidad de los pines que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. Se conocen como puerto A,B,C,D,E. RELOJ PRINCIPAL: Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero también implica un incremento del consumo de energía. Algunos μC (18F2550 por ejemplo) disponen de oscilador interno programable desde 31KHz hasta 8 MHz, es decir, no se requiere comprar cristal, la desventaja es que no suelen ser tan preciso como un cristal externo.

24 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

RECURSOS ESPECIALES DE LOS MICROCONTROLADORES Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software.

LOS PRINCIPALES RECURSOS ESPECÍFICOS QUE INCORPORAN LOS MICROCONTROLADORES SON 1. TEMPORIZADORES O “TIMERS”: Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de los pines del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. 2. PERRO GUARDIÁN “WATCHDOG TIMER” WDT: Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continua las 24 horas del día. El Perro guardián consiste en un temporizador (2 ms hasta 131 seg dependiendo del PIC) que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema. Se debe diseñar el programa que controla la tarea de forma que refresque o inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se bloquea, no se refrescará al Perro guardián y, al completar su temporización, provocará el reset. 3. ESTADO DE REPOSO O BAJO CONSUMO SLEEP, STAND BY O POWER SAVING”: Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada a que se produzca algún acontecimiento externo que le active de nuevo en funcionamiento (interrupción). Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo en el cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj u oscilador principal y se “congelan” sus circuitos asociados, quedando sumido en un profundo “sueño” el microcontrolador. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. En este estado el uC consume menos de 200nA y sólo despertará (wake up) mediante una interrupción externa. El modo sleep es muy necesario en aplicaciones que se alimentarán a partir de baterías. 4. PROTECCIÓN ANTE FALLO DE ALIMENTACIÓN O “BROWN OUT RESET” BOR: Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo (“brown out”). Mientras el voltaje de alimentación sea inferior al de brown out el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Útil Para aplicaciones que funcionarán con baterías, cuando la batería esté baja de carga el PIC no funcionará por protección. 5. RESET DE ENCENDIDO (“POWER ON RESET”) POR: Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación. 6. TEMPORIZACION DE ENCENDIDO (“POWER UP TIMER”) PWRT: Es una opción para que el μC espere un tiempo (aproximadamente 75mS) antes de empezar a ejecutar instrucciones después de alimentar el PIC. Es útil para evitar funcionamientos erráticos del μC por ruido o rebotes al conectar la alimentación.

25 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA 7. CÓDIGO DE PROTECCIÓN (CODE PROTECT) CP: Cuando se procede a realizar la grabación del programa mediante el hardware cargador (loadder code), el PIC puede protegerse para evitar su lectura. También disponen los PIC de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc. 8. INTERRUPCION MEDIANTE PINES EXTERNOS: Los pines de interrupción externa constituye uno de los aspectos más importantes en un microcontrolador pues ofrece la posibilidad de interactuar de una manera óptima con periféricos externos de entrada tales como: teclados de computadora, receptores IR, RF, USB, teclados, pulsadores, etc. Los pines de interrupción externa más comunes son RB0, RB1, RB2, RB4, RB5, RB6, RB7 para gama alta. 9. PRIORIDAD DE INTERRUPCIONES: PRIORITY INTERRUPTIONS (LÉASE PRAIÓRIRI INTERROPSHIONS): La gama alta permite programar prioridad LOW OR HIGH a cada interrupción dependiendo de la importancia y urgencia en el circuito y/o aplicación. 10. INTERRUPCIONES VECTORIZADAS: Algunos μC poseen una dirección única (vector de interrupción independiente) para cada evento de interrupción, esto optimiza el tiempo en detección y facilita el manejo de cada interrupción. Los μC microchip no disponen de esta opción, sin embargo, algunos μC motorola si permiten dicha función. 11. PULL UP (léase pul ap)/ PULL DOWN (léase pul daun) INTERNO: Los μC PIC tiene Pull UP interno en el puerto B (B0 a B7), no disponen de pull down. La resistencia interna de Pull UP es alrededor de 3KΩ. El puerto B del PIC es el único que tiene la opción de Pull UP interno, es decir, por software se puede garantizar que el PIC interpretará como 1 lógico todas los pines del puerto B configurados como entrada y que estén al aire (input float). Esto es práctico cuando se debe conectar pulsadores o teclados matriciales a un μC y no se desea comprar resistores externos de PULL UP. Los microcontroladores son fabricados con tecnología CMOS (Complementary Metal Oxide Semiconductor) lo cual implica que tienen alta impedancia de entrada (sus entradas requieren muy baja corriente, en el orden de μA), si una entrada se deja al aire (input float) el μC lo interpretará como ruido (debido al ruido electromagnético EMI presente en el ambiente o efecto antena y se puede inducir una tensión fantasma en los pines de entrada que estén flotando). Pull UP EXTERNO: es una resistencia externa que se conecta de una entrada del microcontrolador hacia +VCC. Un PULL DOWN es lo mismo pero conectada hacia tierra. La función de estas resistencias (del orden 1KΩ a 100KΩ) es garantizarle un estado a los pines al aire o input float (léase input flout) del PIC configurados como entrada. 12. CAPACIDAD DE CORRIENTE: MODO SINK (IOL ), MODO SOURCE (IOH) : Para la gama media y alta de microchip, la corriente máxima de salida en modo sink (sumidero) o “cero lógico” es de 25 mA y la corriente máxima de salida en modo source (fuente) o “uno lógico” es de 25 mA. Este aspecto es de singular importancia pues indica la potencia que puede transmitir el PIC a los periféricos de salida tales como Relés, Led, Motores, etc. EL ABANICO DE ENTRADA Y SALIDA (Fan In / Fan Out) de un Circuito integrado está relacionado con las impedancias de entrada y salida del mismo. Las corrientes en un PIC alimentado a 5V son: IOL = 25mA (modo sink o sumidero léase sink) corriente de salida en 0 lógico IOH = 25mA (modo source o fuente leáse soors) corriente de salida en 1 lógico IIL = 1μA (Corriente de entrada en cero lógico) IIH = 1μA (Corriente de entrada en uno lógico) Considerando que un led (diodo emisor de luz) requiere para encender una tensión de 2V mínimo y una corriente entre 5 a 50 mA, se puede afirmar que un PIC puede encender directamente hasta 5 led por un solo terminal. Obviamente si la carga requiere más corriente (un relé convencional exige 30mA aproximadamente) se debe conectar un buffer (impulsador de corriente) o un transistor en emisor o colector común. Por ser un dispositivo construido con tecnología CMOS (Complementary Metal Oxide semiconductor) los PIC presentan una alta impedancia de entrada, esto implica que la corriente de entrada por cada pin está en el orden de los microamperios, es decir, se puede aplicar a un μC la salida directa de cualquier sensor sin necesidad de una etapa previa de acondicionamiento de corriente (amplificador seguidor de voltaje o buffer amplificador de corriente). 13. CONVERSOR A/D (CAD): Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital)

26 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA pueden procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde los pines del circuito integrado. La familia 16F87X y 18FXX2 disponen de un conversor A/D de 8 canales a 10 bit de resolución y la familia 18FXXXX disponen de un conversor A/D de 13 canales a 10 bit de resolución. 14. CONVERSOR D/A (DAC): Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de los pines de la cápsula. No todos los μC traen esta opción en su interior. Los PIC‟s gama enana, baja, media y alta no disponen de esta opción. 15. COMPARADOR ANALÓGICO: Algunos modelos de microcontroladores (16F62X) disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de los pines de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores. 16. PUERTAS DE ENTRADA/SALIDA E/S DIGITALES: Todos los microcontroladores destinan algunas de sus pines a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertas. Las líneas digitales de las Puertas pueden configurarse como Entrada o como Salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración. 2

17. PUERTAS DE COMUNICACIÓN USART, I C, PARALELO, SPI, USB: Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: 

UART (UNIVERSAL ASYNCRONOUS RECEPTION TRANSMISION).



USART (UNIVERSAL SYNCRONOUS ASYNCRONOUS RECEPTION TRANSMISION).

 PARALLEL PORT :Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores. 

USB (Universal Serial Bus), que es un moderno bus serie para los PC de ala velocidad.

 Bus I C (INTERFAZ DE CIRCUITOS INTEGRADOS), que es un interfaz serie de dos hilos desarrollado por Philips. 2

 CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. En EE.UU. se usa el J185O. 

SPI: Interfaz de Periféricos Serial



MSSP: Master Synchronous Serial Port

18. PROGRAMMING™ (ICSP™) VIA TWO PINS: Reprogramación in Circuit, es decir, no es necesario retirar el PIC del circuito, pues los datos se cargan a la memoria de programa mediante el puerto serial UART RS232 Tx y Rx. 19. DEPURACIÓN DEL PROGRAMA IN CIRCUIT: IN-CIRCUIT DEBUG (ICD) VIA TWO PINS: La gama alta permite realizar (mediante un hardware específico) una depuración (debugger= delete bug = eliminar cucarachas o bichos) de un código fuente. Esta depuración se realiza con la PC conectada en tiempo real, el programa se irá ejecutando línea por línea en el editor (MPLAB SIMULATOR) y en el circuito hardware mediante el puerto serial RS232 del PIC y del PC. 20. HARDWARE MULTIPLICADOR CON UNA INSTRUCCION: 8 X 8 SINGLE-CYCLE HARDWARE

27 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA MULTIPLIER: La gama alta incluye una instrucción (MULLW) para multiplicar 1 byte x 1 byte y ofrece la respuesta en 2 bytes. 21. MODULOS CAPTURA COMPARACION PWM CCP: Captura una trama de datos serial y luego la compara con registros internos, útil en aplicaciones de sensores ultrasónicos. El módulo PWM (PULSE WIDE MODULATION) son circuitos que proporcionan en su salida pulsos de ciclo útil (tiempo en „1‟ lógico) variable y periodo constante, que se ofrecen al exterior a través de los pines del encapsulado. Suelen emplearse para el control de velocidad de motores de DC y Servomotores. 22. LEVEL STACK (NIVELES DE PILA) (LÉASE LEVOeL SSTeAK): La pila (Stack) es una zona de memoria RAM independiente de la memoria de datos y de la memoria de programa del μC. Su estructura es del tipo LIFO (Last In First Out) por lo que el último dato que se guarda es el primero que sale. La pila se carga con cada instrucción CALL o con la generación de una interrupción, se descarga con cada instrucción RETURN o RETFIE. Cuando el diseñador realiza más de 31 llamados de subrutina (CALL léase coll) sin regresar (sin uso del RETURN léase ruitorn) el puntero de pila (STACK POINTER) se desborda y se presenta el fenómeno denominado OVERFLOW STACK (desbordamiento de pila léase overflou ssteak), lo cual es un error de programación pues el puntero de programa (Pointer Program) salta a un lugar inesperado. Lo deseable en un μC es que disponga de una gran memoria de pila independiente de la memoria de datos. 23. MEMORIA EEPROM DE DATO: Es una memoria relativamente pequeña (64 a 256 bytes) en la cual se pueden guardar los datos del programador y no se pierden incluso al desconectar la alimentación del circuito. 24. LOW VOLTAGE DETECT (LVD): Detecta si un voltaje aplicado al uC es menor de un nivel programado. Es útil para detectar si la batería de alimentación está agotada. 25. SELECCIÓN DE OSCILADOR: Dependiendo de la frecuencia natural del cristal, se debe seleccionar el modo de oscilación y los condensadores de estabilización. En gama alta 18FXX2 si se desea una frecuencia superior a 25MHz, se debe activar el modo PLL (phase locked loop) multiplicador de frecuencia del cristal por 4. Por ejemplo, para trabajar a 40MHz (frecuencia máxima de la familia 18FXX2) lo correcto es conectar un cristal de 10MHz con condensadores de 27pF y activar el circuito PLL del μC. La frecuencia máxima de la familia 16F87X es 20MHz y la frecuencia máxima de la familia 18FXXXX es 48MHz. La familia 18FXXXX tiene la opción de trabajar con un oscilador interno configurable desde 31KHz hasta 8MHz. El oscilador de la familia 18FXXXX se puede configurar de las siguientes maneras: 1. XT : CRYSTAL/RESONATOR 2. XTPLL : CRYSTAL/RESONATOR WITH PLL ENABLED 3. HS : HIGH-SPEED CRYSTAL/RESONATOR 4. HSPLL HIGH-SPEED CRYSTAL/RESONATOR WITH PLL ENABLED 5. EC EXTERNAL CLOCK WITH FOSC/4 OUTPUT 6. ECIO EXTERNAL CLOCK WITH I/O ON RA6 7. ECPLL EXTERNAL CLOCK WITH PLL ENABLED AND FOSC/4 OUTPUT ON RA6 8. ECPIO EXTERNAL CLOCK WITH PLL ENABLED, I/O ON RA6 9. INTHS INTERNAL OSC USED AS MICROCONTROLLER CK SOURCE, HS OSC USED AS USB CK SOURCE 10. INTXT INTERNAL OSC USED AS MICROCONTROLLER CLOCK SOURCE, XT OSC USED AS USB CK SOURCE 11. INTIO INTERNAL OSC USED AS MICRO CK SOURCE, EC OSC USED AS USB CK SOURCE, DIGITAL I/O ON RA6 12. INTCKO INT OSC USED AS MICRO CK SOURCE, EC OSC USED AS USB CK SOURCE, FOSC/4 OUTPUT ON RA6

28 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

LAS GAMAS DE PIC Una de las labores más importantes del ingeniero de diseño es la elección del microcontrolador que mejor satisfaga las necesidades del proyecto con el mínimo presupuesto. Para resolver aplicaciones sencillas se precisan pocos recursos, en cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo esta filosofía Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros complejos y más costosos para las de mucha envergadura. Microchip dispone de cuatro familias de microcontroladores de 8 bits para adaptarse a las necesidades de la mayoría de los clientes potenciales. En la mayor parte de la bibliografía encontrará tan solo tres familias de microcontroladores, con lo que habrán despreciado la llamada gama enana, que es en realidad una subfamilia formada por componentes pertenecientes a las otras gamas. En nuestro caso hemos preferido comentarla dado que los PIC enanos son muy apreciados en las aplicaciones de control de personal, en sistemas de seguridad y en dispositivos de bajo consumo que gestionan receptores y transmisores de señales. Su pequeño tamaño los hace ideales en muchos proyectos donde esta cualidad es fundamental.

LA GAMA ENANA: PIC12CXXX DE 8 PINES CON INSTRUCCIONES DE 12 /14 BIT Su principal característica es su reducido tamaño, al disponer todos sus componentes de 8 pines. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente. En la Figura 2.1 se muestra el diagrama de conexionado de uno de estos PIC.

Figura 2.1. Diagrama de conexiones de los PIC12CXXX de la gama enana. Aunque los PIC enanos sólo tienen 8 pines, pueden destinar hasta 6 como líneas de E/S para los periféricos porque disponen de un oscilador interno R-C. En la Tabla 2.1 se presentan las principales características de los modelos de esta subfamilia, que el fabricante tiene la intención de potenciar en un futuro próximo. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamaño de las instrucciones de 12 bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos.

29 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA MODELO

PIC12C508 PIC12C509 PIC12C670 PIC12C671 PIC12C672 PIC12C680 PIC12C681

MEMORIA PROGRAM A 512x12 1024x12 512x14 1024x14 2048x14 512X12 FLASH 1024x14 FLASH

MEMORIA DATOS

FRECUENC LINEA IA MAXIMA S E/S

25x8 4 MHz 41x8 4 MHz 80x8 4 MHz 128x8 4 MHz 128x8 4 MHz 80x8 16x8 4 MHz EEPROM 80x8 16x8 4 MHz EEPROM

6 6 6 6 6 6 6

ADC TEMPORIZAD 8BIT ORES S TMR0 + WDT TMR0 + WDT TMR0 + WDT 2 TMR0 + WDT 4 TMR0 + WDT 4 TMR0 + WDT TMR0 + WDT

PINES

8 8 8 8 8 8 8

Tabla 2.1. Características de los modelos PIC12C(F)XXX de la gama enana.

GAMA BAJA O BÁSICA: PIC16C5X CON INSTRUCCIONES DE 12 BITS

Figura 2.2: Diagrama de pines de los PIC de la gama baja que responden a la nomenclatura PIC16C54/56. Se trata de una serie de PIC de recursos limitados, pero con una de la mejores relaciones coste/prestaciones. Sus versiones están encapsuladas con 18 y 28 pines y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits. No admiten ningún tipo de interrupción y la Pila sólo dispone de dos niveles.

Tabla 2.2. Características de los modelos PIC16C®5X de la gama baja

30 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA Para terminar el comentario importantes:

sobre los componentes de la gama baja conviene nombrar dos restricciones



La pila sólo dispone de dos niveles lo que supone no poder encadenar más de dos subrutinas.



Los microcontroladores de la gama baja no admiten interrupciones.

GAMA MEDIA. PIC16FXXX CON INSTRUCCIONES DE 14 BITS

Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 pines hasta 68, cubriendo varias opciones que integran abundantes periféricos. Dentro de esta gama se halla el «fabuloso PIC16X84» y sus variantes. El 16F877 y 16F84A son uno de los modelos más representativos de la gama media. En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. También dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento de subrutinas. En la Tabla 2.3 se presentan las principales características de los modelos de esta familia.

31 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA Tabla 2.3. Características relevantes de los modelos PIC16X8X de la gama media. Encuadrado en la gama media también se halla la versión PIC14C000, que soporta el diseño de controladores inteligentes para cargadores de baterías, pilas pequeñas, fuentes de alimentación ininterrumpibles y cualquier sistema de adquisición y procesamiento de señales que requiera gestión de la energía de alimentación. Los PIC 14C000 admiten cualquier tecnología de las baterías como Li-Ion, NiMH, ect, Ph y Zinc. El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que puede trabajar asíncronamente y que puede incrementarse aunque el microcontrolador se halle en el modo de reposo (“sleep”), posibilitando la implementación de un reloj en tiempo real. Las líneas de E/S presentan una carga “pull-up” activada por software.

GAMA ALTA: PIC17CXXX, PIC18FXXXX CON INSTRUCCIONES DE 16 BITS Se alcanzan hasta las 75 instrucciones de 16 bits (wide instructions o ancho de instrucción) en el repertorio y sus modelos (algunos de la serie 17CXXXX) disponen de un sistema de gestión de interrupciones vectorizadas (cada interrupción tiene una dirección única) y priorizadas (low or high priority) muy potente. También incluyen variados controladores de periféricos, puerto USB 2.0 de alta y baja velocidad, puertas de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza más de 32 KByte en la memoria de instrucciones y hasta 2048 bytes en la memoria de datos. Quizás la característica más destacable de los componentes de esta gama (17CXXX) es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Para este fin, los pines pueden ofrecer al exterior las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado número de pines comprendido entre 40 y 44. Esta filosofía de construcción del sistema es la que se empleaba en los microprocesadores y no suele ser una práctica habitual cuando se emplean microcontroladores.

COMPARACION ENTRE GAMA ALTA (18FXXXX) Y LAS OTRAS GAMAS DE MICROCHIP (16XXXX, 14XXXX, 12XXXX) (18FXXXX) Vs (16XXXX, 14XXXX, 12XXXX) Un PIC 18F452 dispone hasta de 32K bytes = 16KWord de memoria de programa y considerando que cada instrucción o renglón de programa consume 2 bytes (16 bit) entonces el número real de líneas que se puede programar en un PIC 18FXXXX es 16384 (la familia 16F87X sólo tiene 8164). La memoria RAM es de máximo 2048 bytes (la familia 16F87X sólo tiene 368), es decir, puedo declarar un total de 2048 variables de 8 bit ó 1024 variables de 16 bit las cuales se encuentran distribuidas en bancos de 256 variables cada uno. La memoria EEPROM de dato es de 256 bytes. Por otra parte cabe destacar que posee 31 niveles de pila (level stack) versus 8 niveles de pila de la familia gama media 16F87X. Recordemos que los niveles de pila aluden al número de subrutinas o llamados (CALL) anidados que se pueden realizar en la programación sin regresar (RETURN). Otra ventaja trascendental de la familia gama alta 18FXXXX sobre la gama media 16FXXX alude a la memoria de programa lineal direccionable hasta 32K de la familia 18FXXXX, lo cual elimina el gran inconveniente relacionado con la engorrosa paginación que se debe hacer con la familia gama media después de las 2048 primeras líneas de programa debido a que las instrucciones GOTO, CALL, RETURN no funcionan si la etiqueta o subrutina invocada no está en la misma página de memoria. La familia 18FXXXX tiene la opción de activar “Prioridad de Interrupciones” alta o baja (High priority or Low Priority), lo cual es útil en ciertas aplicaciones. Los μC 18FXXXX con la opción PLL (Phase Locked Loop) activa puede multiplicar la frecuencia del cristal por 4, en efecto, con un cristal de 10MHz y el PLL activo puede operar a 40MHz, lo cual implica 10MIPs (millones de instrucciones por segundo) versus los 20MHz máximo (5MIPs) de la gama media. La gama alta también puede multiplicar un byte por un byte con una instrucción simple (MULWF) y soporta compilación en lenguaje C.

32 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

33 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

VENTAJAS DE GAMA ALTA Vs GAMA MEDIA (18FXXXX) Vs (16FXXX) Un PIC 18FXXXX dispone de hata 32K bytes = 16KWord de memoria de programa y considerando que cada instrucción o renglón de programa consume 2 bytes (16 bit) entonces el número máximo y real de líneas que puedo programar en un PIC 18FXXXX es 16384 instrucciones (la familia 16F87X sólo soporta 8164 instrucciones de 14 bits). La memoria RAM máxima es de 2048 bytes para la familia 18FXXXX y 1536 para la familia 18FXX2 (la familia 16F87X sólo tiene 368), es decir, puedo declarar un total de 2048 variables de 8 bit ó 1024 variables de 16 bit (tipo word) las cuales se encuentran distribuidas en bancos de 256 variables cada uno. La memoria EEPROM de dato es de 256 bytes, igual a la gama media 16F87X. 31 niveles de pila (level stack) versus 8 niveles de pila de la familia gama media 16F87X y 2 niveles de la gama baja. Los niveles de pila aluden al número de subrutinas o llamados (CALL) anidados que se pueden realizar en la programación sin regresar (RETURN). La memoria de programa lineal direccionable hasta 32K: la familia 18FXXXX elimina el gran inconveniente relacionado con la paginación que se debe hacer con la familia gama media después de las 2048 primeras líneas de programa debido a que las instrucciones GOTO, CALL, RETURN no funcionan si la etiqueta o subrutina invocada no está en la misma página de memoria. La familia 18F tiene la opción de activar “Prioridad de Interrupciones” (léase praióriri interrupshions) alta o baja (High priority or Low Priority), lo cual es útil en ciertas aplicaciones. Los μC 18F con la opción PLL (Phase Locked Loop) activa puede multiplicar la frecuencia del cristal por 4, en efecto, con un cristal de 12MHz y el PLL activo puede operar a 48MHz, lo cual implica 12MIPs (millones de instrucciones por segundo) versus los 20MHz máximo (5MIPs) de la gama media. La máxima frecuencia de operación es de 48MHz para la familia 18FXXXX y 40 MHz para la familia 18FXX2. La gama alta puede multiplicar un byte por un byte con una instrucción simple (MULWF) La gama alta soporta compilación en lenguaje C de Microchip Pese a las obvias ventajas de la gama alta 18F sobre la gama media la diferencia de precios no es muy significativa, alrededor de un 20 %. La familia 18F amplió el set de instrucciones a 75, vs 35 de la gama media. La familia 18F mediante el registro BSR brinda la opción de prescindir del confuso concepto (para algunos programadores) de bancos de memoria para configurar o manipular los registros de propósito general (GPR) o registros de función especial (FSR), tiene memoria de dato lineal direccionable hasta 1536 byte. La familia PIC18F2455/2550/4455/4550 posee Módulo USB 2.0 low speed (1.5Mbps) y full speed (12Mbps) interno para comunicación con PC a alta velocidad. La familia PIC18F2455/2550/4455/4550 posee oscilador interno programable de 31KHz a 8MHz.

34 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

La familia PIC18F2455/2550/4455/4550 posee WDT con período extendido y programable de 41mS a 131 seg. La familia 18FXXXX tiene en su interior un módulo conversor A/D de hasta 13 canales, la familia 18FXX2 sólo tiene 8 canales, igual que la familia 16F87X.

35 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

GENERALIDADES DE LOS PIC La sigla PIC significa ”Peripheral Interface Controller” (Controlador de Interfaz de periféricos), aunque cabe mencionar que muchos usuarios prefieren interpretar PIC como “Programmable Integrated Circuit” (Circuito Integrado Programable). La expresión PIC es empleada para designar una amplia gama de microcontroladores de la empresa americana Microchip Technology (www.microchip.com), es decir, no sería apropiada la expresión “tengo un PIC MOTOROLA”, pues la expresión PIC es inherente a la empresa Microchip.

ARQUITECTURA DE MICROPROCESADORES ARQUITECTURA VON NEUMANN: propuesta por John Von Neumann, es la arquitectura tradicional de sistemas digitales programables. En este modelo la unidad central de procesamiento (CPU) está conectada a una memoria única que contiene las instrucciones del programa y los de datos. El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus de datos de la memoria exterior utilizada, que es de 8 bits. Un μP con un bus de 8 bit que lo conecta con la memoria deberá manejar datos e instrucciones de una o más unidades de 8 bit de longitud. Cuando deba acceder a una instrucción o dato de más de 1 byte (8bit) de longitud, deberá realizar más de un acceso a la memoria (lentitud del proceso). Por otro lado este bus único limita la velocidad de operación del microprocesador, ya que no se puede buscar en la memoria una nueva instrucción antes de que finalicen las transferencias de datos que pudieran resultar de la instrucción anterior. Los μC Motorola, Intel, Atmel emplean esta arquitectura en sus uP y uC. La principal ventaja de esta arquitectura es que simplifica la lógica interna del μP. Resumiendo las principales desventajas de la arquitectura Von Neumann son: 1. La longitud de las instrucciones está limitada por la unidad de longitud de los datos, por lo tanto el μP debe hace varios accesos a memoria para buscar instrucciones complejas (con longitud superior a 8 bit). 2. La velocidad de operación está limitada por el efecto cuello de botella que significa un único bus para datos e instrucciones, que impide superponer ambos tiempos de acceso.

ARQUITECTURA HARVARD: es la mejora de la arquitectura Von Neumann, su nombre obedece a la primera computadora que utilizó esta arquitectura. Se caracteriza por implementar dos memorias separadas con buses independientes para la memoria de instrucciones (memoria de programa) y para la memoria de datos (variables y constantes). Ambos buses son totalmente independientes y pueden ser de distintos anchos (Wide) (léase uaid), esto permite que la CPU pueda acceder de forma independiente y simultánea (mayor velocidad) a la memoria de datos y a la de instrucciones, consiguiendo que las instrucciones se ejecuten en menos ciclos de reloj. Resumiendo las principales ventajas de la arquitectura Harvard son: 1

2

El tamaño de las instrucciones no está relacionado con el de los datos y, por lo tanto, puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa. Así se logra una mayor velocidad y una menor longitud del programa. El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad de operación.

36 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

CLASES DE CPU‟S (UNIDAD CENTRAL DE PROCESAMIENTO) Las CPU‟s atendiendo al tipo de instrucciones que utilizan pueden clasificarse fundamentalmente en: CISC (Complex Instruction Set Computer): Son Procesadores con un juego de instrucciones complejo. Su repertorio o número de instrucciones es elevado (más de 90)y algunas de ellas son muy sofisticadas y potentes (ejemplo multiplicar, dividir) . Su problema es que requieren de muchos ciclos de reloj para ejecutar dichas instrucciones, haciendo lento rendimiento general del uP. Un ejemplo de estos μP son los empleados en los μC motorola gama media que tienen un repertorio de alrededor de 90 instrucciones (en contraste con los PIC que sólo tienen 35 la gama media y 75 la gama alta) y algunas son muy sofisticadas como DIV, MULT. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas y potentes que actúan como macros. RISC (Reduced Instruction Set Computer): Son μP con un repertorio o número de instrucciones reducido (ejemplo los PIC sólo usan 35 instrucciones para gama media y 75 para gama alta). Las instrucciones son muy simples y suelen ejecutarse en un ciclo de máquina. Los μP RISC suelen tener una estructura pipeline y ejecutar casi todas las instrucciones en el mismo tiempo (4 ciclos de reloj para los PIC). Los μP RISC representan un importante avance en el desarrollo de la arquitectura de los microcontroladores. MICROCHIP decidió diseñar sus μC PIC con procesadores RISC optimizado para ejecutar a muy alta velocidad un reducido número de instrucciones. Cuando se requieran instrucciones sofisticadas o potentes (dividir, multiplicar, etc) se logran ejecutando un conjunto de instrucciones disponibles en lugar de una única instrucción como en los μP CISC. Tanto la industria de los computadores comerciales como la de los microcontroladores están decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. SISC (Specific Instruction Set Computer): Poseen un juego de instrucciones específico para cada aplicación. Están destinados a aplicaciones muy concretas. En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es “específico”, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico).

37 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

ARQUITECTURA, CPU Y CARACTERISTICAS FUNCIONALES DEL PIC ARQUITECTURA HARVARD: Bus y memoria separado para memoria de programa (bus 16 hilos o Wide instructions = 16 bit para 18FXXXX, bus 14 hilos para 16FXXX) y bus y memoria separado para memoria de dato (bus de 8 hilos u ocho bit). Los PIC 12XXX, 16XXX, 18XXXX manejan una longitud de 8 bit para la memoria de datos. CPU TIPO RISC PROCESADOR SEGMENTADO O PIPELINE: realiza simultáneamente la ejecución de una instrucción y la búsqueda de código de la siguiente, de esta manera se puede ejecutar una instrucción en un ciclo. (recuerde que un ciclo de máquina equivale a 4 ciclos de reloj para un PIC). Es obvio que esta característica insufla alta velocidad de procesamiento al o μC. Se aplica la técnica de segmentación (“pipe-line”) en la ejecución de las instrucciones. La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo (un ciclo de instrucción equivale a cuatro ciclos de reloj). Las instrucciones de salto ocupan dos ciclos al no conocer la dirección de la siguiente instrucción hasta que no se haya completado la de bifurcación. ARQUITECTURA ORTOGONAL: en un μP con arquitectura ortogonal una instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino. Esto se evidencia en el uso del registro W (Work) para los PIC y el uso del registro A (acumulador) para los demás tipos de μC (Atmel, Motorola, Intel). Como consecuencia el PIC tiene una gran ventaja por tener arquitectura ortogonal y poder guardar el resultado de una operación aritmética en el registro de trabajo W o directamente en cualquier registro de la memoria de dato. Los demás μC siempre guardan el resultado de una operación ALU en el registro acumulador, teniendo que emplear otro comando o instrucción para pasarla a una variable de la memoria de dato, esto implica mayor demora o lentitud en el proceso. FORMATO DE INSTRUCCIONES – ANCHO DE INSTRUCCIONES (WIDE INSTRUCTIONS). El formato de todas las instrucciones es de la misma longitud. Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y 16bit los de la gama alta 18FXXXX. Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores. JUEGO DE INSTRUCCIONES DEL PIC: Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y 75 los de la alta. ARQUITECTURA BASADA EN UN “BANCO DE REGISTROS”: Esto significa que todos los objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria, etc.) están implementados físicamente como registros. MODOS DE DIRECCIONAMIENTO DE UN PIC: Los modos de direccionamiento aluden a las diferentes formas de acceder a la memoria de datos e instrucciones de un uP. 1. Direccionamiento Inmediato: El valor del dato inmediato (su valor como constante) lo contiene el mismo código de operación que, en la ejecución de la instrucción, se carga en el registro W para su posterior procesamiento. Por ejemplo: IORLW .5 2. Direccionamiento Directo: La dirección de memoria RAM se encuentra en el mismo código de operación. Por ejemplo: ADDWF VAR1. 3. Direccionamiento de Bit: Procesa datos de un bit. La dirección del dato es un bit. Por ejemplo:

38 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA BCF STATUS,RP0. 4. Direccionamiento Indexado: Utilizado para el manejo de tablas mediante la instrucción: ADDWF PCL,F. 5. Direccionamiento Indirecto: La dirección del dato se encuentra contenida en el registro INDF. Cada vez que se hace referencia éste, se utiliza el contenido del registro FSR para direccionar el operando. TIPOS DE DATOS DE UN MICROCONTROLADOR SEGÚN LA LONGITUD: 1. Bit: 1 ó 0 2. Nibble: 4 bit : 0 a 15 en decimal 3. Byte: 8 Bit: 2 Nibble : 0 a 255 en decimal 4. Word: 16 bit: 4 nibble: 2 Byte : 0 a 65535 en decimal 5. Double Word: 32 bit: 8 Nibble: 2 Byte: 2 Word : 0 a 4.294‟967.296 en decimal 6. ASCII: 7 bit Todas las variables en un PIC son tipo byte por naturaleza en lenguaje assembler, es decir, el máximo valor permitido es 255

39 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

HERRAMIENTAS PARA EL DESARROLLO DE APLICACIONES MICROCONTROLADAS CON PIC Uno de los factores que más importancia tiene a la hora de seleccionar un microcontrolador entre todos los demás es el soporte tanto software como hardware de que dispone. Un buen conjunto de herramientas de desarrollo puede ser decisivo en la elección, ya que pueden suponer una ayuda inestimable en el desarrollo del proyecto. Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores son: EDITOR DE ENSAMBLADOR: La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares. El editor de ensamblador que ofrece Microchip es el MPLAB IDE. COMPILADOR DE ALTO NIVEL: La programación en un lenguaje de alto nivel (como C, Basic, Pascal ó LPM2) permite disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el código resultante puede ser mucho más ineficiente que el programado en ensamblador. Las versiones más potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos (por ejemplo LPM2 y compilador en lenguaje C de Microchip). DEPURACIÓN (DEBUGGER IN CIRCUIT): debido a que los microcontroladores van a controlar dispositivos físicos, los desarrolladores necesitan herramientas que les permitan comprobar el buen funcionamiento del microcontrolador cuando es conectado al resto de circuitos. SIMULADOR (SIMULATOR): Son aplicativos software capaces de ejecutar en un PC programas realizados para el microcontrolador. Los simuladores permiten tener un control absoluto sobre la ejecución de un programa, siendo ideales para la depuración de los mismos. Su gran inconveniente es que es difícil simular la entrada y salida de datos del microcontrolador. Tampoco cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso, puesto que ahorraremos en grabaciones de chips para la prueba in-situ. Entre los simuladores más comunes está el MP SIM de Microchip y el ISIS Proteus. PLACAS DE EVALUACIÓN: Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir visualizadores LCD, teclados, LED‟s, fácil acceso a los pines de E/S, etc. El sistema operativo de la placa recibe el nombre de programa monitor. El programa monitor de algunas placas de evaluación, aparte de permitir cargar programas y datos en la memoria del microcontrolador, puede permitir en cualquier momento realizar ejecución paso a paso, monitorizar el estado del microcontrolador o modificar los valores almacenados los registros o en la memoria. EMULADORES IN CIRCUIT: Se trata de un instrumento que se coloca entre el PC anfitrión y el zócalo de la tarjeta de circuito impreso donde se alojará el microcontrolador definitivo. El programa es ejecutado desde el PC, pero para la tarjeta de aplicación es como si lo hiciese el mismo microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal y como luego sucederá cuando se conecte el uC real.

40 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

CONCEPTOS DE PROGRAMACIÓN DE MICROCONTROLADORES LENGUAJE DE MÁQUINA: El único lenguaje que entienden los μC es el formado por los ceros (0) y unos (1) del sistema binario. A este lenguaje se le denomina lenguaje de máquina. Los códigos de este lenguaje que forman las instrucciones se llaman códigos de máquina. Así por ejemplo, cuando el μC lee el código de máquina “11111000111010” está recibiendo la instrucción de suma 58 al registro de trabajo W y guarda el resultado en W. La codificación hexadecimal es una manera más comprensible de la codificación binaria, así por ejemplo, el código de máquina “11111000111010” se podría expresar en hexadecimal como 3E3A. LENGUAJE ENSAMBLADOR (ASSEMBLER LANGUAGE)(léase assembler languigs) LENGUAJE DE BAJO NIVEL: El lenguaje de máquina es difícil de utilizar por el hombre ya que se aleja de su forma natural de expresarse, por esto se utiliza el lenguaje ensamblador, que “es la forma de expresar las instrucciones de una manera más natural al hombre y que, sin embargo, es muy cercana al μC porque cada una de sus instrucciones corresponde con otra en código de máquina que el μC es capaz de interpretar”. El lenguaje ensamblador utiliza nemónicos (instruciones o comandos) (33 para la gama baja, 35 para la gama media y 75 para la gama alta) que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar con cada instrucción. Así por ejemplo, para ordenar al PIC: “suma 58 al registro de trabajo W y guarda el resultado en este mismo registro W”, en lenguaje ensamblador para gama media es “ADDLW .58” que es mucho más comprensible para un ser humano que el código de máquina “11111000111010” ó 3E3A en hexadecimal. La principal ventaja del lenguaje ensamblador no es precisamente su facilidad, por el contrario se han desarrollado lenguajes de alto nivel para obviar el uso de assembler, no obstante, el lenguaje assembler presenta dos importantes ventajas que son: 1. Optimización de Código: Si el usuario desarrolla destrezas en este tipo de programación entonces puede generar el código de mínimo tamaño en la memoria de programa, lo cual es muy importante al implementar programas largos y complejos en microcontroladores con escaza memoria de programa como gama baja y media de microchip. 2. Velocidad de Ejecución: Como consecuencia de la optimización de código, ejecuta un grupo o set de instrucciones con mayor rapidez. EDITOR DE ASSEMBLER (MPLAB IDE) (léase empilab) (LABORATORIO DE MICROCONTROLADORES PIC CON ENTORNO DE DESARROLLO INTEGRADO) (MPLAB INTEGRATED DEVELOPMENT ENVIROMENT). Es un programa editor de texto proporcionado por la empresa Microchip para el lenguaje ensamblador y LPM2 con algunas facilidades intrínsecas a la programación de μC tales como, orden de columnas, colores diferentes para etiquetas, instrucciones, directivas, etc. PROGRAMA ENSAMBLADOR (COMPILER ASSEMBLER) (MPASM ENSAMBLADOR DE MICROCHIP): Es un software que se encarga de traducir los nemónicos y símbolos alfanuméricos del programa escrito en ensamblador por el usuario a código de máquina comprensible para el μC. El programa escrito en lenguaje ensamblador recibe el nombre de código fuente, archivo fuente o fichero fuente. Suele tener la extensión *.asm. El archivo fuente debe ser traducido a código de máquina, de lo cual se encarga el programa ensamblador. La mayoría de los ensambladores proporcional a su salida un archivo que suele tener la extensión *.hex (hexadecimal) (Motorola emplea la extensión .s19). El ensamblador más utilizado por los μC microchip PIC es el MPASM que viene con el paquete MPLAB IDE. LENGUAJE DE ALTO NIVEL: Pese a que el lenguaje ensamblador es más comprensible que el lenguaje de máquina, aún representa dificultad en el momento de la programación por ser un lenguaje más cercano al μC o μP que al usuario humano. Debido a esto se crearon los lenguajes de alto nivel (nivel de los humanos) tales como: Basic, C, Turbo C, C++, PASCAL, FORTRAN, PROLOG, LPM2, etc.

41 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA PROGRAMAS COMPILADORES (COMPILER) DE ALTO NIVEL PARA MICROCONTROLADORES PIC: La empresa Microchip ofrece la posibilidad de trabaja microcontroladores PIC de la gama alta (18F) con lógica de C++, lo cual facilita y potencializa nuestras aplicaciones microcontroladas al brindar instrucciones automáticas para procesos complejos en assembler tales como: arreglos matriciales o vectoriales, operaciones con punto flotante, etc. Otras empresas también han desarrollado para vender programas de alto nivel para microcontroladores. CrownHill desarrolló el famoso PROTON PIC BASIC, el cual permite programar cualquier PIC con lógica de Basic, otras empresas (Microelectrónica) desarrollaron MicroBasic, MicroPascal, CPIC, LPM2, etc. Todos estos lenguajes de alto nivel para μC presentan la gran ventaja de ofrecer facilidad a los programadores, rapidez en el desarrollo de aplicaciones, potencialidad en las instrucciones (operaciones matemáticas complejas). Sin embargo suelen tener el inconveniente de generar un código muy largo (en comparación con assembler) para desarrollar alguna función específica lo cual implica que muchas veces las aplicaciones no se ejecuten con la máxima velocidad del μC. 2

PROGRAMACIÓN ESTRUCTURADA Y MODULAR POR MACROS LPM : El modelo de programación modular y estructurada por macros de assembler, compilado condicional de subrutinas optimizadas y gestor de interrupciones (handler of interruptions) (léase hándoel af interwraptions) automático de interrupciones es un software libre (freecode) que persigue proporcionar a programadores de microcontroladores PIC, expertos y/o novatos, herramientas prácticas y económicas que permitirán el desarrollo rápido, fácil, optimizado y funcional de aplicaciones electrónicas. Con la implementación de potentes macros y subrutinas de assembler, se ofrece una amplia gama de posibilidades a nivel de hardware y software que sin duda corroborará al desarrollo de innumerables proyectos. El sistema de programación modular está habilitado para los microcontroladores de la gama media y alta de la familia microchip:, tales como PIC18F452, 16F84A, 16F627A, 16F628A. La programación estructurada es un importante concepto en el diseño de proyectos. Se entiende como la división del programa principal en módulos o procedimientos que realizan una determinada tarea dentro del programa. La principal ventaja de la programación estructurada y modular por macros versus los lenguajes de programación de alto nivel convencionales (PIC Basic, Microbasic, compilador C, etc) radica en el control automático de interrupciones de periféricos externos e internos. 1. Simplifica el tiempo de desarrollo de cada parte del algoritmo por separado, permitiendo concentrar la atención en los detalles de la aplicación. 2. Produce códigos más fiables, fáciles de entender, documentar y modificar. 3. Control automático de interrupción de alta y baja prioridad lo cual potencializa las prestaciones del microcontrolador al poder atender simultáneos procesos y/o periféricos de hardware. 4. Proporciona al programador acceso al código fuente de las macros, librerías y subrutinas de assembler, lo cual ofrece la posibilidad de crear, editar o mejorar las funciones o macros 2 existentes de LPM . LOADER CODE (léase louder coud) (Cargador de código) : Es un hardware compuesto por muy pocos dispositivos electrónicos (JDM por ejemplo) que se conecta por el puerto paralelo, USB o serial y que descarga el código de máquina desde la PC hacia la memoria de programa del microcontrolador. BOOTLOADER (léase but louder) (Cargador De Arranque): Es un hardware que se conecta al puerto serial y que permite cargar el código de máquina desde una PC hacia la memoria del μC, la diferencia con un cargador de código convencional (JDM por ejemplo) es que la carga de datos se lleva a cabo por el puerto USART del μC (Tx y Rx) y no por los pines convencionales. Esto ofrece la ventaja de no tener necesidad de retirar el μC del circuito al cual está conectado (reprogramación In Circuit). Para que un BOOTLOADER pueda funcionar se requiere cargar un pequeño código previamente en la memoria de programa del PIC mediante el JDM por ejemplo. Esta opción la tiene la familia gama alta de microchip.

42 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA La programación estructurada es un importante concepto en el diseño de proyectos. Se entiende como la división del programa principal en módulos o procedimientos que realizan una determinada tarea dentro del programa y que se ejecutan secuencialmente, de forma preferentemente lineal y con una cantidad mínima de saltos entre ellos. La principal ventaja de la programación estructurada es: 1. Simplifica el tiempo de desarrollo de cada parte del algoritmo por separado, permitiendo concentrar la atención en los detalles de la aplicación. 2. Produce códigos más fiables, fáciles de entender, documentar y modificar. MACRO DE ASSEMBLER: Son una potente herramienta de ensamblador que facilita la elaboración de programas. Una macro consiste en una serie de instrucciones y directivas que se agrupan en una sola orden mayor de forma que se comporta como una única instrucción cuando es invocada. Suele utilizarse para automatizar el uso de grupos de instrucciones usadas con frecuencia. Las macros pueden aceptar argumentos, lo que las hace muy flexibles. Antes de que una macro pueda ser invocada en una línea del programa fuente como si se tratase de una instrucción, debe ser definida por el diseñador con una respectiva sintaxis. Una diferencia sustancial entre una macro y una subrutina o función, es que la macro al ser invocada “pega” en la memoria de programa el bloque de código que la conforma. Esto suele representar una desventaja con respecto a una subrutina en el sentido que las macros consumen mayor memoria de programa. ARGUMENTOS O PARAMETROS: Los Argumentos de una macro son los parámetros o datos de entrada que requiere dicha macro para procesar una función específica. DECLARACION DE UNA MACRO SUMFF

MACRO

ARG1, ARG2

MOVF

ARG1,W

ADDWF ENDM

ARG2,W

En el ejemplo anterior el nombre de la Macro es “SUMFF”, en realidad es cualquier etiqueta que quiera el programador, los argumentos son llamados ARG1, ARG2. La directiva MACRO Y ENDM definen el inicio y final de la Macro. Para este ejemplo en particular la macro SUMFF exige dos parámetros o argumentos de entrada los cuales deben ser dos variables (esto se deduce por el resto de instrucciones dentro de la macro). SUBRUTINAS O PROCEDIMIENTO: Algunas veces el mismo grupo de instrucciones es ejecutado en diferentes partes de un programa, para optimizar el tamaño de código generado en la memoria de programa, se recomienda agrupar dichas instrucciones en un formato llamado Subrutina o Procedimiento, de la siguiente manera: CLEAR_PORTS

CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE RETURN

Cada vez que en el programa se requiera limpiar los puertos (ponerlos en cero) sólamente se invoca la etiqueta de la subrutina mediante la instrucción CALL, ejemplo: CALL CLEAR_PORTS. Usualmente las subrutinas más requeridas se guardan en una librería. Las subrutinas de assembler no aceptan parámetros de entrada. Cuando una subrutina de assembler es invocada el valor del puntero de programa es guardado en la pila y el nuevo valor

43 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA del puntero de programa es la dirección de la etiqueta de la subrutina. Cuando el puntero de programa encuentra la instrucción RETURN entonces saca de la pila el último valor guardado y actualiza el puntero de programa de manera que la próxima instrucción a ejecutar corresponderá al siguiente renglón de la instrucción de llamada (CALL o evento de interrupción). SUBRUTINAS ANIDADAS: Cuando una subrutina llama a otra subrutina se produce la situación conocida como anidamiento de subrutinas, es decir, emplear la instrucción CALL repetidas veces sin que intervenga la instrucción RETURN. El nivel de anidamiento (número de anidamiento de subrutinas permitido) de cada microcontrolador se denomina level stack ó niveles de pila y varía dependiendo de la gama, por ejemplo para la gama baja es de 2 niveles, la gama media (16F84A, 16F877, etc) es de 8 niveles, para la gama alta es de 31 niveles. FUNCIÓN: Es una subrutina que recibe (parámetros o argumentos de entrada) y devuelve (parámetros o argumentos de salida), por ejemplo, una función llamada DIVISION podría recibir dos parámetros (dividendo y divisor) y puede devolver dos parámetros (cociente y residuo). Las macros son una especie de función, la diferencia es que las macros de assembler sólo aceptan parámetros de entrada. El lenguaje assembler para microcontroladores no tiene implementado el concepto de función. INSTRUCCIÓN, COMANDO O NMEMÓNICO: Es una palabra reservada (no puede cambiarse) que implica una orden dada al microcontrolador en un lenguaje determinado, por ejemplo, en programación C una instrucción o comando puede ser FOR, IF, WHILE, etc, en programación Assembler una instrucción o comando es MOVF, BCF, RETURN, CALL, etc. ETIQUETA (LABEL): Es una expresión compuesta por una palabra alfanumérica que designa a una subrutina o a un renglón del programa, dicha palabra es escogida por el diseñador y usualmente su 2 significado está relacionado con la función de la subrutina o sección de código donde se encuentra. En LPM las etiquetas son de color rojo carmesí y siempre están el la primera columna del editor. VARIABLE (GPR): (GENERAL PURPOSE REGISTER) (REGISTRO DE PROPOSITO GENERAL) Es un lugar de la memoria RAM de dato del microcontrolador en la cual pueden leerse o escribirse datos del programa de usuario. Antes de poder usar una variable es menester declararla previamente. Considerando que el PIC 18F452 tiene 1536 byte de memoria RAM de datos, entonces se pueden declarar hasta 1536 variables tipo byte (0 a 255) o 768 variables tipo Word (0 a 65535). Dependiendo del lenguaje de programación existen diversos tipos o formatos de variables: (FLOAT, INTEGER, LONG, DOUBLE, SINGLE, STRING, CHAR, BOOLEANA, BYTE, WORD, DOUBLE WORD, VARIANT, DATE, etc). REGISTRO (FILE) (SFR) (SPECIAL FUNCTION REGISTER) (REGISTRO DE PROPOSITO ESPECIAL): Técnicamente un registro es una variable, no obstante, suele emplearse el término registro para aludir a las posiciones de memoria RAM reservadas (uso específico) del microcontrolador. Por ejemplo, el PUERTO B del PIC puede verse como una variable en el sentido que puede leerse o escribirse en él, no obstante, es más apropiado considerarlo como un registro de propósito especial (SFR). CONSTANTE: Es una expresión que no cambia su valor en todo el código fuente de un programa. Puede tener tantos formatos como las variables. CONTADOR (COUNTER): Es una variable declarada por el usuario que contabiliza uno ó más eventos de un programa. Por ejemplo si se está diseñando una alarma y se desea que la sirena se active por 30 segundos y luego se apague, será necesario disponer de una variable (COUNTER) que inicie su cuenta en cero (Reset Counter) y que cada segundo (por interrupción del timer por ejemplo) incremente en uno su valor de tal forma que al compararse con el número 30 se ejecute la acción deseada.

44 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA LIBRERÍA DE SUBRUTINAS: Es frecuente necesitar más de una subrutina en los programas. También es habitual que algunas subrutinas se utilicen en varios programas. En estos casos es conveniente disponer de bibliotecas (library) de subrutinas denominadas librerías. El programa ensamblador de microchip MPASM dispone de una directiva denominada INCLUDE que realiza esta función pegando el archivo de referencia en el programa. Dicho archivo se inserta en el código durante el proceso de ensamblado. Ejemplo: #INCLUDE librerías.inc SINTAXIS DE PROGRAMACIÓN: Alude al orden de las palabras (comandos, instrucciones, argumentos, etiquetas, subrutinas, funciones) en un lenguaje de programación. DIRECTIVA DE ASSEMBLER: Es una palabra reservada interpretada por el compilador MPASM de microchip. Las directivas no generan código de máquina, por lo tanto, no ocuparán espacio en la memoria de dato o programa del μC. Algunas directivas son: INCLUDE archivo.inc

: Incluye una librería al código general del programa.

DT “OSCAR”

: Representa una lista de datos en una tabla

ERROR “Advertencia de desbordamiento” : Genera un mensaje de error en el compilador. IF A=0

: Compilado condicional

….. ….. ENDIF MESSG “Mensaje”

: Genera un mensaje en el compilador

CBLOCK 10

: Declaración de variables

ENDC ORG

4

: Origen de vector de interrupción

END

: Fin del programa

TECNICA POLLING (SONDEO DE ENTRADAS): Es un método poco eficiente de verificar el estado de una entrada digital del microcontrolador mediante un ciclo infinito de testeo por programa, es decir, para saber si se ha presionado un interruptor conectado a tierra en PTA0 el código por técnica polling sería: LABEL1

BTFSC

PORTA,0

GOTO

LABEL1

. . . EJECUTAR ALGUNA FUNCION SI SE PRESIONA EL PULSAOR EN PTA0 La principal desventaja de esta técnica es el alto consumo en los recursos del microcontrolador, pues entre más entradas se requiera testear, más ocupado estará el μC, dicho tiempo podría ser requerido para otras aplicaciones, tales como procesamiento, operaciones aritméticas, entradas análogas, etc. En conclusión, no es una buena técnica de programación, lo ideal es que las entradas de un microcontrolador se verifiquen mediante interrupciones programadas.

45 de 94 Digital Book – (Guía de Proyectos Microcontrolados) Noviembre/2008

SECCION 1 CONCEPTOS DE PROGRAMACIÓN ESTRUCTURADA

INTERRUPCIONES (INT) INTERNAS Y EXTERNAS: Una interrupción es un mecanismo mediante el cual un evento interno (fin de conversión análogo digital, envío de un dato USART, fin de escritura en EEPROM, desbordamiento de un Timer) o externo (presión de un pulsador en entrada digital del puerto PTB0, PTB1, PTB2, PTB4, PTB5, PTB6, PTB7, nótese que PTB3 no genera interrupción, un teclado matricial conectado al puerto B, un teclado de computador, UN SENSOR IR, etc) puede interrumpir la ejecución de un programa principal (Main Program) en cualquier momento. A partir de entonces se produce automáticamente un salto a una subrutina de atención a la interrupción también conocida como VECTOR DE INTERRUPCIONES, el cual puede ser de alta o baja prioridad (High or Low priority). Cuando el puntero de programa (pointer program) salta al vector de interrupción (vector número 8 para high priority o vector número 24 para low priority) atiende el conjunto de instrucciones escritas a partir del vector de interrupción, cuando encuentra la instrucción RETFIE (retorno de interrupción) sale de la subrutina de interrupción y continua con la instrucción del programa principal que estaba ejecutando en el momento que se presentó la interrupción. La interrupción tiene la característica de la inmediatez, nace de la necesidad de ejecutar una subrutina en el instante preciso y, por tanto, se considera su intervención urgente. Este método es más eficaz que la Técnica Polling dado que el μC no perderá tiempo preguntando al pin de entrada para saber el estado, sino que únicamente atenderá al periférico (cualquier dispositivo externo que se pueda conectar al PIC, por ejemplo un pulsador, teclado, sensor, bumpers, etc) cuando éste se lo pida mediante una solicitud de interrupción. Las interrupciones constituyen el mecanismo más óptimo para la conexión del PIC con el exterior ya que sincroniza la ejecución de programas con los acontecimientos externos. Esto es muy útil, para el manejo de dispositivos de entrada que requieran una atención inmediata, tales como detección de pulsos externos en un sensor infrarrojo (IR) o un receptor de datos seriales por radiofrecuencia (RF), detección de pulsadores, teclados de computadora, teclados matricial, sensores magnéticos de puertas y ventanas, bumpers en robótica, etc. El funcionamiento de las interrupciones es similar al de una subrutina invocada por la instrucción CALL, salvo que las interrupciones no son invocadas por una línea de código sino por un evento externo o interno al μC. Indudablemente una de las principales ventajas de atender un periférico de entrada mediante interrupciones y no por técnica polling es la posibilidad de activar el modo Sleep (Dormir) o Stand By del μC para la función Power Saving o ahorro de energía, mediante el cual el PIC consume menos de 0.2uA (