Professional Documents
Culture Documents
Conceptos generales
Interrupciones externas
Interrupciones temporales
cei@upm.es
Ejemplos
Eseldesvodelaejecucinnormaldeunprogramaapeticindeunperifrico
ElorigendelapeticinesuneventoexternoaluP,yportanto,asncronorespectoal
programa(nopodemospredecirenqupartedelprograma,nicundo,ocurrir)
Sielmicrolaacepta,ejecutarunafuncinasociadaparaatenderalperifrico
Subrutinadeservicio,
oatencinalainterrupcin
Evento uP/uC S
P Elmicrodebe(lohaceautomticamente):
Terminarlainstruccinencurso
(noenC,sinoencdigomquina)
Guardarelestadodelmicro
Programa Saltaralasubrutinayejecutarla
principal Volver
(dejndolotodoigual,enprincipio)
Laimportanciadelasinterrupcionesenelcontrol
Elcontrolsesimplifica,yaqueseatiendealosperifricoscuandostoslo
requieren,ynoesnecesariohacerpolling obloqueo
Enocasiones,unprogramadecontrolestformadoporunbucledeespera,enel
quenosehacenada,ysloseatiendenlasinterrupcionesquevanllegando
FundamentosdeElectrnica:Microprocesadores 2
Al atender una interrupcin
Memoria de
instrucciones R15
R14
R13
... R/W
400 LDI r0, 0 ...
401 ST r0, 200 CS Unidad 6 R3
403 LDI r0, 0
404 ST r0, 204 de 20
4
R1
R0
406 LD r0, 204
408 LD r3, 200 Control
40A ADD r3, r0
40B ST r3, 200 Reset
40D
Contador
INC r0
40E
de programa
ST r0, 204
410 LDI r1, 20
040A ALU
411 SUB r1, r0 Clock
412 BRGT -7
...
Quhaceelmicrocuandotienequeatenderunainterrupcin:
1 GuardaelvalordeContadordeprograma
2 Guardalosregistrosyelestadodelmicro
3 CopiaenelContadordeprogramaladireccindondeestlasubrutinadeinterrupcin
4 Ejecutaelcdigoenlanuevaposicinhastaqueaparezcaunreturn
5 RestauranelvalordelContadordeprograma,elestadodelmicroylosregistros
FundamentosdeElectrnica:Microprocesadores 3
Interrupciones externas
CasitodoslosuC disponendesealesexternasquepuedenproducirinterrupciones
endeterminadascondiciones(flancodesubidaobajada,nivel)
EnelcasodelAtmega168,todoslos
pinesdeE/Spermitenproducir
interrupcionesexternas,peroslo
dosdelpuertoDsonconfigurables
(porflancodesubida,bajada,
ambos).Slotrataremosestos.
FuncionesdelaAPIdeArduinoparatrabajarconlasinterrupcionesexternas:
Lospines2y3delaplacadeArduinoestnconectadosaPD2yPD3,yporlotantotienenlaposibilidaddeinterrupciones
externas
attachInterrupt(int_num,isr_name,condition);//Asociaunarutinaaunainterrupcinbajounadeterminadacondicin
int_num:0paraelpin2,1paraelpin3
isr_name:nombredelarutinadeservicio(funcinquenodebetenerparmetros)
condition:condicinqueproducelainterrupcin(FALLING,RISING,BOTH,LOW)
detachInterrupt(int_num);//Desactivalainterrupcin
FundamentosdeElectrnica:Microprocesadores 4
Ejemplo: Controlar un LED con interrupciones
UtilizandolaAPIdeArduinoQuhabraquehacerparaconmutar
elLEDcadavezquesepulsaelbotn?
+Vcc #define LED 13
void loop() {
LED // Aqu no hay por qu hacer nada
}
FundamentosdeElectrnica:Microprocesadores 5
Interrupciones temporales y peridicas
LosuC disponendecontadoresprogramablesquepermitenproducir
interrupcionesdeformaperidicaopasadounciertotiempo (enelcasodel
AtMega168,disponede3contadoresquepermitengenerarinterrupciones
peridicasytemporalesdediversasformasconperiodosdesdepocosseg hasta
32segs).
FuncionesdelaAPIdeparatrabajarconlasinterrupcionesperidicasytemporales(ATENCIN:estasfuncionessonunaadidoa
laAPIdeArduinohechoparaestaasignatura.ParatrabajarconellasesnecesarioinstalarunparchealaAPIdeArduino.Seguir
lasinstruccionesenladescripcindeltrabajovoluntario).
attachPeriodicInterrupt(isr_name,period_in_ms);//Asociaunarutinaaunainterrupcinperidica
isr_name:nombredelarutinadeservicio(funcinquenodebetenerparmetros)
period_in_ms:periodoen milisegundos.Debeserunentero
detachPeriodicInterrupt(isr_name);//Eliminalaasociacin
detachTimedInterrupt(isr_name );//Eliminalaasociacin
Otrasfuncionesasociadasconlasinterrupciones:
interrupts();//Habilitalasinterrupcionesanivelglobal
noInterrupts();//Deshabilitalasinterrupcionesanivelglobal
FundamentosdeElectrnica:Microprocesadores 6
Ejemplo: Parpadear un LED con interrupciones
UtilizandolaAPIdeArduino QuhabraquehacerparaconmutarelLEDcada0,5
segs?
#define LED 13
void setup() {
void loop() {
// Aqu se podran hacer otras cosas, sin que
// nos interfiera lo que se hace en la interrupcin
...
...
}
FundamentosdeElectrnica:Microprocesadores 7
Ejemplo: Comparando soluciones flujogramas
ToggleLed
s
t> 0,5S? no t> 0,5S?
s no
ToggleLed
ToggleLed
Volver
FundamentosdeElectrnica:Microprocesadores 8
Ejemplo: Comparando soluciones
UtilizadolaAPIdeArduino CmoresultaraelcontroldelLEDmediantelosdistintos
procedimientosdeentradasalidaqueconocemos(bloqueo,consultaperidicaeinterrupciones)?
FundamentosdeElectrnica:Microprocesadores 9