Berita
Berita
Ringkasan sains populer terkuat MCU [koleksi rekomendasi] (2)
2022-03-17 230

6

Pemrograman mikrokontroler


 

Terdapat perbedaan besar antara penulisan program MCU dan penulisan program PC. Meskipun perangkat pengembangan MCU berbasis C semakin populer, bagi para perancang yang menginginkan kode program yang efisien dan suka menggunakan bahasa assembly, bahasa assembly tetap menjadi bahasa pemrograman yang paling ringkas dan efektif.


Untuk pemrograman MCU, kerangka dasarnya dapat dikatakan kurang lebih sama, yang umumnya dibagi menjadi tiga bagian: bagian inisialisasi (ini adalah perbedaan terbesar antara pemrograman MCU dan PC), badan loop program utama, dan penanganan interupsi, yang dijelaskan sebagai berikut:
  1. Inisialisasi:Untuk desain semua program MCU, inisialisasi adalah langkah paling mendasar dan penting, yang umumnya meliputi hal-hal berikut:
  Sembunyikan semua interupsi dan inisialisasi penunjuk tumpukan:Bagian inisialisasi umumnya tidak menginginkan terjadinya interupsi apa pun.  
  Bersihkan area RAM sistem dan tampilkan Memori:Meskipun terkadang mungkin tidak sepenuhnya diperlukan, dari perspektif keandalan dan konsistensi, terutama untuk mencegah kesalahan yang tidak terduga, disarankan untuk mengembangkan kebiasaan pemrograman yang baik.  
  Inisialisasi port IO:Sesuai dengan persyaratan aplikasi proyek, atur mode input dan output dari port IO yang relevan. Untuk port input, Anda perlu mengatur resistor pull-up atau pull-down; untuk port output, Anda harus mengatur level output awalnya untuk mencegah kesalahan yang tidak perlu.  
  Pengaturan interupsi:Untuk semua sumber interupsi yang perlu digunakan dalam proyek, sumber tersebut harus diaktifkan dan kondisi pemicu untuk interupsi harus diatur, sedangkan interupsi redundan yang tidak digunakan harus dimatikan.  
  Inisialisasi modul fungsional lainnya:Untuk semua modul fungsi periferal MCU yang perlu digunakan, pengaturan yang sesuai harus dilakukan sesuai dengan persyaratan aplikasi proyek. Misalnya, untuk komunikasi UART, Baud Rate, panjang data, metode verifikasi, dan panjang Stop Bit perlu diatur. Untuk Programmer Timer, sumber clock, jumlah pembagian frekuensi, dan Reload Data harus diatur.  
  Inisialisasi parameter:Setelah menyelesaikan inisialisasi perangkat keras dan sumber daya MCU, langkah selanjutnya adalah menginisialisasi beberapa variabel dan data yang digunakan dalam program. Inisialisasi bagian ini perlu dirancang sesuai dengan proyek spesifik dan pengaturan keseluruhan program. Untuk beberapa aplikasi yang menggunakan EEPROM untuk menyimpan data proyek yang telah dibuat sebelumnya, disarankan untuk menyalin data yang relevan ke RAM MCU selama inisialisasi untuk meningkatkan kecepatan akses program ke data dan mengurangi konsumsi daya sistem (pada prinsipnya, mengakses EEPROM eksternal akan meningkatkan konsumsi daya catu daya).  
  2. Isi loop program utama:Sebagian besar MCU beroperasi terus menerus dalam waktu lama, sehingga badan program utamanya pada dasarnya dirancang dalam bentuk loop. Untuk aplikasi dengan beberapa mode kerja, mungkin ada beberapa badan loop, yang diubah melalui flag status. Untuk badan program utama, modul-modul berikut umumnya disusun:
  Prosedur perhitungan:Program perhitungan umumnya memakan waktu, jadi kami sangat menentang pemrosesannya dalam kondisi interupsi, terutama operasi perkalian dan pembagian.  
