ATMEGA 328 P

ATMega328 adalah mikrokontroller keluaran dari atmel yang mempunyai arsitektur RISC (Reduce Instruction Set Computer) yang dimana setiap proses eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). ATMega328 merupakan mikrokontroler keluarga AVR 8 bit. Beberapa tipe mikrokontroler yang sama dengan ATMega8 ini antara lain ATMega8535, ATMega16, ATMega32, ATmega328, yang membedakan antara mikrokontroler antara lain adalah, ukuran memori, banyaknya GPIO (pin input/output), peripherial (USART, timer, counter, dll). Dari segi ukuran fisik, ATMega328 memiliki ukuran fisik lebih kecil dibandingkan dengan beberapa mikrokontroler diatas. Namun untuk segi memori dan periperial lainnya ATMega328 tidak kalah dengan yang lainnya karena ukuran memori dan periperialnya relatif sama dengan ATMega8535, ATMega32, hanya saja jumlah GPIO lebih sedikit dibandingkan mikrokontroler diatas.

Inti Atmel AVR ® menggabungkan set instruksi dengan 32 register . Semua 32 register secara langsung terhubung ke Arithmetic Logic Unit (ALU), yang memungkinkan dua register independen untuk diakses dalam satu instruksi yang dilaksanakan dalam satu siklus clock. Arsitektur yang dihasilkan lebih banyak kode efisien saat mencapai hasil keluaran hingga sepuluh kali lebih cepat daripada mikrokontroler CISC konvensional. ATmega328 / P menyediakan fitur-fitur berikut: 32Kbytes Flash Terprogram Dalam Sistem dengan Kemampuan Baca-Sementara-Tulis, 1Kbytes EEPROM, 2Kbytes SRAM, 23 jalur I / O tujuan umum, 32 register kerja untuk tujuan umum, Real Time Counter (RTC), tiga Timer / Penghitung fleksibel dengan perbandingan mode dan PWM, 1 serial yang dapat diprogram USART, 1-byte 2-kabel Serial Interface (I2C), 6- saluran 10-bit ADC (8 saluran dalam paket TQFP dan QFN / MLF), Pengawas Waktu Pengatur yang dapat diprogram dengan Oscillator internal, port serial SPI, dan enam mode penghematan daya perangkat yang dapat dipilih. Idle mode berhenti CPU sementara memungkinkan SRAM, Timer / Penghitung, port SPI, dan sistem interupsi ke terus berfungsi. Mode Power-down menyimpan isi daftar tetapi membekukan Oscillator, menonaktifkan semua fungsi chip lainnya sampai reset atau reset perangkat keras berikutnya. Dalam mode hemat Daya, asynchronous timer terus berjalan, memungkinkan pengguna untuk mempertahankan basis waktu sementara sisanya perangkat sedang tidur. Mode ADC Noise Reduction menghentikan CPU dan semua modul I / O kecuali asynchronous timer dan ADC untuk meminimalkan switching noise selama ADC konversi. Dalam mode Siaga, osilator kristal / resonator berjalan sementara sisa perangkat sedang tidur. Ini memungkinkan start-up yang sangat cepat dikombinasikan dengan konsumsi daya rendah. Dalam mode Extended Standby, baik osilator utama maupun asynchronous timer terus berjalan. Atmel menawarkan perpustakaan QTouch ® untuk menanamkan tombol sentuh kapasitif, slider dan fungsionalitas roda ke dalam mikrokontroler AVR. Pengalihan sinyal biaya transfer yang dipatenkan menawarkan penginderaan yang kuat dan termasuk pelaporan sepenuhnya debounced dari tombol sentuh dan termasuk Suppression Key Berdekatan ® (AKS ™) teknologi untuk mendeteksi peristiwa-peristiwa penting. Toolchain QTouch Suite yang mudah digunakan memungkinkan Anda untuk mengeksplorasi, mengembangkan, dan men-debug aplikasi sentuh Anda sendiri.

Perangkat ini diproduksi menggunakan teknologi memori non-volatil Atmel yang memiliki kepadatan tinggi. ISP On-chip Flash memungkinkan memori program untuk diprogram ulang In-System melalui antarmuka serial SPI, oleh a programmer memori non-volatile konvensional, atau oleh program Boot On-chip yang berjalan pada inti AVR. Program Boot dapat menggunakan antarmuka apa pun untuk mengunduh program aplikasi dalam Aplikasi Flash ingatan. Perangkat lunak di bagian Boot Flash akan terus berjalan ketika bagian Aplikasi Flash berada diperbarui, menyediakan operasi Baca-Sementara-Tulis yang benar. Dengan menggabungkan CPU RISC 8-bit dengan In-System Self-Programmable Flash pada chip monolitik, Atmel ATmega328 / P adalah mikrokontroler kuat yang menyediakan solusi yang sangat fleksibel dan hemat biaya untuk banyak aplikasi kontrol tertanam.


            1. AVR CPU Core
ALU mendukung operasi aritmatika dan logika antara register atau antara konstanta dan a daftar. Operasi register tunggal juga dapat dijalankan di ALU. Setelah operasi aritmatika, Daftar Status diperbarui untuk mencerminkan informasi tentang hasil operasi. Aliran program disediakan oleh melompat dan memanggil instruksi bersyarat dan tak bersyarat, dapat langsung alamat seluruh ruang alamat. Kebanyakan instruksi AVR memiliki format kata 16-bit tunggal. Setiap alamat memori program berisi instruksi 16 atau 32-bit.

Ruang memori Program Flash dibagi menjadi dua bagian, bagian Program Boot dan Aplikasi Bagian program. Kedua bagian telah mendedikasikan Lock bit untuk menulis dan membaca / menulis perlindungan. SPM instruksi yang menulis ke bagian memori Flash Aplikasi harus berada di bagian Program Boot. Selama interupsi dan panggilan subrutin, alamat balasan Program Counter (PC) disimpan pada Stack. Stack secara efektif dialokasikan dalam SRAM data umum, dan akibatnya ukuran Stack hanya dibatasi oleh ukuran SRAM total dan penggunaan SRAM. Semua program pengguna harus menginisialisasi SP di Reset rutin (sebelum subrutin atau interupsi dijalankan). Stack Pointer (SP) dibaca / ditulis dapat diakses di ruang I / O. SRAM data dapat dengan mudah diakses melalui lima pengalamatan yang berbeda mode yang didukung dalam arsitektur AVR. Ruang memori dalam arsitektur AVR adalah semua peta memori linear dan reguler. Modul interupsi yang fleksibel memiliki register kontrolnya di ruang I / O dengan Global Interrupt tambahan Aktifkan bit di Daftar Status. Semua interupsi memiliki Interrupt Vector terpisah di Interrupt Vector meja. Interupsi memiliki prioritas sesuai dengan posisi Interrupt Vector mereka. Semakin rendah Interrupt Vector address, semakin tinggi prioritasnya. Ruang memori I / O berisi 64 alamat untuk fungsi periferal CPU sebagai Register Kontrol, SPI, dan fungsi I / O lainnya. Memori I / O dapat diakses secara langsung, atau sebagai lokasi Data Space mengikuti mereka dari File Register, 0x20 - 0x5F. Selain itu, perangkat ini memiliki ruang I / O Diperpanjang dari 0x60 - 0xFF di SRAM di mana hanya instruksi ST / STS / STD dan LD / LDS / LDD yang dapat digunakan.

2. Power Management
Pada Atmega 328, terdapat sleep mode yang memungkinkan aplikasi untuk mematikan modul yang tidak digunakan di MCU, sehingga menghemat daya. Perangkat ini menyediakan berbagai sleep mode yang memungkinkan pengguna untuk menyesuaikan konsumsi daya ke persyaratan aplikasi. Saat diaktifkan, Detektor Brown-out (BOD) aktif memantau tegangan catu daya selama periode tidur. Untuk lebih menghemat daya, dimungkinkan untuk menonaktifkan BOD dalam beberapa mode tidur. Lihat juga BOD Nonaktifkan . Catatan: BOD disable hanya tersedia untuk ATmega328P

3. Reset
Selama reset, semua I / O Register diatur ke nilai awal mereka, dan program memulai eksekusi dari Setel ulang Vector. Instruksi yang ditempatkan di Reset Vector harus menjadi instruksi Absolute Jump (JMP) ke rutin penanganan ulang untuk. Jika program tidak pernah memungkinkan sumber interupsi, maka Interrupt Vectors tidak digunakan, dan kode program reguler dapat ditempatkan di lokasi ini. Ini juga berlaku jika Reset Vektor berada di bagian Aplikasi sementara Vektor Interrupt berada di bagian Boot atau sebaliknya. Itu diagram sirkuit di bagian selanjutnya menunjukkan logika reset. Port I / O AVR segera diatur ulang ke status awalnya ketika sumber reset aktif. Ini tidak memerlukan sumber clock apa pun untuk berjalan. Setelah semua sumber reset tidak aktif, penghitung penundaan akan dipanggil, meregangkan pengaturan ulang internal. Ini memungkinkan daya untuk mencapai tingkat stabil sebelum operasi normal dimulai. Batas waktu penundaan counter didefinisikan oleh pengguna melalui SUT dan CKSEL Fuses. Pilihan berbeda untuk penundaan periode disajikan dalam bab System Clock dan Clock Options

