Komputer

Cara Menggunakan Gangguan pada Pic dan dsPic MicroControllers

Pengarang: Laura McKinney
Tarikh Penciptaan: 5 April 2021
Tarikh Kemas Kini: 14 Mungkin 2024
Anonim
How to use DMA on 8 bit PIC® MCUs
Video.: How to use DMA on 8 bit PIC® MCUs

Kandungan

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:

  1. Mengganggu vektor.
  2. Acara sulit yang telah ditentukan sebelumnya.
  3. Interrupt mengaktifkan bit dalam register Interrupt allow.
  4. Selang bit bendera dalam daftar bendera interrupt.
  5. 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:

  1. Kejadian yang berkaitan dengan gangguan berlaku.
  2. Pengawal menyedari kejadian itu dan memeriksa bendera gangguan.
  3. Sekiranya peristiwa pencetus berlaku lebih dari satu gangguan, maka prioriti gangguan dicentang.
  4. Sekiranya bendera interupsi jelas, ia ditetapkan secara automatik dan kaunter program bergerak ke vektor interupsi masing-masing dengan keutamaan tertinggi dalam kod.
  5. Kod dalam fungsi interrupt masing-masing mula dilaksanakan dari bawah vektor interrupt.
  6. Setelah pelaksanaan rutin perkhidmatan gangguan selesai, bendera gangguan akan dibersihkan setelah keluar dari rutin.
  7. Program pengawal mikro disambung semula dari tempat yang sama dari mana ia melompat untuk memasuki rutin perkhidmatan gangguan.
  8. 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.

Jadual panduan untuk vektor gangguan dan peristiwa pencetus gangguan.

Nama GangguSelang VektorMencetuskan 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.

Penerbitan Yang Menarik

Terkini Posts.

Singkirkan Halaman yang Diimbas Kosong di Adobe Acrobat Pro X
Komputer

Singkirkan Halaman yang Diimbas Kosong di Adobe Acrobat Pro X

aya baru-baru ini menaik taraf ke Adobe Acrobat Pro X. ebahagian be ar aya menyukainya tetapi aya ma ih beru aha menyele aikan bug dan keluk pembelajaran perlahan aya endiri. atu perubahan yang menge...
Sejarah Komputer: Pengelasan Generasi Komputer
Komputer

Sejarah Komputer: Pengelasan Generasi Komputer

Alfred adalah guru lama dan peminat komputer yang bekerja dengan dan menyele aikan ma alah pelbagai peranti pengkomputeran.Genera i komputer telah melihat perubahan berda arkan teknologi yang berkemba...