Memproses program dengan persyaratan waktu nyata rendah atau tanpa persyaratan sama sekali;
 
  Tampilkan prosedur transfer:Terutama ditujukan untuk aplikasi dengan driver LED dan LCD eksternal.  
  3. Penanganan interupsi:Program interupsi terutama digunakan untuk menangani tugas dan peristiwa dengan persyaratan waktu nyata yang tinggi, seperti deteksi sinyal mendadak eksternal, deteksi dan pemrosesan tombol, penghitungan waktu, pemindaian tampilan LED, dll.  
Dalam keadaan normal, program interupsi harus menjaga agar kode sekompak dan sesingkat mungkin. Untuk fungsi yang tidak perlu diproses secara real-time, flag pemicu dapat diatur dalam interupsi, dan kemudian program utama akan melakukan transaksi spesifik. Ini sangat penting, terutama untuk MCU berdaya rendah dan berkecepatan rendah, yang harus memastikan respons tepat waktu terhadap semua interupsi.  
  4. Untuk pengaturan berbagai tugas yang berbeda, setiap MCU memiliki metode pemrosesan yang berbeda:  
 Sebagai contoh, untuk aplikasi MCU berkecepatan rendah dan berdaya rendah (Fosc=32768Hz), mengingat proyek-proyek tersebut adalah perangkat genggam dan menggunakan layar LCD biasa, respons terhadap penekanan tombol dan respons tampilan memerlukan kinerja waktu nyata yang tinggi, sehingga interupsi terjadwal umumnya digunakan untuk memproses tindakan penekanan tombol dan tampilan data; untuk MCU berkecepatan tinggi, seperti aplikasi Fosc>1MHz, karena MCU memiliki cukup waktu untuk mengeksekusi badan loop program utama pada saat ini, ia hanya dapat mengatur berbagai flag pemicu dalam interupsi yang sesuai dan menempatkan semua tugas dalam badan program utama untuk dieksekusi.  
  5. Dalam pemrograman MCU, satu hal yang perlu mendapat perhatian khusus adalah:

Penting untuk mencegah variabel atau data yang sama diakses atau diatur secara bersamaan di dalam badan program interupsi dan program utama. Metode pencegahan yang efektif adalah dengan mengatur pemrosesan data tersebut dalam sebuah modul, dan menentukan apakah akan melakukan operasi terkait pada data tersebut dengan menilai flag pemicu; di badan program lain (terutama interupsi), hanya atur flag pemicu di tempat data perlu diproses. --Hal ini memastikan bahwa eksekusi data dapat diprediksi dan unik.

7

Ringkasan pemrograman mikrokontroler untuk para insinyur.



 

1,Kembangkan kebiasaan baik untuk meringkas. Meringkas bukan hanya ringkasan dari pembelajaran Anda sendiri, tetapi juga peninjauan dan pendalaman proses pembelajaran. Hal ini juga dapat menghindari kesalahan yang sama di kemudian hari.


  2,Sebelum menulis program, Anda harus terlebih dahulu memahami proyek tersebut, menyadarinya, dan membuat kerangka kerja umum. Sangat penting untuk mempertimbangkan dengan cermat bagaimana menyusunnya dan tata letak mana yang paling masuk akal. Perlu menganalisis modul mana yang harus dikerjakan terlebih dahulu, langkah-langkah spesifik dari modul ini, bagaimana menamai setiap fungsi, koneksi dengan modul lain, dan sebagainya. Sebaiknya siapkan selembar kertas dan catat proses-proses penting.  
  3,Untuk pemrograman modular dalam bahasa C, Anda harus terlebih dahulu membagi setiap modul, memprogram modul demi modul, menentukan urutan, mengikuti urutan tersebut, dan kemudian menulis modul berikutnya setelah modul tersebut berhasil. Untuk file header, tulis file header modul setelah modul tersebut selesai ditulis.  
  4,Jangan abaikan peringatan saat muncul. Itu berarti pasti ada sesuatu yang tidak wajar dalam program tersebut. Penting untuk memahami sumbernya dan menemukan solusinya. Bersikaplah spesifik saat mencari sumber. Anda dapat mencari informasi di internet di bidang ini, atau meminta saran dari orang lain. Misalnya, fungsi utama dalam proyek lain sebenarnya ditambahkan ke proyek ini. Sebenarnya ada nama fungsi yang duplikat. Ada juga alasan untuk menganalisis fenomena eksperimental dan kemajuan langkah demi langkah. Ada juga kesalahan pemilihan antarmuka saat mendefinisikan port. Terkadang, ada baiknya beristirahat dan memikirkannya jika Anda benar-benar tidak dapat menyelesaikannya. Sesederhana apa pun, Anda harus memperhatikannya, karena mungkin ada kesalahan.   
