Komputer

Cara Menggunakan Interupsi di Pic dan dsPic MicroControllers

Pengarang: Laura McKinney
Tanggal Pembuatan: 5 April 2021
Tanggal Pembaruan: 13 Boleh 2024
Anonim
Interrupts in PIC Microcontrollers | PIC18F External interrupts
Video: Interrupts in PIC Microcontrollers | PIC18F External interrupts

Isi

Penulis menyelesaikan proyek rekayasa tahun terakhirnya dengan pengontrol mikro dsPic, mendapatkan wawasan luas tentang perangkat ini.

Interupsi membentuk tulang punggung metodologi pengkodean dalam pengontrol mikro dan pemahaman penuh mereka sangat penting bagi pemrogram yang ingin membuat kode tingkat ahli. Tutorial ini memberikan semua informasi penting yang dibutuhkan oleh pemrogram Pic untuk mulai menggunakan interupsi dalam kode dan aplikasi pengontrol mikro mereka.

Kode mikrokontroler seri dsPic30f bersama dengan pengembangan IDE MplabX dari Microchip digunakan untuk mendemonstrasikan tutorial ini di sini, tetapi metodologi yang sama berlaku pada semua mikrokontroler Pic serta mikrokontroler dari produsen lain.

Pengguna disarankan untuk melihat lembar data yang relevan untuk register yang tepat dan nama bit.


Apa Itu Interupsi di Mikrokontroler?

Interupsi secara umum dapat didefinisikan sebagai fungsi yang dipicu saat terjadinya peristiwa yang telah ditentukan sebelumnya dan terhubung dengan keras dalam pengontrol mikro dan bukan melalui pemanggilan fungsi normal.

Fungsi ini biasanya disebut Rutin Layanan Interupsi.

Semua interupsi memiliki keunikannya masing-masing:

  1. Vektor interupsi.
  2. Peristiwa tautan keras yang telah ditentukan sebelumnya.
  3. Bit pengaktifan interupsi di register pengaktifan Interupsi.
  4. Bit interrupt flag dalam register flag interrupt.
  5. Interupsi prioritas.

Interupsi Vektor

Semua interupsi ditentukan oleh spesifik vektor interupsi yang unik hanya untuk interupsi itu.

Acara Tertaut Keras

Vektor interupsi kemudian dikaitkan dengan keras dengan terjadinya a acara yang telah ditentukan sebelumnya di mikrokontroler untuk:

  • Menerima data di buffer data UART.
  • Menerima data di bus CAN.
  • Bandingkan kecocokan nilai register PWM.
  • Penyelesaian konversi ADC.
  • Banyak lagi tergantung pada jenis, keluarga dan model mikrokontroler.

Tabel yang diberikan di akhir artikel ini mencantumkan beberapa contoh peristiwa pemicu interupsi yang ditautkan secara keras ini.


Interrupt Enable Bit

Bit ini digunakan untuk mengaktifkan interupsi. Interupsi diaktifkan jika bit ini disetel ke satu dan dinonaktifkan jika bot ini disetel ke nol.

Interrupt Flag Bit

Kapan pun sebuah peristiwa yang terkait dengan interupsi terjadi, bendera interupsi diperiksa. Jika interupsi adalah 0, maka interupsi terpicu. Jika bendera interupsi tidak disetel ke nol, interupsi tidak akan terpicu.

Prioritas Interupsi

Jika lebih dari satu interupsi akan dikodekan, harus diputuskan bahwa interupsi mana yang akan ditayangkan terlebih dahulu jika peristiwa pemicu terjadi untuk keduanya. Bit prioritas interupsi dalam Daftar Kontrol Prioritas Interupsi menentukan prioritas untuk interupsi masing-masing. Interupsi dengan prioritas tertinggi, yaitu enam dilayani lebih dulu.

Bagaimana Interupsi Bekerja di MicroControllers?

Interupsi dipicu ketika salah satu peristiwa yang terkait erat dengannya, misalnya yang dijelaskan di atas, terjadi. Mereka bekerja dalam urutan berikut:

  1. Peristiwa yang terkait dengan interupsi terjadi.
  2. Pengontrol menjadi sadar akan terjadinya peristiwa itu dan memeriksa bendera interupsi.
  3. Jika peristiwa pemicu untuk lebih dari satu interupsi diterima maka prioritas interupsi diperiksa.
  4. Jika bendera interupsi jelas, itu adalah set otomatis dan pencacah program pindah ke vektor interupsi masing-masing dengan prioritas tertinggi dalam kode.
  5. Kode dalam fungsi interupsi masing-masing mulai dijalankan dari bawah vektor interupsi.
  6. Setelah eksekusi rutin layanan interupsi selesai, tanda interupsi dihapus setelah keluar dari rutin.
  7. Program mikrokontroler melanjutkan dari tempat yang sama dari tempat ia melompat untuk memasuki rutinitas layanan interupsi.
  8. Interupsi dijalankan lagi jika acara kembali terjadi.

Prosedur Umum dan Kode untuk Memanggil Interupsi

Interupsi dapat dimulai dengan mengikuti langkah-langkah berikut:


1) Setel Bit Aktifkan interupsi

Bit pengaktifan interupsi untuk masing-masing interupsi harus diaktifkan dari register pengaktifan Interupsi terlebih dahulu sehingga interupsi diaktifkan dan terjadinya peristiwa terkait-keras masing-masing diaktifkan untuk memicu interupsi.

2) Tetapkan Bit Prioritas Interupsi

Jika beberapa interupsi akan digunakan dalam sebuah kode, mereka dapat diberi prioritas berdasarkan kepentingannya dalam aplikasi menggunakan bit Prioritas Interupsi dalam Daftar Kontrol Prioritas Interupsi.

batal Interrupt_Init (batal) {IEC2bits.PWMIE = 1; IPC2bits.PWMIP = 1; } // Fungsi ini mengaktifkan bit pengaktifan Interupsi PWM dalam register Kontrol Pengaktifan Interupsi 2. // Fungsi ini dapat dipanggil di badan utama sebelum while (1) melakukan perulangan melalui pemanggilan fungsi normal. // Lebih baik menggunakan fungsi inisialisasi interupsi jika beberapa interupsi diaktifkan. // Namun tidak perlu menggunakan fungsi ini karena perintahnya juga bisa langsung ditulis di fungsi utama. // Prioritas interupsi disetel ke 1 (terendah).

3) Pilih vektor interupsi masing-masing

Pilih vektor interupsi masing-masing dan letakkan di header fungsi interupsi atau mengganggu rutinitas layanan. Kode di bawah ini menunjukkan cara membuat rutinitas layanan interupsi dari vektor interupsi.

Daftar vektor interupsi juga diberikan dalam artikel ini untuk referensi.

void __attribute __ ((interrupt, auto_psv)) _PWMInterrupt (void) {// kode Anda di sini IFS2bits.PWMIF = 0; } // Tag "_PWMInterrupt" adalah vektor interupsi khusus dalam fungsi ini. // Mengganti ini dengan vektor interupsi lain juga akan mengubah jenis interupsi.

4) Kode operasi yang diinginkan

Operasi yang diinginkan dapat dikodekan dalam fungsi interupsi.

5) Hapus bendera Interupsi saat keluar dari fungsi

Saat keluar dari interupsi, bendera interupsi masing-masing harus dihapus sehingga interupsi dapat dipicu lagi.

Jenis Interupsi

Mereka mungkin sebanyak 50+ jenis interupsi dalam pengontrol mikro mulai dari interupsi I2C, interupsi SPI, interupsi quadrature encoder dan interupsi pengatur waktu tergantung pada jenis, keluarga dan model.

Beberapa interupsi yang ditemukan di mikrokontroler pic diberikan dalam tabel di bawah ini untuk meningkatkan pemahaman.

Tabel pedoman untuk vektor interupsi dan peristiwa pemicu interupsi.

Nama InterupsiInterupsi VektorTrigger Stimulus

Interupsi PWM

_PWMInterrupt

PWM membandingkan kecocokan antara register basis waktu dan register penghitungan.

ADC Interupsi

_ADCInterrupt

Konversi ADC selesai

UART Terima Interupsi

_U2RXInterrupt

Menerima data di UART menerima register

UART Transmitting Interrupt

_U2TXInterrupt

Memuat data dalam register pemancar UART

Fault Interrupt

_FLTAInterrupt

Perubahan level logika pada pin FLT

Interupsi Eksternal

_INT3Interrupt

Perubahan level logika pada pin Int0 / 1

Interupsi Tegangan Rendah

_LVDInterrupt

Mendeteksi tegangan rendah

Artikel ini akurat dan benar sepanjang pengetahuan penulisnya. Konten hanya untuk tujuan informasi atau hiburan dan tidak menggantikan nasihat pribadi atau nasihat profesional dalam masalah bisnis, keuangan, hukum, atau teknis.

Populer

Artikel Yang Menarik

100+ Kutipan Mencela Diri Sendiri dan Ide Teks
Internet

100+ Kutipan Mencela Diri Sendiri dan Ide Teks

Cheeky Kid adalah eorang cybernaut yang menghabi kan banyak waktu menjelajahi web, menangkap informa i tak terbata , dan ber enang- enang dalam hiburan dan ke enangan.Orang yang mencela diri endiri ad...
IPhone Terbaik Adalah iPhone Tahun Lalu. Aku serius!
Ponsel

IPhone Terbaik Adalah iPhone Tahun Lalu. Aku serius!

Jonathan Wylie adalah eorang penuli , pendidik, dan podca ter. Anda dapat mendengar ver i audio dari artikel ini, dan lainnya, di podca t iO Unpacking etiap eptember, hampir eperti me in jam, Apple me...