Exemplu de setare și de lucru cu întreruperi externe în avr atmega, mainloop

Pentru ce se folosesc întreruperile externe?

O întrerupere este un eveniment prin care executarea codului principal al programului (de exemplu, funcția principală) este întreruptă și controlul este transmis funcției de către dispozitivul de întrerupere. În consecință, întreruperile externe sunt unele evenimente externe care întrerup execuția codului principal al programului.







Întreruperile externe vă permit să obțineți o reacție rapidă, garantată la evenimentele externe. Conform acestei aplicații cea mai frecventă de întreruperi externe această implementare contoare de impulsuri, software-ul de măsurare a frecvenței sau lungimea impulsului de punere în aplicare UART,-un singur fir, I2C, SPI, și așa mai departe aceeași procesare a semnalului de periferice externe.

Principiul de funcționare a întreruperilor externe în AVR

Pentru ca microcontrolerul să afle despre evenimentele externe, sunt utilizate intrările digitale INT0 INT1, etc. Discrete înseamnă că lucrează cu nivele logice: 0 și 1.
0 este absența tensiunii de intrare
1 - prezența pe tensiunea de intrare, care este egală cu tensiunea de alimentare a microcontrolerului.

Întreruperile externe pot fi împărțite în două tipuri:

  • întreruperea nivelului extern
  • marginea exterioară întrerupe






Nivelul extern întrerupe

Declanșarea de întrerupere externă poate fi setată la nivel logic scăzut sau înalt. De exemplu, dacă întreruperea este setată la un nivel logic scăzut, atunci apare atunci când tensiunea la intrarea INT este zero. Dacă întreruperea este setată la un nivel ridicat, apare atunci când intrarea este logică 1.
Atunci când se ocupă cu întreruperi la nivel trebuie amintit că, până la intrarea INT a nivelului corespunzător, întreruperea va avea loc în mod continuu. Ie Dacă aveți orice întrerupere, cum ar fi un nivel scăzut și cererea sa a fost procesată, dar dacă încă scăzută, o întrerupere este declanșat din nou, iar conductorul de întrerupere va fi numit din nou, iar acest lucru va continua până la ieșirea din orificiul de intrare întrerupe manipulant până când nici o intrare va apărea un nivel ridicat. Pentru a preveni acest lucru aveți nevoie pentru a interzice acest tip de procesor întrerupere, sau reconfigura-l la un alt nivel.

Marginea exterioară întreruptă

întrerupe pe frontul crescător sau, denumit uneori, creșterea semnalului apare atunci când există o modificare a nivelului semnalului INT de intrare la 0 la 1, la care se încadrează întrerupere de margine (semnal de descompunere) apare atunci când nivelul semnalului la INT de intrare 1 la 0.
Este, de asemenea, posibilă configurarea unei întreruperi astfel încât să răspundă oricărei schimbări la intrarea INT, adică aceasta se va întâmpla atât pe partea frontală, cât și pe marginea posterioară.

Configurarea întreruperilor externe în AVR

Întreruperile externe în avr atmega8 sunt setate folosind biții ISCxx din registrul MCUCR.

Dependența condiției de declanșare a întreruperii externe INT0 asupra biților ISC0x din registrul MCUCR în avr atmega8







Trimiteți-le prietenilor: