Mikrokontroler dari keluarga avr. Apa itu mikrokontroler, keluarga dan rumah mikrokontroler AVR Apa itu avr

Sumber pasokan listrik tidak sepenuhnya dapat diandalkan dan terkadang terputus, sehingga berdampak negatif pada barang konsumsi. Hal ini tidak dapat diterima untuk perangkat penting, sehingga perangkat tersebut disuplai dengan daya dari dua atau lebih sumber tambahan. Saat menghubungkannya, perangkat ATS digunakan. Hal ini dijelaskan dengan penguraian singkatan - "entri cadangan otomatis". Ini adalah cara untuk menciptakan pasokan listrik yang tidak terputus ke konsumen dengan dua atau lebih input daya. Hal ini dipastikan dengan koneksi otomatis input cadangan ketika input utama hilang.

Kedua catu daya dapat dihubungkan secara bersamaan. Kerugian dari metode ini adalah arus hubung singkat yang tinggi, rugi-rugi yang tinggi dan rumitnya perlindungan jaringan. Cadangan biasanya dimasukkan menggunakan perangkat switching yang mematikan sumber listrik utama. Daya cadangan harus sesuai dengan beban. Jika tidak cukup, hanya konsumen terpenting yang terhubung.

Persyaratan untuk ATS

  • Pengenalan cepat cadangan setelah pemicuan
  • Menyala ketika listrik padam, kecuali korsleting.
  • Kurangnya respon terhadap penurunan tegangan saat memulai beban kuat di konsumen.
  • Operasi satu kali.

Klasifikasi

Perangkat dibagi berdasarkan prinsip pengoperasiannya.

  • Berat sebelah. Sirkuit ini berisi dua bagian: catu daya dan cadangan. Yang terakhir terhubung ketika tegangan utama hilang.
  • Dua sisi. Jalur mana pun dapat berfungsi atau cadangan.
  • AVR yang dapat dipulihkan. Ketika catu daya utama dipulihkan, sirkuit sebelumnya secara otomatis dioperasikan, dan sirkuit cadangan dimatikan.
  • Tidak ada pemulihan otomatis. Mode pengoperasian dengan sumber listrik utama dikonfigurasi secara manual.

Prinsip pengoperasian AVR

Dalam jaringan tegangan rendah, akan lebih mudah untuk menggunakan relai khusus yang mengontrol tegangan di sirkuit proteksi (sirkuit ATS, dll.). ATS lebih disukai di sini, karena tidak semua peralatan tahan terhadap peralihan catu daya yang sering. Seperti apa bentuk AVRnya? Apa itu dan bagaimana cara kerjanya? Perangkat ini terlihat jelas dari diagram sederhana apa pun.

  • Relay EL-11 mengontrol tegangan tiga fasa, memonitor ketidakseimbangan fasa, kerusakan dan pergantian.
  • Relai elektromagnetik dengan kontak yang kuat digunakan untuk menghubungkan beban. Dalam mode normal, koil input utama diberi daya darinya dan, dengan kontaknya KM 1, menghubungkan catu daya ke beban.
  • Ketika tegangan pada rangkaian utama hilang, relai KM 1 dimatikan dan daya dialirkan ke kumparan relai KM 2 yang menghubungkan input cadangan.

Rangkaian ATS ini dapat digunakan di rumah-rumah pribadi, gedung industri dan administrasi, dimana beban yang dialihkan mencapai puluhan kilowatt. Kerugian dari rangkaian ini adalah rumitnya pemilihan relai untuk arus tinggi. Masih cocok untuk switching konsumen berdaya rendah, namun untuk beban berat lebih baik menggunakan starter ATS atau triac.

Sumber tenaga tambahan yang sangat diperlukan adalah bensin atau bensin yang banyak digunakan karena efisiensi dan tenaganya yang lebih besar. Pasar menawarkan berbagai macam sistem perlindungan beban berlebih yang tinggi.

Operasi AVR

Bagaimana cara kerja AVR? Bagaimana tingkat keandalan penyediaan tenaga listrik ke konsumen? Perangkat dibagi menjadi 3 kategori. Pasokan listrik perumahan termasuk yang terendah. Jika sering terjadi kegagalan pasokan listrik, lebih baik memasang cadangan di rumah, karena daya tahan peralatan rumah tangga, serta kondisi kehidupan yang nyaman, bergantung pada hal ini. Sistem catu daya tak terputus dipasang di apartemen dengan baterai, yang terutama digunakan untuk peralatan elektronik. Generator paling umum digunakan sebagai sumber listrik cadangan untuk rumah-rumah pribadi.

Dalam bentuknya yang paling sederhana, generator bensin dihubungkan ke catu daya rumah melalui saklar pengubah. Hal ini mencegah terjadinya korsleting jika cadangan yang dimasukkan salah ketika catu daya otomatis ke rumah tidak dimatikan. Saklar dipilih dengan tiga posisi, dimana posisi tengah memutus aliran listrik sepenuhnya.

Anda dapat memasang ATS sendiri dalam mode otomatis jika Anda melengkapi generator dengan perangkat start otomatis dan mengontrolnya dari kabinet menggunakan kontaktor yang juga mengganti input. Otomatisasi beroperasi pada kontrol mikroprosesor, misalnya pada pengontrol relai Easy. Sensor tegangan digunakan untuk menginput cadangan ATS. Begitu listrik padam, mesin genset langsung hidup. Dibutuhkan beberapa waktu untuk mencapai mode pengoperasian, setelah itu ATS mengalihkan beban ke cadangan. Penundaan tersebut dapat diterima untuk kebutuhan dalam negeri.

Unit start generator otomatis (BAZG)

AVR adalah sistem rumah pribadi yang memastikan permulaan dan pengendalian generator cadangan jika terjadi kegagalan daya. Yang terakhir ini dilengkapi dengan unit BAZG khusus, yang merupakan solusi murah jika terjadi kegagalan daya di jaringan utama. Itu membuat lima upaya startup dalam waktu 5 detik pada setiap interval setelah tegangan input utama menghilang. Selain itu, ia mengontrol peredam udara, menutupnya pada saat start-up.

Jika tegangan muncul kembali pada input utama, perangkat akan mengalihkan beban kembali dan menghentikan mesin generator. Saat generator dalam keadaan idle, pasokan bahan bakar dimatikan oleh katup solenoid.

Fitur AVR rumah pribadi

Metode yang paling umum adalah dengan dua masukan, yang mana masukan pertama diprioritaskan. Saat terhubung ke jaringan, beban rumah tangga sebagian besar beroperasi pada satu fasa. Jika hilang, menghubungkan generator tidak selalu nyaman. Cukup menghubungkan jalur lain sebagai cadangan. Dengan input tiga fasa, daya dikendalikan oleh relai di setiap fasa. Ketika tegangan berada di luar kisaran normal, kontaktor fasa dimatikan, dan rumah diberi daya dari dua fasa yang tersisa. Jika saluran lain gagal, seluruh beban didistribusikan kembali ke satu fase.

Untuk pondok atau dacha kecil, genset diesel dengan daya tidak lebih dari 10 kW digunakan untuk panel yang beroperasi pada 25 kW. Generator seperti itu cukup untuk menyediakan listrik minimum yang diperlukan rumah untuk waktu yang singkat. Jika terjadi keadaan darurat, relai pengatur tegangan mengalihkan bus konsumen ke daya cadangan dan mengirimkan sinyal untuk menghidupkan genset diesel. Ketika daya utama pulih, relai beralih ke sana, setelah itu generator berhenti.

Perluasan fungsi ATS

Untuk mengontrol algoritma yang dipilih, pengontrol logika terprogram (PLC) digunakan. Mereka sudah berisi program ATS, yang hanya perlu dikonfigurasi untuk mengimplementasikan mode operasi tertentu. Penggunaan PLC, seperti pengontrol AC500, memungkinkan untuk menyederhanakan rangkaian listrik, meskipun sekilas perangkat tersebut tampak rumit. Kontrol ATS dapat ditempatkan pada pintu switchboard dalam bentuk seperangkat sakelar, tombol, dan indikasi.

Solusi standar sudah mencakup perangkat lunak. Itu dipasang di PLC.

Kesimpulan

Kegagalan pasokan listrik dapat menimbulkan berbagai fenomena negatif bagi konsumen. Sebagian besar pengguna hanya memiliki gambaran samar tentang ATS. Banyak orang bahkan tidak tahu apa itu dan salah mengira itu sebagai perangkat yang ditujukan untuk tujuan yang sama sekali berbeda. Karena tingginya biaya peralatan listrik, penting untuk memilih saklar transfer otomatis yang tepat. Ini memerlukan nasihat spesialis. ATS memungkinkan Anda meningkatkan kinerja peralatan dan benda rumah tangga yang memerlukan pasokan listrik yang konstan.

MIKROKONTROLER AVR

Mikrokontroler AVR merupakan pengembangan dan produk Atmel. Perbedaan antara mikrokontroler ini dan mikrokontroler serupa adalah arsitektur inti prosesor yang cukup sukses dan berbagai modul periferal, yang memfasilitasi proses pemrograman perangkat. Chip ini diproduksi menggunakan teknologi 0,35 mikron dan beroperasi pada kecepatan clock -16 MHz, memberikan kinerja hingga 16 MIPS.

Mikrokontroler keluarga AVR didasarkan pada unit pemrosesan pusat 8-bit, yang dibangun berdasarkan prinsip arsitektur RISK. Dasar dari blok ini adalah unit aritmatika-logika - ALU. Berdasarkan sinyal clock dari memori program sesuai dengan isi penghitung program, perintah yang diinginkan dipilih dan dilakukan perhitungan. Ketika sebuah perintah dipilih dari memori program, perintah yang dipilih sebelumnya dijalankan, yang memungkinkan kinerja pada level 1 MIPS pada 1 MHz. ALU terhubung ke tanggal 32 register tujuan umum. RON terletak di awal ruang alamat RAM, namun bukan bagian darinya secara fisik . Oleh karena itu, mereka diakses baik sebagai register maupun sebagai memori.

ATMEL memproduksi keluarga mikrokontroler 8-bit berikut: kecil dan mega. mikrokontroler kecil miliki Kilatan -ROM 1 dan 2 kbytes dalam paket dengan 8-20 pin, dan mega mikrokontroler, masing-masing: Flash ROM 8-128 kbytes dalam paket dengan 28-64 pin.

SpesifikasimikrokontrolerAVR:
- frekuensi hingga 16 MHz dengan waktu eksekusi perintah 62,5 ns;
- Osilator RC bawaan yang dapat diprogram, frekuensi 1, 2, 4, 8 MHz;
-
Kilatan -Program ROM, dapat diprogram dalam sistem, hingga 128 kbytes;
- antarmuka TWI dua kabel, kompatibel dengan antarmuka I2C;
- modulator PWM multi-saluran 8-, 9-, 10-, 16-bit;
- ADC 10-bit dengan waktu konversi 70 µs dan input diferensial;
- penguatan yang dapat diprogram - 1; 10 atau 200;
- sumber tegangan referensi bawaan;
- pembanding analog;
- sirkuit penundaan startup yang dapat disesuaikan setelah catu daya;
- sirkuit pemantauan tegangan suplai;
- Antarmuka JTAG untuk menghubungkan emulator;

- ROM data yang dapat diprogram ulang secara elektrik hingga 4 kbytes;
- RAM internal dengan waktu akses 1 siklus, hingga 4 kbytes;
- serangkaian perintah yang kuat (lebih dari 120 instruksi);
- 6 perintah perkalian perangkat keras (untuk keluarga mega);
- sistem pengalamatan yang dikembangkan, dioptimalkan untuk bekerja dengan kompiler C;
- 32 register tujuan umum (akumulator);
- port serial sinkron (USART) atau asinkron (UART);
- port serial sinkron (SPI);
- Konsumsi arus 0,1 mA dalam mode aktif.

Jenis mikrokontroler AVR:

JENIS memori program, data KB EEPROM, data byte RAM, byte frekuensi Jam, MHz
ATTiny11 1 - - 6 6
ATTiny11L 1 - - 2 6
ATTiny12 1 64 - 8 6
ATTiny12L 1 64 - 4 6
ATTiny12V 1 64 - 1.2 6
ATTiny13 1 64 64 20 6
ATTiny15L 1 64 - 1.2 6
ATTiny28L 2 - - 4 19
ATTiny28V 2 - - 1.2 19
AT90S2313 4 256 512 10 15
ATMega16 16 512 1024 16 32
ATMega48 4 256 512 20 40

Baca lebih lanjut tentang mikrokontroler AVR di bagian khusus

Juga mikrokontroler AVR Keluarga besar mempunyai kemampuan untuk secara mandiri mengubah isi memori program mereka. Hal ini memungkinkan Anda untuk membuat sistem yang fleksibel berdasarkan pada mereka, algoritma operasi yang akan diubah oleh mikrokontroler itu sendiri tergantung pada kondisi internal dan kejadian eksternal. Mikrokontroler AVR memiliki konverter analog-ke-digital 8-saluran 10-bit bawaan. Mode hemat daya memungkinkan Anda mematikan modul yang tidak digunakan dan, sebagai hasilnya, mengurangi konsumsi daya.

MikrokontrolerAVR dapat beroperasi pada tegangan suplai 2 - 6 Volt. Konsumsi arus dalam mode aktif adalah sekitar 1 mA untuk operasi pada 500 kHz, 6 mA untuk 5 MHz dan hingga 10 mA pada 12 MHz. Dimungkinkan untuk mengalihkannya secara terprogram ke mode daya rendah berikut:

1. Mode hemat. Hanya generator pengatur waktu yang terus bekerja, memastikan keamanan basis waktu; fungsi lainnya dinonaktifkan.
2. Modus menganggur. Hanya prosesor yang berhenti bekerja dan isi memori data dicatat, generator jam internal, pengatur waktu, sistem interupsi dan pengatur waktu pengawas terus beroperasi, sedangkan konsumsi arus sekitar 2,5 mA pada frekuensi 12 MHz.
3. Modus berhenti. Isi file register disimpan, jam internal dihentikan, dan semua fungsi dihentikan hingga sinyal interupsi eksternal atau reset perangkat keras diterima, konsumsi arus adalah 80 μA.

Untuk pemrogramanmikrokontrolerAVR memiliki sistem berikut: AVR Studio - sistem pemrograman resmi dari Atmel, memungkinkan Anda menulis dan men-debug program yang ditulis dalam bahasa assembly, C dan C++. IAR adalah sistem pemrograman komersial dalam C, C++ dan bahasa assembly. WinAVR adalah kompiler sumber terbuka yang mendukung banyak bahasa berbeda, dan AtmanAVR adalah sistem pemrograman untuk AVR dengan antarmuka yang mirip dengan Visual C++ 6. Program sederhana dan populer lainnya dapat diunduh dari bagian perangkat lunak.

Jadi sobat, sebelum mulai bekerja dengan controller, alangkah baiknya sobat mengetahui apa saja yang ada di dalamnya.
Oleh karena itu, saya akan memberikan Anda program pendidikan singkat tentang Arsitektur pengontrol AVR.

Dasar dari setiap mikrokontroler adalah inti komputasi. Di semua model AVR hampir sama dan ini merupakan nilai tambah yang besar. Kesatuan arsitekturlah yang memastikan portabilitas kode yang mudah.

Nah, apa dasar dari mikrokontroler, lihat diagramnya:

Inti terutama terdiri dari memori program (Flash Program Memory) dan Unit Logika Aritmatika (ALU), unit kontrol (tidak ditunjukkan dalam diagram) dan pencacah program (Program Counter). Ada juga generator jam yang mengatur pulsa relatif terhadap pengoperasian unit mikrokontroler. Generator jam dapat diumpamakan dengan pendulum dan seekor anjing dalam jam alarm: pendulum berjalan maju mundur, anjing menggerakkan satu gigi pada satu waktu - roda gigi berputar. Ketika anjing itu bangun, seluruh jam alarm berbunyi.

Saat mikrokontroler dijalankan, nilai penghitung program adalah 0000 - ini adalah alamat perintah pertama di ROM flash kita. Mikrokontroler mengambil dua byte dari sana (kode perintah dan argumennya) dan mengirimkannya ke Decoder Instruksi untuk dieksekusi.