Dalam pengembangan aplikasi mikrokontroler, masalah seperti efisiensi penggunaan kode, kinerja anti-interferensi, dan keandalan mikrokontroler masih menjadi tantangan. Sekarang kita akan merangkum beberapa keterampilan dasar yang harus dikuasai dalam pengembangan mikrokontroler.        
         

8

Keterampilan pengembangan mikrokontroler


   
       

1.Cara mengurangi bug dalam program

Terkait cara mengurangi bug program, Anda harus mempertimbangkan terlebih dahulu parameter manajemen di luar jangkauan berikut yang perlu diperhatikan selama pengoperasian sistem.


  • Parameter fisik: Parameter ini terutama merupakan parameter masukan sistem, yang meliputi parameter eksitasi, parameter operasi selama proses akuisisi, dan parameter hasil di akhir proses.

  • Parameter sumber daya: Parameter ini terutama mencakup sumber daya sirkuit, perangkat, dan unit fungsional dalam sistem, seperti kapasitas memori, panjang unit penyimpanan, dan kedalaman penumpukan.

  • Parameter aplikasi: Parameter aplikasi ini sering muncul sebagai kondisi aplikasi dari beberapa mikrokontroler dan unit fungsional. Parameter proses: mengacu pada parameter yang berubah secara teratur selama pengoperasian sistem.


2.Bagaimana cara meningkatkan efisiensi kode pemrograman bahasa C?

Penggunaan bahasa C untuk pemrograman mikrokontroler merupakan tren yang tak terhindarkan dalam pengembangan dan penerapan mikrokontroler. Jika Anda ingin mencapai efisiensi maksimum saat memprogram dalam bahasa C, sebaiknya Anda memahami kompiler C yang Anda gunakan. Pertama, uji jumlah baris pernyataan bahasa assembly yang sesuai dengan setiap kompilasi bahasa C, sehingga Anda dapat mengetahui efisiensinya dengan jelas. Saat memprogram di masa mendatang, gunakan pernyataan dengan efisiensi kompilasi tertinggi. Setiap kompiler C akan memiliki perbedaan tertentu, sehingga efisiensi kompilasinya juga akan berbeda. Panjang kode dan waktu eksekusi kompiler C yang unggul untuk sistem tertanam hanya 5-20% lebih panjang daripada fungsi yang sama yang ditulis dalam bahasa assembly.


Untuk proyek kompleks dengan waktu pengembangan yang ketat, bahasa C dapat digunakan, tetapi prasyaratnya adalah Anda sangat familiar dengan bahasa C dan kompiler C dari sistem MCU. Perhatikan secara khusus tipe data dan algoritma yang didukung oleh sistem kompilasi C. Meskipun bahasa C adalah bahasa tingkat tinggi yang paling umum, produsen MCU yang berbeda memiliki sistem kompilasi bahasa C yang berbeda, terutama dalam pengoperasian beberapa modul fungsi khusus. Oleh karena itu, jika Anda tidak memahami fitur-fitur ini, akan ada banyak masalah selama proses debugging, yang akan menyebabkan efisiensi eksekusi yang lebih rendah daripada bahasa assembly.


       3.Bagaimana cara mengatasi masalah anti-interferensi pada mikrokontroler?Cara paling efektif untuk mencegah interferensi adalah dengan menghilangkan sumber interferensi dan memblokir jalur interferensi, tetapi seringkali sulit untuk melakukannya, sehingga kita hanya dapat melihat apakah kemampuan anti-interferensi mikrokontroler cukup kuat. Sembari meningkatkan kemampuan anti-interferensi sistem perangkat keras, anti-interferensi perangkat lunak semakin mendapat perhatian karena desainnya yang fleksibel, penghematan sumber daya perangkat keras, dan keandalan yang baik.  
