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
Post a Comment