Dan nasib kedepannya tergantung pada tim. Jika ini hanya sebuah perintah untuk bekerja dengan beberapa tindakan, maka tindakan tersebut akan dieksekusi, dan pada siklus jam berikutnya nilai penghitung program akan meningkat dan dua byte perintah lagi akan diambil dari pasangan sel memori berikutnya. dan juga dikirim untuk dieksekusi.

Segalanya menjadi lebih menarik ketika perintah lompat ditemui. Dalam hal ini, alamat yang ditentukan dalam perintah dimuat ke dalam penghitung Program (lompatan absolut) atau nilainya ditingkatkan bukan sebesar 1, tetapi sebanyak yang diperlukan, dan pada siklus jam berikutnya mikrokontroler akan mengambil perintah dari alamat baru.

Decoder perintah mengambil perintah dan memasukkannya ke logika unit kontrol, yang sudah menendang semua blok lainnya, memaksa mereka melakukan tindakan yang diperlukan dalam urutan yang diperlukan.

Semua perhitungan dan pemrosesan dilakukan melalui ALU. Ini semacam kalkulator. Dia bisa menjumlahkan, mengurangi, membandingkan, menggeser dengan berbagai cara, dan terkadang membagi dan mengalikan (ini dianggap keren, jarang terjadi).

32 sel digunakan sebagai operan perantara - register operasional tujuan umum RON. Akses ke sel-sel ini adalah yang tercepat, dan jumlah operasi dengan isinya adalah yang paling banyak. Dalam assembler, register ini disebut R0, R1, R2… R31. Selain itu, mereka dibagi menjadi tiga kelompok:

Junior R0..R15
Register tujuan umum biasa, tapi entah bagaimana cacat. Banyak perintah yang tidak berfungsi dengannya, misalnya seperti memuat nomor langsung. Itu. Misalnya, Anda tidak dapat mengambil dan menetapkan nomor pada register. Tapi Anda bisa menyalin nomor dari register lain mana pun.

Senior R16..R31
Register lengkap yang bekerja dengan semua perintah tanpa kecuali.

Indeks R26…R31
Enam register terakhir dari grup senior adalah spesial. Pada prinsipnya, mereka dapat digunakan sebagai register serba guna biasa. Namun, selain itu, mereka dapat membentuk pasangan register X(R26:R27), Y(R28,R29), Z(R30:R31) yang digunakan sebagai penunjuk saat bekerja dengan memori.

RAM
Selain 32 register, mikrokontroler memiliki RAM. Kebenarannya tidak ada di semua tempat - di keluarga AVR Tiny12 dan Tiny11 yang lebih muda tidak ada RAM, jadi Anda harus bekerja di 32 sel.

RAM adalah beberapa ratus sel memori. Dari 64 byte hingga 4 kilobyte, tergantung modelnya. Sel-sel ini dapat menyimpan data apa pun dan diakses melalui perintah Muat dan Simpan.

Artinya, Anda tidak dapat mengambil, misalnya, dan menambahkan, katakanlah, satu ke sel di memori. Pertama-tama kita perlu melakukan operasi Load dari RAM ke RON, kemudian menambahkan unit kita ke dalam register dan menggunakan operasi Store untuk menyimpannya kembali ke memori. Satu-satunya jalan.

EEPROM
Ingatan jangka panjang. Memori yang tidak hilang setelah listrik dimatikan. Jika Flash hanya dapat berisi kode dan konstanta, dan tidak ada yang dapat ditulis ke dalamnya selama eksekusi (Ini adalah memori Read Only), maka di EEPROM Anda dapat menulis dan membaca sebanyak yang Anda suka. Tapi Anda tidak bisa menggunakannya sebagai RAM. Faktanya adalah siklus tulis ke EEPROM memakan waktu yang sangat lama - milidetik. Membacanya juga tidak begitu cepat. Dan jumlah siklus penulisan ulang hanya 100.000, yang tidak terlalu besar dalam skala operasi RAM. EEPROM digunakan untuk menyimpan segala macam pengaturan, preset, data yang dikumpulkan dan sampah lainnya yang mungkin diperlukan setelah menyalakan daya dan terutama untuk membaca. Memori ini tidak tersedia di semua model AVR, namun di sebagian besar model.

Keliling
Periferal adalah isian internal mikrokontroler. Itulah yang membuatnya sangat serbaguna. ALU, RAM, FLASH dan Unit Kontrol seperti di komputer Ibu, Persen, Memori, Sekrup - tanpanya komputer tidak akan dapat dijalankan dengan benar. Kemudian periferal sudah seperti koneksi jaringan, kartu video, kartu suara dan fitur lainnya. Mereka bisa berbeda, dengan tingkat kesejukan dan kecanggihan yang berbeda-beda, dan juga dapat digabungkan dalam urutan yang berbeda.

Hal ini didasarkan pada keberadaan satu atau beberapa periferal pada chip sehingga mikrokontroler dipilih untuk tugas tersebut.