Fenomena interferensi mikrokontroler yang paling umum adalah reset. Sedangkan untuk program yang berjalan tanpa kendali, jebakan perangkat lunak dan pengawas (watchdog) sebenarnya dapat digunakan untuk mengembalikan program ke keadaan reset. Oleh karena itu, hal terpenting bagi perangkat lunak mikrokontroler untuk melawan interferensi adalah dengan menangani keadaan reset.  
Secara umum, mikrokontroler akan memiliki beberapa register penanda yang dapat digunakan untuk menentukan penyebab reset; selain itu, Anda juga dapat menyembunyikan beberapa penanda di RAM sendiri. Setiap kali program direset, penyebab reset yang berbeda dapat ditentukan dengan menilai penanda-penanda ini; Anda juga dapat langsung melompat ke program yang sesuai berdasarkan penanda yang berbeda. Hal ini memungkinkan program untuk berjalan terus menerus, dan pengguna tidak akan menyadari bahwa program telah direset saat menggunakannya.  
       4.Bagaimana cara menguji keandalan sistem mikrokontroler?Setelah desain sistem mikrokontroler selesai, akan ada berbagai item dan metode pengujian untuk berbagai produk sistem mikrokontroler, tetapi beberapa di antaranya wajib diuji:
 
  • Uji kelengkapan fungsi perangkat lunak mikrokontroler.
  • Pengujian daya hidup dan daya mati
  • Uji penuaan
  • Tes seperti ESD dan EFT

Terkadang, kita juga dapat mensimulasikan kerusakan yang mungkin terjadi selama penggunaan oleh manusia. Misalnya, sengaja menggosok port kontak sistem mikrokontroler dengan tubuh manusia atau kain pakaian untuk menguji kemampuan anti-statis. Menggunakan bor listrik berdaya tinggi untuk bekerja dekat dengan sistem mikrokontroler untuk menguji kemampuan menahan interferensi elektromagnetik.  
Singkatnya, mikrokomputer chip tunggal telah menjadi aspek penting dalam pengembangan dan aplikasi komputer. Signifikansi penting dari aplikasi mikrokomputer chip tunggal adalah bahwa hal itu secara fundamental mengubah ide dan metode desain sistem kontrol tradisional.  
Sebagian besar fungsi yang sebelumnya harus diimplementasikan oleh sirkuit analog atau sirkuit digital kini dapat diimplementasikan melalui metode perangkat lunak menggunakan mikrokontroler. Teknologi kontrol semacam ini, di mana perangkat lunak menggantikan perangkat keras, juga disebut teknologi mikrokontrol, yang merupakan revolusi dalam teknologi kontrol tradisional.  
Selain itu, selama proses pengembangan dan penerapan, kita harus menguasai keterampilan dan meningkatkan efisiensi agar dapat digunakan untuk berbagai tujuan yang lebih luas.  
         

9

Ringkasan pengoperasian chip


 
 

Operasi pada chip terutama merupakan operasi pada register di dalam chip. Register di dalam chip memiliki alamat uniknya sendiri yang dipetakan pada memori, yang merupakan operasi pada alamat yang sesuai. Saat mempelajari chip, pertama-tama perhatikan diagram pewaktuan, kemudian pahami register yang sesuai, pahami cara kerjanya, tentukan port yang dibutuhkan (yang dapat diidentifikasi oleh program), dan tulis prosedur operasi tulis dan prosedur operasi baca.


Cara menulis data ke dalam chip, cara membaca data, dan port mana yang digunakan untuk memasukkan atau membaca data (hal yang paling penting).  
Saat menghubungkan chip melalui bus, Anda harus terlebih dahulu memahami protokol bus tersebut. Chip yang terhubung ke bus I2C terutama mengontrol chip lain melalui bus ini.  
  1,Satu IC 74hc595 dalam kisi digunakan untuk pemilihan kolom, dan dua IC lainnya digunakan untuk pemilihan warna. Kisi tersebut setara dengan kumpulan dioda.
