Întrerupe pe controlerul avr în Atmel Studio AVR, blablacode

Primul lucru despre ce o astfel de întrerupere.
Întrerupere (întrerupere) - este un tip de funcție să fie executată atunci când un semnal de intrare la care un controler.
Atunci când operează în AVR Studio sunt create folosind ISR întrerupere) macro (. SIGNAL () și INTERRUPT (). Ele marchează o funcție ca un handler de întrerupere. Diferența dintre ele este aceea că INTRERUPERE () și funcția de tratare a ISR () este determinată pentru cazul în care numărul total permis de întrerupere (procesorul poate fi întreruptă) și semnalul () pentru cazul în care întreruperea totală este interzisă.

Pe aceasta cu peste si trece la teoria practică (deși mai ar fi mai mică decât teoria).
Un astfel de sistem va colecta în ISIS:

Întrerupe pe controlerul avr în Atmel Studio AVR, blablacode

După cum probabil ați ghicit, vom scrie o întrerupere (care este generat de buton), care se va aprinde și stinge dioda.
Deci, de studio deschis și de a crea un proiect de dotare standard.
Pentru a utiliza întrerupe include fișierul antet:

Suntem de acord că încetarea (fizic) nu va include alimentarea în jos pe pedala (așa cum se face m-am uitat), dar numai pentru a schimba steagul. În anumite valori care va fi pornit și oprit dioda.
Să setați acest pavilion la nivel global:

Acum declara întrerupe:

După cum puteți vedea în paranteze macro sunt numite vectorul de întrerupere. Acest vector indică compilator pentru orice întrerupere de intrare va fi generat. Pentru INT1 - l SIG_INTERRUPT1. Pentru ADC (ADC), de exemplu, este - SIG_ADC. (Lista completă a perfect descrise în cartea „Yuri Shpak de programare, în limbajul C pentru AVR și microcontrolere PIC.“)
Acum, la funcția principală a noastră „programului.“
Avem nevoie pentru a rezolva întreaga INT1 întrerupe și, în special:

Întrerupe pe controlerul avr în Atmel Studio AVR, blablacode

Cred că cum să-l traducă, și așa veți înțelege.
Stabilirea stării de generare de întrerupere la fiecare „schimbare de logică pe INT1“.

Acum setați întregul port de C ca ieșire:

Ei bine, ar trebui să fie deja clar:

Să aștepte nu este necesar. cu atât mai mult, deoarece reduce performanța. Dar mi-ar plăcea să.
Programul este în întregime:

Noi compila și colecta circuit de hex în Proteus. Bucurați-vă de lucru întrerupere la schimbarea poziției butonului.