Instituto Politécnico Nacional Unidad Profesional Interdisciplinaria de Ingeniería Ingenier ía y Tecnologías Tecnologías Avanzadas
Práctica 2
“Interrupciones” Materia:
“Microcontroladores avanzados” Profesor:
Méndez Martínez Maricio Al!nos: "osas #íaz Antonio $ara%ia $antoyo &iz%et'
(rpo: )MM*
+ec'a de entrega: ,) - !arzo - 2,.* Introducción Interrupciones ¡!!!!!!!!!!!RESUMIRRRRRRRRRRRRRRRR
Lista de interrupciones en ATmega ordenado por prioridad:
Encoder ¡!!!!!!!!!!!!!!!!Definir encoder
En un encoder de resolución 4x, en cada flanco de subida y bajada hace la comparación entre canales.
En el primer sentido en los flancos del anal A, las entradas son iguales. En los flancos del anal !, las entradas no son iguales. En el segundo sentido en los flancos del canal A, las entradas no son iguales. En los flancos del canal !, las entradas son iguales.
4 conteos
->
1vuelta
Desarrollo /o!o se ve en la figra se co!paran todos los flancos de s%ida y de %a0ada1 n el flanco en A si a!%os canales son igales y en los flancos del canal 3 son diferentes4 gira en sentido 'orario1 Para !ane0ar na interrpci5n de de%e: •
• •
6a%ilitar el registro de interrpciones glo%al 7%it I de $"(8 sando las fnciones sei781 6a%ilitar la interrpci5n a !ane0ar en el registro correspondiente1 Agregar na fnci5n con la I$"7no!%re de vector8 9e contenga el c5digo de la interrpci5n1
Pri!ero defini!os li%rerías e inicializa!os varia%les1
#include
#include #include //Librería interrupciones int quad=0 //!uenta sentido1 int quad"=0 //!uenta sentido contrario
+nci5n de interrpci5n ,1 //en cada anco de subida y ba$ada hay una interrupci%n &'( )&*+0,vect //!anal - &nterrupci%n 0 ,delay,s)100 i ) ))2&*3 0b00001000>>5 == ))2&*3 0b00000100>>" // 'i !anal )&*+0 = !anal6 )&*+1 //uenta sentido1 quad77 8 else
//3isinuye sentido quad--
8 8
+nci5n de interrpci5n .1 &'( )&*+1,vect //!anal 6 //i ))2&*6 )1<<0 == )2&*6 )1<<1 'i abos son i9uales i ) ))2&*3 0b00001000>>5 == ))2&*3 0b00000100>>" //uenta sentido " quad-- return 0 8 else
//uenta sentido 1 quad77
8 8 int ain)void cli) //deshabilitaos interrupciones 9lobales //2&* 3" -> &*+0 entrada sensor1 //2&* 35 -> &*+1 entrada sensor"
//2:;(+ y 6 -> salidas 33( = )1<<33 )1<<33? )1<<33@ )1<<334 )1<<335 )1<<33" )1<<331 )1<<330 33(6 = 0ABB 2(+ = 0A00 2(+6 = 0A00 //!*B&C:(!&* 3; &*+0 !* !:LD:&;( !E6& )anco de subida y ba$ada E!:!( = )1<<&'!00 )0<<&'!01 )1<<&'!10 )0<<&'!11 //!ualquier ancoF &*+0F &*+1 //E!:!( = )1<<&'!00 )0<<&'!01 //C&B( - banderas //Ceneral &nterrupt !ontrol (e9ister C&!( = )1<<&*+0 )1<<&*+1 //G6&L&+E' &*+0F &*+1 //C&!( = )1<<&*+0 sei)
//habilitaos interrupciones 9lobales
Hhile)1 2(+ = quad //2(+6 = quad" 8 8
Conclusiones &a fnci5n de la interrpci5n es darle prioridad a na tarea1 $i se esta e0ectando n progra!a dentro de n “void !ain”4 al llegar na interrpci5n se de0a de 'acer lo 9e se esta e0ectando para e0ectar lo de la interrpci5n1 $e pede generar por n lfanco de s%ida o dos1 #espés de la interrpci5n se sige con la tarea en la 9e se 'a%ía 9edado1 $ara%ia $antoyo &iz%et'
Bibliografía
3atasheet +Ee9a I@5@ httpJ//picernalia.blo9spot.A/"015/0"/codiKcadores-en-cuadratura.htl