Berbagai macam periferal telah ditemukan, saya mungkin bahkan tidak dapat menjelaskan semuanya. Tapi saya akan memberi Anda set dasar yang ada di hampir semua AVR, serta pengontrol modern lainnya.

  • Port input/output adalah sesuatu yang tanpanya pengontrol tidak mungkin berinteraksi dengan dunia luar. Port inilah yang memberikan “sentakan pisau” yang mengontrol elemen lain dari sirkuit. Jika Anda ingin mendapatkan 1 pada output, Anda memberi perintah ke port yang sesuai - dapatkan, tandatangani. Apakah Anda ingin tahu sinyal apa yang ada di input? Kami menanyakan port yang sesuai dan menerimanya. Hampir semua pin mikrokontroler dapat beroperasi sebagai port I/O.
  • Pemancar UART/USART - port serial. Ia bekerja menggunakan protokol asinkron yang sama seperti modem dial-up kuno. Tua seiring berjalannya waktu, dapat diandalkan, dan sederhana seperti palu godam. Cocok untuk komunikasi dengan komputer dan pengontrol lainnya.
  • Timer/counter - tugas dari timer adalah menghitung tick. Saya menyuruhnya untuk menghitung 100 siklus prosesor - dia akan memulai dan memberi sinyal saat dia menghitung. Ia juga dapat menghitung durasi sinyal masukan dan menghitung jumlah pulsa masukan. Ya, timer bisa melakukan banyak hal, terutama di AVR. Penjelasan rinci tentang fungsi pengatur waktu memerlukan tiga lusin halaman di lembar data. Padahal pengatur waktunya sendiri ada beberapa jenis dan isinya berbeda-beda.
  • ADC - masukan analog. Tidak semua mikrokontroler memilikinya, tapi ini berguna. Memungkinkan Anda mengambil dan mengukur sinyal analog. ADC adalah sejenis voltmeter.
  • Antarmuka I2C(TWI) - bus serial IIC. Melalui itu, komunikasi dengan perangkat lain dilakukan. Di IIC, Anda dapat mengatur semacam jaringan lokal mikrokontroler dalam satu perangkat.
  • SPI adalah protokol serial lain, mirip dengan IIC, tetapi tidak mengizinkan jaringan. Hanya berfungsi dalam mode Master-Slave. Tapi SANGAT cepat.
  • Analog Comparator adalah antarmuka analog lainnya. Namun, tidak seperti ADC, ia tidak mengukur, melainkan membandingkan dua sinyal analog, sehingga menghasilkan hasil A>B atau A
  • JTAG/DebugWire adalah alat debugging yang memungkinkan Anda melihat otak pengontrol menggunakan adaptor khusus, misalnya yang terpasang di papan demo saya. Terkadang tanpa dia rasanya seperti tanpa tangan.
  • PWM - pembangkit PWM. Secara umum, ini bukan blok terpisah, tetapi fungsi pengatur waktu tambahan, tetapi juga berguna. Menggunakan generator PWM mudah untuk mengatur sinyal analog. Misalnya saja mengubah kecerahan LED atau kecepatan putaran mesin. Tapi Anda tidak pernah tahu di mana itu bisa digunakan. Jumlah saluran PWM bervariasi dari satu pengontrol ke pengontrol lainnya.

Ada juga USB internal, antarmuka Ethernet, jam waktu nyata, dan pengontrol layar LCD. Ada lebih dari itu, ada begitu banyak model mikrokontroler sehingga Anda akan bosan jika hanya mencantumkannya.

Interaksi antara inti dan pinggiran
Intinya sama untuk semua orang, pinggirannya berbeda. Komunikasi di antara mereka terjadi melalui memori. Itu. Periferal memiliki sel memorinya sendiri - register periferal. Setiap perangkat periferal memiliki lebih dari satu perangkat tersebut. Register ini berisi bit konfigurasi. Tergantung pada bagaimana bit-bit ini diatur dalam mode ini, perangkat periferal beroperasi. Dalam register yang sama ini kita perlu menulis data yang ingin kita keluaran, misalnya melalui port serial, atau membaca data yang diproses oleh ADC. Untuk bekerja dengan periferal, terdapat perintah IN dan OUT khusus untuk masing-masing membaca dari periferal ke register RON dan menulis dari register RON ke periferal.

Karena intinya sama, tetapi pinggirannya berbeda, saat mentransfer kode ke model mikrokontroler lain, Anda hanya perlu memperbaiki panggilan ini, karena nama register periferal mungkin sedikit berbeda dari model ke model. Misalnya jika pengontrol memiliki satu transceiver UART, maka register penerimaan datanya disebut UDR, dan jika ada dua, maka kita sudah memiliki UDR0 dan UDR1. Namun secara umum semuanya transparan dan logis. Dan, sebagai aturan, mem-porting kode dari satu MK ke MK lainnya, meskipun ditulis dalam assembler, tidaklah sulit. Apalagi jika ditulis dengan benar.

Bagaimana cara mengetahui apa yang ada di mikrokontroler tertentu?
Untuk itu, setiap MK memiliki datasheet – dokumentasi teknis. Dan di sana, tepat di halaman pertama, tertulis apa, berapa banyak, dan bagaimana. Ini contoh untuk Anda, lembar data untuk Megu16 dengan terjemahan sulih suara saya :) Opsi yang menurut saya pertama kali paling menarik bagi saya ditandai dengan huruf tebal, sisanya, biasanya, ada secara default.

Fitur(fitur!)
Mikrokontroler AVR® 8-bit berkinerja tinggi dan berdaya rendah
(pamer arsitektur AVR ekonomis)

Arsitektur RISC Tingkat Lanjut
(Sungguh hal yang luar biasa bagi pria berisiko!)

– 131 Instruksi Kuat – Eksekusi Siklus Satu Jam Terbanyak
(131 tim keren dan cepat!)

– 32 x 8 Register Kerja Tujuan Umum
(32 register delapan bit - R0...R31 yang sama)

– Operasi Sepenuhnya Statis
(Operasi yang sepenuhnya statis, yaitu frekuensi clock minimal 1 pulsa per tahun)

– Throughput Hingga 16 MIPS pada 16 MHz
(kecepatan eksekusi hingga 16 juta operasi per detik!)

– Pengganda 2 siklus dalam chip
(dan kita bisa mengalikan angka dalam dua langkah! Keren banget, kawan!)