4. PORT I / O
Semua port AVR memiliki fungsi Read-Modify-Write yang benar ketika digunakan sebagai port I / O digital umum. Ini berarti bahwa arah satu pin port dapat diubah tanpa secara tidak sengaja mengubah arah pin lainnya dengan instruksi SBI dan CBI. Hal yang sama berlaku saat mengubah nilai drive (jika dikonfigurasi sebagai output) atau mengaktifkan / menonaktifkan resistor pull-up (jika dikonfigurasi sebagai input). Setiap buffer output memiliki karakteristik drive simetris dengan kemampuan sink dan sumber yang tinggi. Pin drivernya kuat cukup untuk mengarahkan monitor LED secara langsung. Semua pin port memiliki resistor pull-up yang dapat dipilih secara terpisah dengan a resistensi invarian tegangan-suplai. Semua pin I / O memiliki proteksi dioda untuk kedua V CC dan Ground 
Semua register dan referensi bit di bagian ini ditulis dalam bentuk umum. Huruf kecil “x” mewakili huruf penomoran untuk port, dan huruf kecil “n” menunjukkan nomor bit. Namun, saat menggunakan register atau bit mendefinisikan dalam suatu program, bentuk yang tepat harus digunakan. Misalnya, PORTB3 untuk bit no. 3 masuk Port B, di sini didokumentasikan secara umum sebagai PORTxn. Lokasi alamat memori I / O dialokasikan untuk setiap port, masing-masing untuk Daftar Data - PORTx, Data Daftar Arah - DDRx, dan Pin Input Port - PINx. Port Input Pins I / O lokasi hanya bisa dibaca, sedangkan Data Register dan Data Direction Register dibaca / ditulis. Namun, menulis '1' ke sedikit di PINx Register akan menghasilkan toggle pada bit yang sesuai dalam Data Register. Selain itu, Pull-up Disable - PUD bit di MCUCR menonaktifkan fungsi pull-up untuk semua pin di semua port saat disetel. Menggunakan port I / O sebagai General Digital I / O dijelaskan di bagian selanjutnya. Kebanyakan pin port di-multipleks dengan fungsi alternatif untuk fitur periferal di perangkat. Mengaktifkan fungsi alternatif dari beberapa pin port tidak mempengaruhi penggunaan pin lain dalam port sebagai I / O digital umum.


5. SPI
Interkoneksi antara Master dan Slave CPU dengan SPI ditunjukkan pada gambar di bawah ini. Sistem terdiri dari dua register geser, dan generator Jam Utama. Guru SPI memulai komunikasi siklus saat menarik rendah Slave Pilih pin SS dari Slave yang diinginkan. Master dan Slave menyiapkan data untuk dikirim dalam register bergeser masing-masing, dan Master menghasilkan pulsa clock yang diperlukan di SCK line untuk pertukaran data. Data selalu bergeser dari Master ke Slave pada Master Out - Slave In, MOSI, garis, dan dari Slave ke Master pada Master In - Slave Out, MISO, line. Setelah setiap paket data, Master akan menyinkronkan Slave dengan menarik tinggi Slave Select, SS, line.

Ketika dikonfigurasi sebagai Master, antarmuka SPI tidak memiliki kontrol otomatis terhadap jalur SS. Ini pasti ditangani oleh perangkat lunak pengguna sebelum komunikasi dapat dimulai. Ketika ini selesai, menulis byte ke SPI Data Register memulai generator jam SPI, dan perangkat keras menggeser delapan bit ke Slave. Setelah menggeser satu byte, generator jam SPI berhenti, pengaturan akhir Bendera Transmisi (SPIF). Jika SPI Interrupt Enable bit (SPIE) dalam Daftar SPCR diatur, interupsi diminta. Tuan mungkin terus menggeser byte berikutnya dengan menuliskannya ke SPDR, atau memberi sinyal akhir paket dengan menarik tinggi Slave Pilih, jalur SS. Byte yang masuk terakhir akan disimpan dalam Buffer Register untuk digunakan nanti. Ketika dikonfigurasi sebagai Slave, antarmuka SPI akan tetap tidur dengan MISO tri-stated selama SS pin didorong tinggi. Dalam keadaan ini, perangkat lunak dapat memperbarui isi SPI Data Register, SPDR, tetapi data tidak akan dialihkan oleh pulsa clock yang masuk pada pin SCK sampai pin SS didorong rendah. Sebagai satu byte telah benar-benar bergeser, akhir Bendera Transmisi, SPIF diatur. Jika SPI Interrupt Enable bit, SPIE, dalam Daftar SPCR diatur, interupsi diminta. Slave dapat terus menempatkan yang baru


Comments

Popular posts from this blog

Voltmeter Dan Cara pembuatan Voltmeter

Efek Pembebanan Pada Voltmeter

JANGKA SORONG