- Persediaan dan Keperluan Perkakasan
- Diagram Litar untuk Muka LED dengan Nuvoton N76E003
- Pemasa Pin di Nuvoton N76E003
- Daftar Pemasa di Nuvoton N76E003
- Jenis Masa di Nuvoton N76E003
- Pengaturcaraan Mikrokontroler Nuvoton N76E003 untuk Pemasa
- Flashing Code dan Mengesahkan Output untuk Fungsi Pemasa
Dalam tutorial Nuvoton Microcontroller kami sebelumnya, kami menggunakan program LED berkedip asas sebagai panduan permulaan dan juga menghubungkan GPIO sebagai input untuk menyambungkan suis taktil. Dengan tutorial itu, kita mengetahui sepenuhnya bagaimana mengkonfigurasi projek Keil dan mengatur persekitaran untuk memprogram mikrokontroler N76E003 Nuvoton. Sudah tiba masanya untuk menggunakan periferal dalaman unit mikrokontroler dan bergerak sedikit lebih jauh dengan menggunakan Timer terbina dalam N76E003.
Dalam tutorial sebelumnya, kami hanya menggunakan kelewatan perisian untuk mengedipkan LED, jadi dalam tutorial ini, kami akan belajar bagaimana menggunakan fungsi penundaan Pemasa serta ISR Pemasa (Interrupt Service Routine) dan berkedip dua LED individu. Anda juga boleh melihat tutorial Arduino Timer dan PIC Timer untuk memeriksa cara menggunakan timer dengan mikrokontroler lain. Tanpa membuang banyak masa mari kita menilai jenis persediaan perkakasan yang kita perlukan.
Persediaan dan Keperluan Perkakasan
Oleh kerana keperluan projek ini adalah untuk mempelajari Timer ISR dan fungsi timer delay, kami akan menggunakan dua LED, salah satu daripadanya akan berkelip menggunakan timer delay pada while loop dan satu lagi akan berkedip di dalam fungsi ISR.
Oleh kerana LED tersedia di papan pengembangan N76E003, projek ini memerlukan satu LED tambahan dan perintang penghad semasa untuk mengehadkan arus LED. Komponen yang kita perlukan -
- Sebarang warna LED
- Perintang 100R
Tidak ketinggalan, selain komponen di atas, kita memerlukan papan pengembangan berasaskan mikrokontroler N76E003 dan juga Pengaturcara Nu-Link. Selain itu, papan roti dan wayar penyambung juga diperlukan untuk menyambungkan semua komponen.
Diagram Litar untuk Muka LED dengan Nuvoton N76E003
Seperti yang dapat kita lihat dalam skema di bawah ini, LED Uji tersedia di dalam papan pengembangan dan disambungkan pada port 1.4. LED tambahan disambungkan ke port 1.5. Perintang R3 digunakan untuk menghadkan arus LED. Di kiri paling kiri, sambungan antara muka pengaturcaraan ditunjukkan.
Pemasa Pin di Nuvoton N76E003
The rajah pin N76E003 boleh dilihat di bawah Imej-
Seperti yang kita lihat, setiap pin mempunyai spesifikasi yang berbeza dan setiap pin dapat digunakan untuk pelbagai tujuan. Walau bagaimanapun, pin 1.5 yang digunakan sebagai pin output LED, ia akan kehilangan PWM dan fungsi lain. Tetapi, itu tidak menjadi masalah kerana fungsi lain tidak diperlukan untuk projek ini.
Sebab di sebalik memilih pin 1.5 sebagai output dan pin 1.6 sebagai input adalah kerana adanya pin GND dan VDD terdekat untuk sambungan yang mudah. Namun, dalam mikrokontroler ini dari 20 pin, 18 pin dapat digunakan sebagai pin GPIO dan mana-mana pin GPIO lain dapat digunakan untuk tujuan output dan yang berkaitan dengan Input, kecuali pin 2.0 yang khusus digunakan untuk Reset input dan tidak dapat digunakan sebagai pengeluaran. Semua pin GPIO boleh dikonfigurasi dalam mod yang dijelaskan di bawah.
Seperti pada lembar data, PxM1.n, dan PxM2.n adalah dua register yang digunakan untuk menentukan operasi pengendalian port I / O. Oleh kerana kami menggunakan LED dan kami memerlukan pin sebagai pin output umum, oleh itu kami akan menggunakan mod Kuasi-dua arah untuk pin.
Daftar Pemasa di Nuvoton N76E003
Pemasa adalah perkara penting bagi mana-mana unit mikrokontroler. Mikrokontroler dilengkapi dengan periferal pemasa terbina dalam. Nuvoton N76E003 juga dilengkapi dengan periferal pemasa 16-bit. Walau bagaimanapun, setiap pemasa digunakan untuk tujuan yang berbeza, dan sebelum menggunakan antara muka pemasa, penting untuk mengetahui tentang pemasa.
Jenis Masa di Nuvoton N76E003
Pemasa 0 dan 1:
Timer0 timer0 dan timer1 ini sama dengan 8051 timer. Kedua-dua pemasa ini boleh digunakan sebagai pemasa umum atau sebagai pembilang. Kedua-dua pemasa ini beroperasi dalam empat mod. Dalam Mode 0, pemasa tersebut akan beroperasi dalam mod Pemasa / Kaunter 13-bit. Dalam Mod 1, bit resolusi kedua-dua pemasa akan menjadi 16-bit. Dalam Mode 2, pemasa dikonfigurasikan sebagai mod muat semula automatik dengan resolusi 8-bit. Dalam Mod 3, pemasa 1 dihentikan dan pemasa 0 dapat digunakan sebagai pembilang dan pemasa pada masa yang sama.
Dari keempat-empat mod ini, Mode 1 digunakan dalam kebanyakan kes. Kedua-dua pemasa ini boleh menggunakan Fsys (Frekuensi Sistem) dalam mod tetap atau preskala (Fys / 12). Ia juga boleh dicatat dari sumber jam luaran.
Pemasa 2:
Timer 2 juga merupakan pemasa 16-bit yang digunakan terutamanya untuk menangkap bentuk gelombang. Ia juga menggunakan jam sistem dan dapat digunakan dalam aplikasi yang berbeza dengan membagi frekuensi jam menggunakan 8 skala yang berbeza. Ia juga dapat digunakan dalam mod perbandingan atau untuk menghasilkan PWM.
Sama seperti Pemasa 0 dan Pemasa 1, Pemasa 2 boleh digunakan dalam mod muat semula automatik.
Pemasa 3:
Pemasa 3 juga digunakan sebagai pemasa 16-bit dan ia digunakan untuk sumber jam kadar baud untuk UART. Ia juga mempunyai ciri tambah nilai automatik. Penting untuk menggunakan pemasa ini hanya untuk komunikasi Serial (UART) jika aplikasi memerlukan komunikasi UART. Sebaiknya jangan gunakan pemasa ini untuk tujuan lain dalam hal ini kerana proses bertentangan dalam penyediaan pemasa.
Pemasa Pengawas:
Watchdog Timer boleh digunakan sebagai pemasa 6-bit standard tetapi ia tidak digunakan untuk tujuan ini. Penggunaan pemasa Watchdog sebagai pemasa tujuan umum berlaku untuk aplikasi penggunaan kuasa rendah di mana mikrokontroler tetap kebanyakannya dalam mod siaga.
Pemantau Pengawas, seperti namanya, selalu memeriksa sama ada mikrokontroler berfungsi dengan betul atau tidak. Sekiranya mikrokontroler digantung atau dihentikan, WDT (Pemantau Pengawas) menetapkan semula mikrokontroler secara automatik yang memastikan bahawa mikrokontroler berjalan dalam aliran kod berterusan tanpa tersekat, digantung atau dalam keadaan terhenti.
Pemasa Bangun Sendiri:
Ini adalah periferal pemasa lain yang melayani proses pemasaan khusus seperti pemasa pengawas. Pemasa ini, bangunkan sistem secara berkala apabila pengawal mikro berjalan dalam mod kuasa rendah.
Periferal pemasa ini boleh digunakan secara dalaman atau menggunakan periferal luaran untuk membangunkan mikrokontroler dari mod tidur. Untuk projek ini, kami akan menggunakan Pemasa 1 dan Pemasa 2.
Pengaturcaraan Mikrokontroler Nuvoton N76E003 untuk Pemasa
Menetapkan Pin sebagai Keluaran:
Mari mulakan dengan bahagian output terlebih dahulu. Kami menggunakan dua LED, satu adalah LED onboard, bernama Test, dan dihubungkan dengan port P1.4 dan LED luaran yang disambungkan dengan pin P1.5.
Oleh itu, kedua-dua pin ini dikonfigurasikan sebagai pin output untuk menghubungkan kedua-dua LED tersebut dengan menggunakan coretan kod di bawah.
#define Test_LED P14 #define LED1 P15
Kedua-dua pin ini ditetapkan sebagai pin Kuasi-dua arah dalam fungsi persediaan.
persediaan kosong (kekosongan) {P14_Quasi_Mode; P15_Quasi_Mode; }
Menetapkan Fungsi Pemasa:
Dalam fungsi setup, Timer 2 diperlukan untuk dikonfigurasi untuk mendapatkan output yang diinginkan. Untuk ini, kami akan menetapkan daftar T2MOD dengan faktor pemisah jam 1/128 dan menggunakannya dalam mod penundaan muat semula automatik. Berikut adalah gambaran keseluruhan daftar T2MOD-
The 4,5, dan 6th-bit register T2MOD menetapkan pembahagi pemasa 2 jam dan bit ke-7 mengatur mod tambah semula automatik. Ini dilakukan dengan menggunakan baris di bawah -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Kedua-dua baris ini ditentukan dalam fail Function_define.h sebagai
#tentukan TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF # tentukan TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Sekarang, garis-garis ini menetapkan nilai masa yang diperlukan untuk Timer 2 ISR.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
Yang ditakrifkan lebih lanjut dalam fail Function_define.h sebagai-
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
Jadi, 16000000 adalah frekuensi kristal 16 Mhz yang menetapkan kelewatan masa 100 ms.
Di bawah dua baris akan mengosongkan bait Pemasa 2 Rendah dan Tinggi.
TL2 = 0; TH2 = 0;
Akhirnya kod di bawah ini akan membolehkan pemasa 2 mengganggu dan memulakan Pemasa 2.
set_ET2; // Dayakan Timer2 interrupt set_EA; set_TR2; // Jangka masa 2
Fungsi persediaan lengkap dapat dilihat dalam kod di bawah ini-
persediaan kosong (kekosongan) { P14_Quasi_Mode; P15_Quasi_Mode; TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode; RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8; TL2 = 0; TH2 = 0; set_ET2; // Dayakan Timer2 interrupt set_EA; set_TR2; // Jangka masa 2 }
Fungsi Pemasa 2 ISR:
Fungsi Timer 2 ISR dapat dilihat dalam kod di bawah.
void Timer2_ISR (void) mengganggu 5 { clr_TF2; // Clear Timer2 Interrupt Flag LED1 = ~ LED1; // togol LED1, disambungkan dalam P1.5; }
Flashing Code dan Mengesahkan Output untuk Fungsi Pemasa
Kod (diberikan di bawah) ketika dikompilasi mengembalikan 0 amaran dan 0 Kesalahan dan saya memusingkannya menggunakan kaedah flashing lalai di Keil. Setelah berkelip, LED berkelip dalam kelewatan pemasa yang ditentukan seperti yang diprogramkan.
Lihat video yang diberikan di bawah ini untuk demonstrasi lengkap mengenai bagaimana papan berfungsi untuk kod ini. Semoga anda menikmati tutorial dan mempelajari sesuatu yang berguna sekiranya anda mempunyai sebarang pertanyaan, tinggalkan di bahagian komen di bawah. Anda juga boleh menggunakan forum kami untuk menghantar soalan teknikal lain.