Segmen Memori Non-volatil Daya Tahan Tinggi
– 16K Byte memori program Flash Dalam Sistem yang dapat diprogram sendiri
(memori yang cukup untuk mengkodekan 16kb kode)

– 512 Byte EEPROM 8-bit
(dan membuang 512 byte sampah di EEPROM selama berabad-abad)

– SRAM Internal 1K Byte
(RAM 1kB, siapa yang tidak punya cukup 2Gigabytes? Anda tidak tahu cara memprogram! =) Di sini 64 byte sudah cukup. Ingat Bill Gates dan “640kb sudah cukup untuk semua orang!” dia tahu apa yang dia bicarakan :)

– Siklus Tulis/Hapus: 10.000 Flash/100.000 EEPROM Mikrokontroler
(bisa ganti flash 10 ribu kali, eeprom 100 ribu kali. Jadi jangan takut bereksperimen)

– Retensi data: 20 tahun pada 85°C/100 tahun pada 25°C(1)
(Jika Anda menyimpan jam alarm di AVR, cicit Anda akan tetap menyukainya dalam 100 tahun)

– Bagian Kode Boot Opsional dengan Bit Kunci Independen
Pemrograman Dalam Sistem dengan Program Boot On-chip
Operasi Baca-Sementara-Tulis yang Sebenarnya
(dukungan untuk bootloader. Hal yang nyaman, memungkinkan Anda mem-flash tanpa pemrogram)

– Kunci Pemrograman untuk Keamanan Perangkat Lunak Dalam Sistem
(kalau anda serakah dan pintar maka anda bisa menutup firmware tersebut dari pihak luar dan entah siapa yang akan mencuri rahasia anda)

Antarmuka JTAG (IEEE std. 1149.1 Compliant).
– Kemampuan Pemindaian Batas Sesuai dengan Standar JTAG yang Dapat Diprogram
– Dukungan Debug On-chip yang Luas
– Pemrograman Flash, EEPROM, Fuses, dan Lock Bits melalui JTAG Interface Flash
(Antarmuka debug JTAG dan fitur-fiturnya)

Fitur Periferal
(Dan di sini, sebenarnya, pinggirannya telah hilang)

– Dua Timer/Counter 8-bit dengan Prescaler Terpisah dan Mode Bandingkan
(dua pengatur waktu 8-bit, dengan banyak mode berbeda.

– Satu Timer/Counter 16-bit dengan Prescaler Terpisah, Mode Bandingkan, dan Mode Tangkap ATmega16
(satu penghitung waktu 16-bit, dengan berbagai macam gadget dan fitur)

– Penghitung Waktu Nyata dengan Osilator Terpisah
(pengatur waktu dapat berdetak dari generator terpisah, berguna jika Anda ingin membuat jam)

– Empat Saluran PWM ATmega16L
(Empat saluran PWM - pada pengatur waktu yang sama)

– 8 saluran, ADC 10-bit
(ADC 10-bit delapan saluran. Fitur-fiturnya ada di bawah)

8 Saluran Berakhir Tunggal
(Anda dapat mengukur 8 voltase berbeda secara bergantian sekaligus)

7 Saluran Diferensial dalam Paket TQFP Saja
(7 saluran diferensial. Benar, hanya di paket TQFP karena kakinya lebih banyak)

2 Saluran Diferensial dengan Penguatan yang Dapat Diprogram pada 1x, 10x, atau 200x
(dua saluran diferensial dengan penguatan yang dapat diprogram)

– Antarmuka Serial Dua Kabel berorientasi byte
(Dukungan IIC dengan pengkodean byte perangkat keras)

– Serial USART yang dapat diprogram
(Antarmuka serial. Nyaman untuk komunikasi dengan komputer)

– Antarmuka Serial SPI Master/Slave
(Antarmuka SPI, berguna)

– Pengatur Waktu Pengawas yang Dapat Diprogram dengan Osilator On-chip Terpisah
(Pengatur waktu perlindungan pembekuan khusus)

– Komparator Analog dalam chip
(Pembanding yang sama)

Fitur Khusus Mikrokontroler
(trik peluit berguna)

– Reset Penyalaan dan Deteksi Brown-out yang Dapat Diprogram
(perlindungan terhadap kusen saat pengoperasian pada tegangan rendah alias baterai mati)

– Osilator RC Terkalibrasi Internal
(Dan Anda juga dapat menghemat 20 rubel untuk membeli kuarsa eksternal. Anda tidak memerlukannya! :) Dan itu keren!)

– Sumber Interupsi Eksternal dan Internal
(Ada interupsi eksternal. Suatu hal yang sangat nyaman)

– Enam Mode Tidur: Idle, Pengurangan Kebisingan ADC, Hemat daya, Matikan, Siaga
dan Siaga yang Diperpanjang
(Banyak mode hemat energi)

I/O dan Paket
– 32 Jalur I/O yang Dapat Diprogram
– PDIP 40-pin, TQFP 44-lead, dan QFN/MLF 44-pad

(jumlah kaki yang berguna, jadi masukan dan keluaran)

Desain Tegangan Operasi.
– 2,7 – 5,5V untuk ATmega16L
– 4,5 – 5,5V untuk ATmega16

(Tegangan suplai. Ingat saya berbicara tentang rangkaian tegangan rendah - ini dia, dengan segala kemegahannya)

Kelas Kecepatan
– 0 – 8MHz untuk ATmega16L
– 0 – 16MHz untuk ATmega16

(Dan ini adalah frekuensi maksimum untuk seri yang berbeda. Yang bertegangan rendah jelek. Namun, mereka dapat di-overclock)