Dioda hanya akan menyala jika salah satu ujung diberi level tinggi dan ujung lainnya diberi level rendah. Hanya saja, jika salah satu ujung dipilih secara berbeda, warna yang menyala akan berbeda.  
Pemilihan mode kerja timer: Empat bit tinggi mengatur timer T1, dan empat bit rendah mengatur T0. Kemudian dua digit terakhir dari setiap mode mengatur mode kerja. Saat mengatur dua timer, berhati-hatilah untuk menggunakan operator (|). Saat menggunakan interupsi, perhatikan untuk membersihkan interupsi yang harus dibersihkan setelah memasuki interupsi.  
  2,Transceiver port serial: Kecepatan baud umumnya diatur dalam mode 2 (pemuatan ulang otomatis ke nilai awal). Karena perangkat yang berbeda memiliki kemampuan pemrosesan data yang berbeda, pengaturan kecepatan baud terutama untuk menangani perangkat berkecepatan rendah dan untuk berkomunikasi satu sama lain. Bit flag interupsi harus dihapus oleh perangkat lunak. Saat mengatur interupsi port serial, baik yang dihasilkan oleh pengiriman atau penerimaan, dapat memasuki fungsi interupsi, jadi perhatikan pengaturan fungsi interupsi. (Secara umum, atur fungsi interupsi berdasarkan perasaan Anda sendiri, sebagai komputer host atau komputer slave).  
Jika Anda menggunakan interupsi untuk mengirim, Anda harus mencari tahu cara memasuki interupsi untuk pertama kalinya, jadi Anda harus mengirimnya sekali terlebih dahulu, dan kemudian Anda dapat memasuki interupsi. Hanya satu byte yang dapat dikirim dalam satu waktu, dan bit berikutnya hanya dapat dikirim setelah TI diatur.  
  3,Konversi Pcf8591ad memiliki empat saluran input. Saat membaca pcf8591, saluran mana pun yang dipilih, tegangan input dari saluran tersebut akan dibaca. Data yang dikonversi disimpan dalam chip dan kemudian dibaca. Saat membaca, pertama-tama tulis alamat chip, kemudian tulis sub-alamat perangkat (0x40|nomor saluran), dan kemudian baca data.  
  4,Konversi Da dilakukan dengan terlebih dahulu menulis alamat perangkat ke dalam chip, kemudian menulis sub-alamat (0x40), dan selanjutnya menulis besaran digital yang akan dikonversi. Informasi chip alamat perangkat diperkenalkan.  
  5,Untuk layar LCD, setelah data ditulis dan ditampilkan, data tersebut akan selalu ditampilkan tanpa pembaruan terus-menerus. Jika Anda ingin mengubahnya, Anda hanya dapat memasukkannya kembali.  
  6,Untuk chip clock ds1302, saat membaca data, data pertama dibaca pada tepi jatuh clock kedelapan, dan saat menulis data, kemudian dipersiapkan untuk output berikutnya. Perhatikan metode penulisan program dan lokasi nilai kembalian.  
  7,Pada DS1302, pertama tentukan register dan kemudian tulis data ke dalamnya. Register pada data chip menunjukkan alamat. (Saya masih belum sepenuhnya memahami program proteksi tulis. Bukankah selalu ada penulisan? Mengapa proteksi tulis masih diaktifkan?)
