Académique Documents
Professionnel Documents
Culture Documents
Matricula: Microcontroladores Temas: Interrupciones de un Micro Programacin del Microcontrolador Convertidor, ADC y DAC Puertos seriales y memoria EEP !M Pro"esor: Alumno: Arturo A#peitia Cervantes $rupo: %&'(
8;3
Aun+ue el pic cuenta con (4 "uentes distintas de interrupcin solamentetiene un vector de interrupcin por lo +ue si se ,a.ilitan varias interrupciones al momento de presentarse cual+uiera de ellas el programa saltara a la misma rutina de interrupcion y es responsa.ilidad del programador crear una rutina +ue identi"i+ue la "uente de la interrupcion. 6os registros asociados con las interrupciones son el registro de control de interrupcion I:TC!:, el registro ,a.ilitacion de interrupciones de peri"ericos PIE( y el registro de interrupciones de peri"ericos PI (. En el registro I:TC!: se encuentra el .it de ,a.ilitacion glo.al de interrupciones $IE, el .it de ,a.ilitacion de interrupcion por peri"ericos PEIE y los .its de ,a.ilitacion de algunas interrupciones como la interrupcion e7terna del pin 84 2I:TE3, la interrupcion por cam.io de estado en los pines 8; a 8& 2 8IE3 y la interrupcion por des.orde del timer 4 2T4IE3, asi como las .anderas correspondientes a cada interrupcion 2I:T0, 8I0 y T4I03. En el registro PIE( se encuentran los .its de ,a.ilitacion de las demas interrupciones y en el registro PI ( se encuentran las .anderas asociadas con cada interrupcion. Para ,a.ilitar las interrupciones se de.en seguir los siguientes pasos: (. '. <a.ilitar el .it correspondiente a cada interrupcion. 6impiar la .andera correspondiente a la interrupcion ,a.ilitada para evitar "alsas interrupciones. =. En caso de ser necesario ,a.ilitar el .it PEIE del registro I:TC!: 2necesario para todas las interrupciones con e7cepcion de I:TE y 8IE3. ;. <a.ilitar el .it de ,a.ilitacion glo.al de interrupciones $IE del registro I:TC!:.
En el codigo tam.ien es necesario indicar ,acia +ue rutina de.e saltar el programa al presentarse la interrupcin. >a se di)o +ue el vector de interrupcin est- en la direccin 474; por lo +ue es necesario agregar las lineas org 474; y goto IS al programa, donde IS es la rutina de servicio de interrupcin y puede, desde luego, tener cual+uier otro nom.re. 6a venta)a de utili#ar interrupciones es +ue mientras se espera a +ue se presente el evento +ue produce la interrupcin el microcontrolador puede estar e)ecutando cual+uier otra tarea. De ese modo el micro no esta ciclado en una sola tarea sino +ue puede seguir tra.a)ando en otras ,asta +ue una interrupcin ,aga +ue el programa salte y e)ecute la tarea +ue se +uiera y al terminarla el programa continuara su e)ecucin en el punto en el +ue se encontra.a en el momento de presentarse la interrupcin. En el e)emplo pasado se vi como leer .otones e interruptores, a,ora se va a reali#ar el mismo programa pero ,aciendo uso de interrupciones y para +ue se aprecie +ue el microcontrolador puede reali#ar otra tarea mientras se espera la interrupcin el programa ,ar- +ue parpadee el puerto A cada medio segundo. Por lo demas el programa sera igual, tendra ; .otones conectados a los pines 8; a 8& y ; leds conectados a la parte .a)a del puerto 8. Se ,a.ilitar-n las interrupciones y de ese modo los .otones se leer-n solamente al ser presionados. ?eamos el siguiente e)emplo:
Ese es el cdigo del programa principal. Se comien#a declarando el vector de reset y el vector de interrupcion, despu@s se con"iguran los puertos, el puerto A como salida, la parte .a)a del puerto 8 como salida y la parte alta del puerto 8 como entrada. <asta a,5 lo Anico nuevo es la declaracin del vector de reset. Despu@s se con"iguran las interrupciones: Primero se habilita el bit RBIE del registro INTCON +ue es el correspondiente a la interrupcin por cam.io de estado en los pines 8; a 8&, despu@s se pone a cero el bit RBIF del mismo registro para poner la .andera de interrupcin en cero y as5 evitar entrar a la rutina de servicio sin +ue e7ista una interrupcin, y por Altimo se habilita el bit GIE para ,a.ilitar las interrupciones. De esta manera la interrupcin +ueda con"igurada y ,a.ilitada. Es muy importante siempre limpiar las .anderas de interrupcin antes de ,a.ilitar el .it GIE. Despu@s de con"igurar las interrupciones se pasa al programa principal +ue lo Anico +ue ,ace es poner a ( todos los pines del puerto A, esperar medio segundo, poner a 4 todos los pines del puerto A, volver a esperar medio segundo para iniciar de nuevo el ciclo y as5 el programa se repite una y otra ve#. 6a tarea de encender los leds correspondientes a cada .otn +ueda en manos de la rutina de interrupcin:
6a rutina es muy parecida a la del programa del e)emplo anterior con algunos cam.ios pe+ueBos. 6o importante en la rutina es +ue al entrar a la misma se deshabilitan las interrupciones al poner a 0 el bit GIE, con esto evitamos +ue se produ#ca otra interrupcin mientras se est- atendiendo una. Despu@s de ,acer eso el programa simplemente identi"ica la tecla pulsada y enciende el led correspondiente. >a +ue se encendi el led la rutina continua ,acia la eti+ueta SALIDA_ISR donde primero se limpia la bandera de interrupcin poniendo a 0 el bit RBIF y despu@s se vuelve a habilitar la interrupcion poniendo a 1 el bit GIE, am.os del registro INTCON. Para terminar la rutina y regresar al programa principal se utili#a la instruccin retfie 2RETurn From IntErruption3. 6a rutina de servicio de interrupcin siempre de.e terminar con esa instruccin.
6os lengua)es de programacin de alto nivel 28asic, Pascal, C etc.3 "ueron creados con el propsito de superar las desventa)as del ensam.lador. En lengua)es de programacin de alto nivel varias instrucciones en ensam.lador se sustituyen por una sentencia. El programador ya no tiene +ue conocer el con)unto de instrucciones o caracter5sticas del ,ardCare del microcontrolador utili#ado. >a no es posi.le conocer e7actamente cmo se e)ecuta cada sentencia, de todas "ormas ya no importa. Aun+ue siempre se puede insertar en el programa una secuencia escrita en ensam.lador. Si alguna ve# ,a escrito un programa para un microcontrolador PIC en lengua)e ensam.lador, pro.a.lemente sepa +ue la ar+uitectura ISC carece de algunas instrucciones. Por e)emplo, no ,ay instruccin apropiada para multiplicar dos nAmeros. Por supuesto, para cada pro.lema ,ay una solucin y @ste no es una e7cepcin gracias a la aritm@tica +ue permite reali#ar las operaciones comple)as al descomponerlas en un gran nAmero operaciones m-s simples. En este caso, la multiplicacin se puede sustituir con "acilidad por adicin sucesiva 2a 7 . D a E a E a E ... E a3. >a estamos en el comien#o de una ,istoria muy larga... :o ,ay +ue preocuparse al utili#ar uno de estos lengua)es de programacin de alto
nivel como es C, por+ue el compilador encontrar- autom-ticamente la solucin a @ste pro.lema y otros similares. Para multiplicar los nAmeros a y ., .asta con escri.ir aF..
Lenguaje C El lengua)e C dispone de todas las venta)as de un lengua)e de programacin de alto nivel 2anteriormente descritas3 y le permite reali#ar algunas operaciones tanto so.re los .ytes como so.re los .its 2operaciones lgicas, despla#amiento etc.3. 6as caracter5sticas de C pueden ser muy Atiles al programar los microcontroladores. Adem-s, C est- estandari#ado 2el est-ndar A:SI3, es muy porta.le, as5 +ue el mismo cdigo se puede utili#ar muc,as veces en di"erentes proyectos. 6o +ue lo ,ace accesi.le para cual+uiera +ue cono#ca este lengua)e sin reparar en el propsito de uso del microcontrolador. C es un lengua)e compilado, lo +ue signi"ica +ue los arc,ivos "uentes +ue contienen el cdigo C se traducen a lengua)e m-+uina por el compilador. Todas estas caracter5sticas ,icieron al C uno de los lengua)es de programacin m-s populares.
C!:?E TID! ES DI$ITA6 G A:A6H$IC! 6as dos operaciones E9S relativas al proceso de mayor importancia son la conversin de digital a analgico D9A y la conversin de analgico a digital A9D. 8-sicamente, la conversin D9A es el proceso de tomar un valor representado en cdigo digital 2cdigo .inario directo o 8CD3 y convertirlo en un volta)e o corriente +ue sea proporcional al valor digital. Este volta)e o corriente es una cantidad analgica, ya +ue puede tomar di"erentes valores de cierto intervalo. DAC de ;.its. IAJ es el 6S8 y IDJ es el MS8.
6as entradas digitales D, C, 8 y A se derivan generalmente del registro de salida de un sistema digital. 6os '; D (/ di"erentes nAmeros .inarios representados por estos ; .its se enlistan en la ta.la siguiente. Por cada nAmero de entrada, el volta)e de salida del convertidor D9A es un valor distinto. De ,ec,o, el volta)e de salida analgico ?out es igual en voltios al nAmero .inario 2no es as5 en todos los casos3. Tam.i@n podr5a tener dos veces el nAmero .inario o algAn otro "actor de proporcionalidad. 6a misma idea ser5a aplica.le si la salida del D9A "uese la corriente Iout.
Ar+uitectura interna El ADC tiene ' entradas analgicas de volta)e: ?I:2E3 y ?I:2K3. Estas entradas se conectan a un ampli"icador operacional interno del ADC, las cuales son entradas di"erenciales. Mstas Altimas se suman por el ampli"icador operacional para producir una seBal para el convertidor analgico digital