Kandungan
- Apakah Gangguan dalam Pengawal Mikro?
- Selang Vektor
- Peristiwa yang berkaitan dengan sukar
- Selang Aktifkan Bit
- Mengganggu Bit Bendera
- Mengutamakan Keutamaan
- Bagaimana Gangguan Berfungsi dalam Pengawal Mikro?
- Prosedur Umum dan Kod untuk Memanggil Gangguan
- 1) Tetapkan interrupt Enable Bit
- 2) Tetapkan Bit Priority Interrupt
- 3) Pilih vektor gangguan masing-masing
- 4) Kod operasi yang dikehendaki
- 5) Kosongkan bendera Interrupt semasa keluar dari fungsi
- Jenis Gangguan
Penulis menyelesaikan projek kejuruteraan tahun terakhirnya dengan pengawal mikro dsPic, memperoleh pengetahuan yang luas mengenai peranti ini.
Gangguan membentuk tulang belakang metodologi pengkodan dalam pengawal mikro dan pemahaman penuh mereka sangat penting bagi pengaturcara yang bersedia membuat kod tahap pakar. Tutorial ini memberikan semua maklumat penting yang diperlukan oleh programmer Pic untuk mula menggunakan gangguan dalam kod dan aplikasi pengawal mikro mereka.
Kod pengawal mikro siri dsPic30f bersama dengan pengembangan Microchip IDE MplabX digunakan untuk menunjukkan tutorial ini di sini, tetapi metodologi yang sama berlaku untuk semua pengawal mikro Pic dan juga pengawal mikro dari pengeluar lain.
Pengguna dinasihatkan untuk melihat lembaran data yang relevan untuk daftar dan nama bit yang tepat.
Apakah Gangguan dalam Pengawal Mikro?
Interrupt secara umum dapat didefinisikan sebagai fungsi yang dipicu pada terjadinya peristiwa yang sudah ditentukan sebelumnya yang berkaitan dengan keras dalam pengawal mikro dan bukan melalui panggilan fungsi biasa.
Fungsi ini biasanya disebut sebagai Rutin Perkhidmatan Interrupt.
Semua gangguan mempunyai keunikannya:
- Mengganggu vektor.
- Acara sulit yang telah ditentukan sebelumnya.
- Interrupt mengaktifkan bit dalam register Interrupt allow.
- Selang bit bendera dalam daftar bendera interrupt.
- Mengutamakan keutamaan.
Selang Vektor
Semua gangguan ditentukan oleh spesifik vektor mengganggu yang unik untuk gangguan itu sahaja.
Peristiwa yang berkaitan dengan sukar
Vektor interrupt kemudiannya dikaitkan dengan berlakunya a acara yang telah ditentukan dalam pengawal mikro untuk:
- Menerima data dalam penyangga data UART.
- Menerima data pada bas CAN.
- Bandingkan padanan nilai daftar PWM.
- Penyelesaian penukaran ADC.
- Banyak lagi bergantung pada jenis, keluarga dan model pengawal mikro.
Jadual yang diberikan di akhir artikel ini menyenaraikan beberapa contoh peristiwa yang mencetuskan, gangguan pencetus ini.
Selang Aktifkan Bit
Bit ini digunakan untuk membolehkan gangguan. Gangguan diaktifkan jika bit ini ditetapkan ke satu dan dinonaktifkan jika bot ini ditetapkan ke sifar.
Mengganggu Bit Bendera
Apabila ada peristiwa yang dikaitkan dengan gangguan berlaku, bendera gangguan akan diperiksa. Sekiranya interupsi adalah 0, maka interrupt akan mencetuskan. Sekiranya bendera interrupt tidak diatur ke sifar, interrupt tidak akan mencetuskan.
Mengutamakan Keutamaan
Apabila lebih dari satu gangguan mesti dikodkan, mesti diputuskan bahawa yang mana akan dilayan terlebih dahulu sekiranya berlaku peristiwa pencetus untuk mereka berdua. Bit keutamaan gangguan dalam Daftar Kawalan Keutamaan Interrupt menentukan keutamaan untuk gangguan masing-masing. Ganggu dengan keutamaan tertinggi, iaitu enam dilayan terlebih dahulu.
Bagaimana Gangguan Berfungsi dalam Pengawal Mikro?
Gangguan mencetuskan apabila mana-mana peristiwa yang tidak berkaitan dengannya, seperti yang dijelaskan di atas, berlaku. Mereka berfungsi mengikut urutan berikut:
- Kejadian yang berkaitan dengan gangguan berlaku.
- Pengawal menyedari kejadian itu dan memeriksa bendera gangguan.
- Sekiranya peristiwa pencetus berlaku lebih dari satu gangguan, maka prioriti gangguan dicentang.
- Sekiranya bendera interupsi jelas, ia ditetapkan secara automatik dan kaunter program bergerak ke vektor interupsi masing-masing dengan keutamaan tertinggi dalam kod.
- Kod dalam fungsi interrupt masing-masing mula dilaksanakan dari bawah vektor interrupt.
- Setelah pelaksanaan rutin perkhidmatan gangguan selesai, bendera gangguan akan dibersihkan setelah keluar dari rutin.
- Program pengawal mikro disambung semula dari tempat yang sama dari mana ia melompat untuk memasuki rutin perkhidmatan gangguan.
- Selang itu berlaku lagi sekiranya peristiwa itu berlaku semula.
Prosedur Umum dan Kod untuk Memanggil Gangguan
Gangguan mungkin dimulakan dengan mengikuti langkah-langkah berikut:
1) Tetapkan interrupt Enable Bit
Bit mengaktifkan interrupt untuk interrupt masing-masing mesti diaktifkan dari register mengaktifkan Interrupt terlebih dahulu supaya interrupt diaktifkan dan berlakunya peristiwa saling berkaitan keras diaktifkan untuk mencetuskan gangguan tersebut.
2) Tetapkan Bit Priority Interrupt
Sekiranya banyak gangguan digunakan dalam kod, mereka mungkin diberi keutamaan berdasarkan kepentingannya dalam aplikasi menggunakan bit Interrupt Priority dalam Interrupt Priority Control Register.
batal Interrupt_Init (batal) {IEC2bits.PWMIE = 1; IPC2bits.PWMIP = 1; } // Fungsi ini membolehkan PWM Interrupt mengaktifkan bit dalam daftar Interrupt Enable Control 2. // Fungsi ini boleh dipanggil di badan utama sebelum sementara (1) gelung dengan panggilan fungsi biasa. // Lebih baik menggunakan fungsi inisialisasi gangguan jika banyak gangguan diaktifkan. // Walau bagaimanapun, tidak perlu menggunakan fungsi ini kerana perintahnya mungkin juga ditulis secara langsung dalam fungsi utama. // Keutamaan gangguan ditetapkan ke 1 (terendah).
3) Pilih vektor gangguan masing-masing
Pilih vektor gangguan masing-masing dan letakkan di tajuk fungsi gangguan atau mengganggu rutin perkhidmatan. Kod di bawah menunjukkan cara membuat rutin perkhidmatan gangguan dari vektor gangguan.
Senarai vektor gangguan juga diberikan dalam artikel ini untuk rujukan.
batal __attribut __ ((interrupt, auto_psv)) _PWMInterrupt (void) {// kod anda di sini IFS2bits.PWMIF = 0; } // Teg "_PWMInterrupt" adalah vektor interrupt khas dalam fungsi ini. // Mengganti ini dengan vektor gangguan lain juga akan mengubah jenis gangguan.
4) Kod operasi yang dikehendaki
Operasi yang diinginkan boleh dikodkan dalam fungsi gangguan.
5) Kosongkan bendera Interrupt semasa keluar dari fungsi
Semasa keluar dari gangguan, bendera interrupt masing-masing mesti dibersihkan sehingga gangguan dapat dipicu lagi.
Jenis Gangguan
Ini mungkin sebanyak 50+ jenis gangguan pada pengawal mikro mulai dari gangguan I2C, gangguan SPI, gangguan pengekod kuadratur dan gangguan pemasa bergantung pada jenis, keluarga dan model.
Sebilangan gangguan yang terdapat pada pengawal mikro pic diberikan dalam jadual di bawah untuk meningkatkan pemahaman.
Nama Ganggu | Selang Vektor | Mencetuskan Rangsangan |
---|---|---|
Selingan PWM | _PWMInterrupt | PWM membandingkan perlawanan antara daftar asas masa dan daftar pengiraan. |
Gangguan ADC | _ADCInterrupt | Penukaran ADC selesai |
UART Terima Gangguan | _U2RXSelamat | Data penerimaan dalam UART terima daftar |
Gangguan Penghantaran UART | _U2TXSelamat | Memuatkan data dalam daftar penghantaran UART |
Kesalahan Mengganggu | _FLTAIterhenti | Perubahan tahap logik pada pin FLT |
Gangguan Luaran | _INT3Selamat | Perubahan tahap logik pada pin Int0 / 1 |
Gangguan Voltan Rendah | _LVDSelamat | Mengesan voltan rendah |
Artikel ini tepat dan benar sepanjang pengetahuan penulis. Kandungan hanya untuk tujuan maklumat atau hiburan dan tidak menggantikan nasihat peribadi atau nasihat profesional dalam urusan perniagaan, kewangan, undang-undang, atau teknikal.