(Menurut penjelasan sebelumnya, Anda dapat mengatur flag setelah waktu inisialisasi. Jika flag ini ada, tidak perlu menginisialisasi waktu. Namun, jika daya dimatikan, RAM MCU tidak dapat menyimpan flag ini, jadi Anda dapat menggunakan RAM DS1302 untuk menyimpan flag, dan membaca flag setelah daya dinyalakan. Saya juga seorang pemula, dan saya berencana untuk menggunakan DS1302 baru-baru ini. Saya tidak tahu apakah ini benar, dan saya belum mengimplementasikannya. Mohon bagikan lebih lanjut.)
  8,Sebaiknya catat inisialisasinya agar tidak lupa di kemudian hari. Terkadang perhatikan apakah bit terendah atau bit tertinggi yang dioperasikan terlebih dahulu saat membaca atau menulis, yang dapat dinilai berdasarkan diagram pewaktian.  
  9,Untuk transceiver inframerah, saat menerima sinyal, ia menentukan apakah itu level tinggi atau level rendah berdasarkan waktu antara dua tepi jatuh. Saat menulis program, pertama-tama gunakan timer untuk menentukan waktu, simpan, lalu konversikan ke biner (baca lebih lanjut tentang cara menulis program ini, sangat bagus).  
  10,Motor stepper: Terutama digunakan untuk pengalihan. Torsi motor stepper menurun seiring dengan peningkatan kecepatan putaran. Motor ini terutama digunakan untuk pengumpanan otomatis komponen yang diproses pada mesin perkakas. Motor ini juga dapat digunakan di tempat-tempat kontrol dengan presisi yang lebih tinggi.  
Motor stepper adalah perangkat motor stepper elemen kontrol loop terbuka yang mengubah sinyal pulsa listrik menjadi perpindahan sudut atau perpindahan linier. Dalam kondisi tanpa beban berlebih, kecepatan dan posisi berhenti motor hanya bergantung pada frekuensi dan jumlah pulsa sinyal pulsa, dan tidak dipengaruhi oleh perubahan beban. Ketika driver stepper menerima sinyal pulsa, ia menggerakkan motor stepper untuk berputar ke arah yang telah ditentukan pada sudut tetap, yang disebut "sudut langkah". Putarannya berjalan langkah demi langkah pada sudut tetap. Perpindahan sudut dapat dikontrol dengan mengontrol jumlah pulsa untuk mencapai pemosisian yang akurat; pada saat yang sama, kecepatan dan percepatan putaran motor dapat dikontrol dengan mengontrol frekuensi pulsa untuk mencapai pengaturan kecepatan.  
  11,Motor servo: (servo motor) mengacu pada mesin yang mengontrol pengoperasian komponen mekanis dalam sistem servo. Ini adalah perangkat transmisi tidak langsung yang membantu motor. Motor servo dapat mengontrol kecepatan dan akurasi posisi dengan sangat akurat, dan dapat mengubah sinyal tegangan menjadi torsi dan kecepatan putaran untuk menggerakkan objek kontrol. Kecepatan rotor motor servo dikontrol oleh sinyal input dan dapat merespons dengan cepat. Dalam sistem kontrol otomatis, motor servo digunakan sebagai aktuator dan memiliki karakteristik konstanta waktu elektromekanik yang kecil, linearitas tinggi, tegangan awal, dll. Motor servo dapat mengubah sinyal listrik yang diterima menjadi perpindahan sudut atau kecepatan sudut yang dikeluarkan pada poros motor. Motor servo terbagi menjadi dua kategori: motor servo DC dan AC. Fitur utamanya adalah tidak ada putaran ketika tegangan sinyal nol, dan kecepatan putaran menurun dengan kecepatan konstan seiring dengan peningkatan torsi. Motor DC: Jangkauan luas, banyak digunakan pada mobil kecil.


Penafian: Artikel ini direproduksi dari "International Electronic Business Information". Artikel ini hanya mewakili pandangan pribadi penulis dan tidak mewakili pandangan Sacco Micro dan industri. Artikel ini hanya untuk dicetak ulang dan dibagikan serta mendukung perlindungan hak kekayaan intelektual. Harap sebutkan sumber asli dan penulis untuk pencetakan ulang. Jika ada pelanggaran, silakan hubungi kami untuk menghapusnya.

Nomor telepon perusahaan: +86-0755-83044319
Faks/FAX: +86-0755-83975897
Surel: 1615456225@qq.com
QQ: 3518641314 Manajer Li

QQ: 332496225 Manajer Qiu

Alamat: Ruang 809, Gedung C, Gedung Teknologi Zhantao, No. 1079 Jalan Minzhi, Distrik Baru Longhua, Shenzhen

whatsapp

Hotline Layanan

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950