Konsumsi Daya @ 1 MHz, 3V, dan 25°C untuk ATmega16L
– Aktif: 1,1 mA
– Mode Istirahat: 0,35 mA

AVR MK telah mendapatkan popularitas luar biasa di komunitas radio amatir, menarik para insinyur elektronik dengan indikator seperti harga, efisiensi energi, dan kinerja. Selain itu, mode pemrograman yang nyaman, ketersediaan dukungan perangkat lunak gratis, dan beragam pilihan mikrokontroler merupakan nilai tambah yang besar. Seri dari Atmel ini digunakan pada otomotif dan elektronik konsumen, kartu jaringan dan motherboard komputer dan laptop, ponsel pintar dan tablet.


Sesuai dengan arsitektur dasar tunggal, MCU ini dibagi menjadi tiga keluarga besar:


Tiny AVR - mikrokontroler berdesain murah dan cukup sederhana dalam paket 8-pin
Klasik – garis dasar utama mikrokontroler;
Mega AVR adalah mikrokontroler untuk tugas-tugas kompleks yang memerlukan sejumlah besar program dan memori data.

AVR Klasik– lini paling populer di antara Flash-MK lainnya dari Atmel Corporation. Yang terakhir memperkenalkan Flash MK 8-bit pertama pada tahun 1993 dan terus meningkatkan teknologinya sejak saat itu. Perusahaan terus berupaya meningkatkan lini produksinya di bidang-bidang utama berikut: mengurangi konsumsi energi spesifik; meningkatkan kisaran tegangan dan kecepatan suplai; kemampuan untuk dengan mudah mengintegrasikan debugger real-time ke dalam produk; pelaksanaan fungsi pemrograman mandiri; perluasan jumlah dan modernisasi modul periferal; integrasi berbagai perangkat khusus (pemancar, pengontrol USB, driver LCD, dll.

Keberhasilan mikrokontroler AVR terletak pada kemudahan melakukan tugas tertentu dan mencapai hasil yang diperlukan, yang difasilitasi oleh ketersediaan sejumlah besar alat, baik yang dikembangkan oleh Atmel maupun produsen perangkat lunak pihak ketiga. Banyak perusahaan pihak ketiga memproduksi berbagai kompiler, pemrogram, debugger, assembler, adaptor, dan konektor yang diperlukan. Ciri khas perangkat lunak AVR adalah biayanya yang rendah.

Mereka diperlukan untuk bertukar data dengan berbagai perangkat yang terhubung dengannya, misalnya relay, indikator cahaya dan suara, sensor, dll. Dengan bantuan port AVR, tidak hanya pertukaran data yang dilakukan, tetapi juga sinkronisasi rangkaian secara keseluruhan. Jumlah port AVR tergantung pada model MK. Rata-rata ada (1-7) port. Biasanya, port AVR berukuran delapan bit, jika kedalaman bit tidak dibatasi oleh jumlah pin pada casing MK.

Mari kita coba menulis program sederhana untuk "LED Berkedip". Untuk memudahkan pemahaman, kita akan menulis program dalam bahasa C, untuk itu kita memerlukan utilitas khusus CodeVisionAVR.

Untuk pembacaan waktu yang akurat, mikrokontroler memerlukan semacam penghitung eksternal yang akan menghitung interval waktu yang diperlukan terlepas dari pengoperasian prosesor, dan penghitung eksternal dapat menerima data waktu kapan saja. Dan mikrokontroler mempunyai penghitung waktu periferal. Bahkan mungkin ada beberapa di AVR, jadi di ATmega16 ada tiga, di ATmega128 ada empat.

Anda akan mempelajari cara mengontrol layar LCD menggunakan perintah yang tersedia di kompiler CodeVisionAVR, menggunakan contoh MK dari keluarga ATmega8 dan layar LCD alfanumerik dengan chip HD44780 internal.

Mikrokontroler mana pun hanya mampu “melihat” sinyal digital – logika nol atau satu. Misalnya, untuk ATmega8 MK, dengan tegangan suplai 5 V, logika nol adalah tegangan yang berada pada kisaran 0 hingga 1,3 V, dan satuannya adalah 1,8 hingga 5 V. Cukup sering dalam praktik radio amatir ada kebutuhan untuk mengukur tegangan yang dapat diterima nilai apa pun dalam rentang dari nol hingga level tegangan suplai. Untuk tugas ini, semua mikrokontroler AVR dilengkapi konverter analog-ke-digital.


Perangkat lunak ini digunakan untuk lingkungan pengembangan perangkat lunak terintegrasi untuk mikrokontroler jenis ini. Fitur utama CodeVisionAVR adalah sangat jelas untuk belajar mandiri, dan juga mendukung semua MK yang ada di keluarga ini.

Informasi tentang struktur, sistem perintah mikrokontroler dan perangkat periferal. Publikasi ini akan membantu Anda memilih MK yang tepat dari jenis yang diperlukan, mengembangkan diagram fungsional perangkat dan program pengoperasian MK dalam bahasa Majelis AVR

Kekhasan rangkaian pengukur frekuensi pada mikrokontroler ini adalah bekerja sama dengan komputer dan dihubungkan ke motherboard melalui konektor IRDA. Struktur menerima daya dari konektor yang sama

Banyak orang percaya bahwa perangkat 8-bit telah mencapai batas maksimalnya, dan satu-satunya cara untuk lebih meningkatkan kinerja mikrokontroler adalah dengan beralih ke perangkat yang lebih bertenaga, seperti mikrokontroler 32-bit. Namun, beralih ke 32-bit bisa jadi sedikit menyusahkan dari sudut pandang teknis. Misalnya, konsumsi daya dan kerumitan penggunaan sirkuit dapat meningkat secara signifikan. Terlepas dari efisiensi yang lebih tinggi dari perangkat 32-bit, mikrokontroler 8-bit mengkonsumsi daya yang jauh lebih sedikit.

Meningkatkan kinerja mikrokontroler 8-bit dapat dicapai dengan beberapa solusi sederhana. Pertama, manfaatkan sepenuhnya kompiler Anda dan seluruh fungsionalitas yang disediakannya. Saat ini, kompiler sudah sangat maju, dan banyak di antaranya memiliki optimasi yang sangat baik. Bergantung pada tugas dan memori yang tersedia, kompiler dapat mengoptimalkan ukuran dan kecepatan kode. Pastikan Anda mengetahui dengan baik untuk apa Anda menggunakan MK, dan gunakan compiler sesuai dengan sumber data yang diberikan.

Kedua, jangan meremehkan optimasi manual kode program. Meskipun kompiler saat ini berfungsi, mereka tidak dapat melakukan semua pekerjaan untuk Anda. Oleh karena itu, seorang pemrogram mikrokontroler harus berhati-hati dalam menulis kode. Hal yang penting di sini adalah menyusun kode dan memisahkan bagian tumpukan komunikasi kode dari program lainnya. Ini akan memungkinkan Anda mengubah bagian-bagian yang diperlukan secara signifikan dan memantau waktu pelaksanaannya.

Selain penataan, gunakan tipe data yang paling efisien. Dengan demikian, solusi arsitektur yang berbeda memiliki ukuran database yang berbeda. Artinya, pada mikrokontroler 8 bit, jika memungkinkan sebaiknya tidak menggunakan variabel int 32 bit. Lebih baik menggantinya dengan variabel tipe byte, jika memungkinkan. Selain itu, jangan gunakan variabel floating point saat memprogram mikrokontroler.

Misalkan Anda diberi tugas - membuat LED berkedip.
Mari kita bahas cara mengatasi masalah ini:

Opsi 1 adalah yang paling sederhana, ambil sakelar/tombol sakelar, letakkan budak di sebelahnya, yang akan menyalakan/mematikan LED menggunakan sakelar sakelar. Biasanya di Rusia sebagian besar masalah diselesaikan dengan cara ini. Dan apa yang berkedip?)))
Opsi 2 - merakit multivibrator. Sudah lebih menarik. Agar bisa berkedip, satu LED merupakan solusi yang cukup baik. Selain itu, sederhana, murah, dan dapat diandalkan.
Opsi 3 - merakit pada mikrokontroler. Lebih mahal dari merakit multivibrator, tapi menurut saya lebih mudah. Saya menulis sebuah program, menjalankannya, dan mendapatkan hasilnya. Tidak ada pengaturan. Tentu saja ini merupakan kasus yang ideal.

Sekarang mari kita mempersulit tugas ini. Misalnya, 5 LED dan 5 pilihan kedipannya (kecepatan dan urutan kedipannya berubah). Opsi pertama langsung hilang, cara 2 bisa dilakukan, namun ukuran perangkat akan meningkat tajam. Opsi 3 akan tetap berukuran kira-kira sama, cukup tambahkan beberapa baris kode. Oleh karena itu, ada beberapa kasus yang berbeda, di mana hal tersebut tidak mungkin dilakukan tanpa mikrokontroler, dan jika hal tersebut berlebihan. Oleh karena itu, selalu perkirakan biaya tenaga kerja, waktu dan biaya finansial.

Jadi, mikrokontroler memungkinkan kita mengelola sistem, proses, dll secara fleksibel, memiliki dimensi kecil, dan dalam hal fungsionalitas, ini adalah komputer mini. Mikrokontroler diproduksi oleh perusahaan yang berbeda. Salah satu jenis mikrokontroler AVR dari Atmel. Mengapa mereka? Mereka cukup mudah ditemukan di toko, mudah untuk menemukan contoh kode yang sudah jadi, fungsionalitas bawaannya memungkinkan Anda memecahkan masalah yang rumit sekalipun.

Agar mikrokontroler memahami apa yang kita inginkan darinya, kita perlu memuat firmware ke dalamnya - serangkaian tindakan yang perlu dilakukan. Firmware adalah urutan satu dan nol. Untuk membuatnya lebih nyaman, diciptakanlah bahasa pemrograman. Misalnya, kita menulis nyalakan, dan kompiler itu sendiri mengubahnya menjadi rangkaian satu dan nol yang dapat dimengerti oleh mikrokontroler. Gambar tersebut menunjukkan firmware HEX jika dibuka menggunakan notepad.

Mikrokontroler biasanya diprogram dalam bahasa C atau bahasa assembly. Secara umum, tidak ada perbedaan dalam hal apa yang akan ditulis. Karena banyaknya contoh yang sudah jadi, saya memilih C. Selain itu, ada beberapa program yang memungkinkan Anda menulis dalam C. Misalnya AVR Studio gratis bermerek, CodeVision, WinAVR, dll. Meskipun saya menulis di CodeVision, saya sangat aktif menggunakan AVR Studio sebagai debugger.

Saya harap setidaknya sebagian dari hal ini menjadi jelas bagi Anda. Menurut saya, hal tersulit adalah mengambil langkah pertama. Siapa pun yang melakukannya, mengatasi rasa takut dan kemalasannya, pasti akan mencapai hasil. Selamat belajar mikrokontroler.