Sabtu, 12 November 2011

MODUL ATMega16

MENGENAL MIKROKONTROLER ATMega16

    AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel,
berbasis arsitektur RISC (Reduced Instruction Set Computer). Hampir
semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai
32 register general-purpose, timer/counter fleksibel dengan mode
compare, interrupt internal dan eksternal, serial UART, programmable
Watchdog Timer, dan mode power saving, ADC dan PWM internal.
AVR juga mempunyai In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang dalam sistem
menggunakan hubungan serial SPI. ATMega16.
ATMega16 mempunyai throughput mendekati 1 MIPS per MHz
membuat disainer sistem untuk mengoptimasi konsumsi daya versus
kecepatan proses.
1.Beberapa keistimewaan dari AVR ATMega16 antara lain:
    1. Advanced RISC Architecture
        ?? 130 Powerful Instructions – Most Single Clock Cycle Execution
        ?? 32 x 8 General Purpose Fully Static Operation
        ?? Up to 16 MIPS Throughput at 16 MHz
        ?? On-chip 2-cycle Multiplier
    2. Nonvolatile Program and Data Memories
        ?? 8K Bytes of In-System Self-Programmable Flash
        ?? Optional Boot Code Section with Independent Lock Bits
        ?? 512 Bytes EEPROM
        ?? 512 Bytes Internal SRAM
        ?? Programming Lock for Software Security
    3. Peripheral Features
        ?? Two 8-bit Timer/Counters with Separate Prescalers and Compare
             Mode
        ?? Two 8-bit Timer/Counters with Separate Prescalers and Compare
             Modes
        ?? One 16-bit Timer/Counter with Separate Prescaler, Compare
             Mode, and Capture Mode
        ?? Real Time Counter with Separate Oscillator
        ?? Four PWM Channels
        ?? 8-channel, 10-bit ADC
        ?? Byte-oriented Two-wire Serial Interface
        ?? Programmable Serial USART

    4. Special Microcontroller Features
        ?? Power-on Reset and Programmable Brown-out Detection
        ?? Internal Calibrated RC Oscillator
        ?? External and Internal Interrupt Sources
        ?? Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Powerdown,
             Standby and Extended Standby

    5. I/O and Package
        ?? 32 Programmable I/O Lines
        ?? 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF

    6. Operating Voltages
        ?? 2.7 - 5.5V for Atmega16L
             4.5 - 5.5V for Atmega16

2.
Pin-pin pada ATMega16 dengan kemasan 40-pin DIP (dual inline
package) ditunjukkan oleh gambar 1. Guna memaksimalkan
performa, AVR menggunakan arsitektur Harvard (dengan memori dan
bus terpisah untuk program dan data).
Port sebagai input/output digital
ATMega16 mempunyai empat buah port yang bernama PortA,
PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional
dengan pilihan internal pull-up. Tiap port mempunyai tiga
buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’mewakili
nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit
DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada

3.
I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx.
Bit DDxn dalam register DDRx (Data Direction Register) menentukan
arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output.
Bila DDxn diset 0 maka Px berfungsi sebagai pin input.Bila PORTxn
diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor
pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn
harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port
adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat
pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1.
Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin
output maka pin port akan berlogika 0. Saat mengubah kondisi port
dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high
(DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu
kondisi pull-up enabled (DDxn=0, PORTxn=1) atau kondisi output low
(DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya,
selama lingkungan impedansi tinggi tidak memperhatikan perbedaan
antara sebuah strong high driver dengan sebuah pull-up. Jika ini
bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset
1 untuk mematikan semua pull-up dalam semua port. Peralihan dari
kondisi input dengan pull-up ke kondisi output low juga menimbulkan
masalah yang sama. Kita harus menggunakan kondisi tri-state
(DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0)
sebagai kondisi transisi.
Tabel 1 Konfigurasi pin port
Bit 2 – PUD : Pull-up Disable
Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan
walaupun register DDxn dan PORTxn dikonfigurasikan untuk
menyalakan pull-up (DDxn=0, PORTxn=1).
Timer
Timer/counter adalah fasilitas dari ATMega16 yang digunakan
untuk perhitungan pewaktuan. Beberapa fasilitas chanel dari timer
counter antara lain: counter channel tunggal, pengosongan data timer
sesuai dengan data pembanding, bebas -glitch, tahap yang tepat Pulse
Width Modulation (PWM), pembangkit frekuensi, event counter
external..

4.
Gambaran Umum
Gambar diagram block timer/counter 8 bit ditunjukan pada
gambar 2. Untuk penempatan pin I/O telah di jelaskan pada bagian
I/O di atas. CPU dapat diakses register I/O, termasuk dalam pin-pin
I/O dan bit I/O. Device khusus register I/O dan lokasi bit terdaftar
pada deskripsi timer/counter 8 bit.
Gambar 2 Blok diagram timer/counter
Timing Diagram Timer/Counter
Timer/counter didesain sinkron clock timer (clkT0) oleh karena
itu ditunjukkan sebagai sinyal enable clock pada gambar 3. Gambar
ini termasuk informasi ketika flag interrupt dalam kondisi set. Data
timing digunakan sebagai dasar dari operasi timer/counter.
Gambar 3 Timing diagram timer/counter, tanpa prescaling
Sesuai dengan gambar 4 timing diagram timer/counter dengan
prescaling maksudnya adalah counter akan menambahkan data
counter (TCNTn) ketika terjadi pulsa clock telah mencapai 8 kali pulsa
dan sinyal clock pembagi aktif clock dan ketika telah mencapai nilai
maksimal maka nilai TCNTn akan kembali ke nol. Dan kondisi flag
timer akan aktif ketika TCNTn maksimal.

5.
Gambar 4 Timing diagram timer/counter, dengan prescaling
Sama halnya timing timer diatas, timing timer/counter dengan
seting OCFO timer mode ini memasukan data ORCn sebagai data
input timer. Ketika nilai ORCn sama dengan nilaiTCNTn maka pulsa
flag timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa
clock telah mencapai 8 pulsa. Dan kondisi flag akan berbalik
(komplemen) kondisi ketika nilai TCNTn kembali kenilai 0 (overflow).
Gambar 5 Timing diagram timer/counter, menyeting OCFO, dengan pescaler
(fclk_I/O/8)
Ketika nilai ORCn sama dengan nilai TCNTn maka pulsa flag
timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa clock
telah mencapai 8 pulsa. Dan kondisi flag akan berbalik (komplemen)
kondisi ketika nilai TCNTn kembali kenilai 0 (overflow).
Gambar 6 Timing diagram timer/counter, menyeting OCFO, pengosongan data
timer sesuai dengan data pembanding,dengan pescaler (fclk_I/O/8)

6.
Deskripsi Register Timer/Counter 8 bit
Gambar 7 Regiter timer counter 8 bit
Bit 7 – FOCO : perbandingan kemampuan output
FOCO hanya akan aktif ketika spesifik-spesifik bit WGM00
tanpa PWM mode. Adapun untuk meyakinkan terhadap kesesuaian
dengan device-device yang akan digunakan, bit ini harus diset nol
ketika TCCRO ditulisi saat mengoperasikan mode PWM. Ketika
menulisi logika satu ke bit FOCO, dengan segera dipaksakan untuk
disesuaikan pada unit pembangkit bentuk gelombang. Output OCO
diubah disesuaikan pda COM01: bit 0 menentukan pengaruh daya
pembanding.
Bit 6,3 – WGM01:0: Waveform Generation Mode
Bit ini mengontrol penghitungan yang teratur pada counter,
sumber untuk harga counter maksimal ( TOP )., dan tipe apa dari
pembangkit bentuk gelombang yang digunakan. Mode-mode operasi
didukung oleh unit timer/counter sebagai berikut : mode normal,
pembersih timer pada mode penyesuaian dengan pembanding ( CTC ),
dan dua tipe mode Pulse Width Modulation ( PWM ).
Tabel 2 Deskripsi Bit Mode Pembangkit Bentuk Gelombang
catatan: definisi nama-nama bit CTC0 dan PWM0 sekarang tidak
digunakan lagi. Gunakan WGM 01: 0 definisi. Bagaimanapun lokasi
dan fungsional dan lokasi dari masing-masing bit sesuai dengan versi
timer sebelumnya.
Bit 5:4 – COMO1:0 Penyesuaian Pembanding Mode Output
Bit ini mengontrol pin output compare (OCO), jika satu atau
kedua bit COM01:0 diset, output OC0 melebihi fungsional port
normal I/O dan keduanya terhubung juga. Bagaimanapun, catatan
bahwa bit Direksi Data Register (DDR) mencocokan ke pin OC0 yang
mana harus diset dengan tujuan mengaktifkan. Ketika OC0
dihubungkan ke pin, fungsi dari bit COM01:0 tergantung dari
pengesetan bit WGM01:0. Tabel di bawah menunjukkan COM
fungsional ketika bit-bt WGM01:0 diset ke normal atau mode CTC
(non PWM).

7.
Tabel 3 Mode Output Pembanding, tanpa PWM
Tabel 4 menunjukan bit COM01:0 fungsional ketika bit WGM01:0
diset ke mode fast PWM.
Tabel 4 Mode Output Pembanding, Mode fast PWM
Tabel 5 menunjukan bit COM01:0 fungsional ketika bit
WGM01:0 diset ke mode phase correct PWM.
Tabel 5 Mode Output Pembanding, Mode phase correct PWM
Bit 2:0 – CS02:0 : Clock Select
Tiga bit clock select sumber clock digunakan dengan
timer/counter. Jika mode pin eksternal digunakan untuk timer
counter0, perpindahan dari pin T0 akan memberi clock counter.
Tabel 6 Deskripsi bit clock select

8.
Sesuai dengan tabel diatas maka sumber clock dapat dibagi
sehingga timer/counter dapat disesuaikan dengan banyak data yang
dihitung.
Register Timer/Counter TCNT0
Gambar 8 Register timer TCNT0
Register timer/counter memberikan akses secara langsung,
keduanya digunakan untuk membaca dan menulis operasi, untuk
penghitung unit 8-bit timer/counter. Menulis ke blok-blok register
TCNT0 (removes) disesuaikan dengan clock timer berikutnya.
Memodifikasi counter (TCNT0) ketika perhitungan berjalan,
memperkenalkan resiko kehilangan perbandingan antara TCNC0
dengan register OCR0.
Register Timer/Counter OCR0
Gambar 9. Register timer OCR0
Register output pembanding berisi sebuah haraga 8 bit yang
mana secara terus-menerus dibandingkan dengan harga counter
(TCNT0). Sebuah penyesuaian dapat digunakan untuk
membangkitkan output interrupt pembanding, atau untuk
membangkitkan sebuah output bentuk gelombang pada pin OC0.
Register Timer/Counter Interrupt Mask
Bit 1-OCIE0: output timer counter menyesuaikan dengan kesesuaian
interrupt yang aktif.
Ketika bit OCIE0 ditulis satu, dan 1-bit pada register status
dalam kondisi set (satu), membandingkan timer/counter pada
interrupt yang sesuai diaktifkan. Mencocokkan interrupt yang
dijalankan kesesuaian pembanding pada timer/counter0 terjadi,
ketika bit OCF0 diset pada register penanda timer/counter-TIFR.
Bit 0 – TOIE0: Timer/Counter 0 Overflow Interrupt Enable
Ketika bit TOIE0 ditulis satu, dan 1-bit pada register status
dalam kondisi set (satu), timer/counter melebihi interrupt diaktifkan.
Mencocokkan interrupt dijalankan jika kelebihan pada timer/counter0
terjadi, ketika bit TOV0 diset pada register penanda timer/counter-
TIFR

9.
Register Timer/Counter Register - TIFR
Gambar 10 Register timer TIFR
Bit 1 – OCF0: Output Compare Flag 0
OCF0 dalam kondisi set (satu) kesesuaian pembanding terjadi
antara timer/counter dan data pada OCRO – Register 0 keluaran
pembanding. OCF0 diclear oleh hardware ketika eksekusi pencocokan
penanganan vector interrupt. Dengan alternatif mengclearkan OCF0
dengan menuliskan logika satu pada flag. Ketika I-bit pada SREG,
OCIE0 (Timer/Counter0 penyesuaian pembanding interrupt enable),
dan OCF0 diset (satu), timer/counter pembanding kesesuaian
interrupt dijalankan.
Bit 0 – TOV0: Timer/Counter Overflow Flag
Bit TOV0 diset (satu) ketika kelebihan terjadi pada
timer/counter0. TOV0 diclearkan dengan hardware ketika penjalanan
pencocokan penanganan vector interrupt. Dengan alternatif, TOV0
diclearkan dengan jalan memberikan logika satu pada flag. Ketika Ibit
pada SREG, TOIE0 (Timer/Counter0 overflow interrupt enable),
dan TOV0 diset (satu ), timer/counter overflow interrupt dijalankan.
Pada tahap mode PWM yang tepat, bit ini di set ketika timer/counter
merubah bagian perhitungan pada $00.
Serial pada ATMega16
Universal synchronous dan asynchronous pemancar dan
penerima serial adalah suatu alat komunikasi serial sangat fleksibel.
       Jenis yang utama adalah :
    a) Operasi full duplex (register penerima dan pengirim serial
    dapat berdiri sendiri)
    b) Operasi Asychronous atau synchronous
    c) Master atau slave mendapat clock dengan operasi
    synchronous
    d) Pembangkit baud rate dengan resolusi tinggi
    e) Dukung frames serial dengan 5, 6, 7, 8 atau 9 Data bit dan 1
    atau 2 Stop bit
    f) Tahap odd atau even parity dan parity check didukung oleh
    hardware
    g) Pendeteksian data overrun
    h) Pendeteksi framing error
    i) Pemfilteran gangguan (noise) meliputi pendeteksian bit false
    start dan pendeteksian low pass filter digital
    j) Tiga interrupt terdiri dari TX complete, TX data register empty
    dan RX complete.
    k) Mode komunikasi multi-processor
    l) Mode komunikasi double speed asynchronous

10.
Generator Clock
Logic generator clock menghasilkan dasar clock untuk pengirim
dan penerima. USART mendukung empat mode operasi clock: Normal
Asynchronous, Double Speed Asynchronous mode Master Synchronous
dan Slave Synchronous. Bit UMSEL pada USART control dan status
register C (UCSRC) memilih antara operasi Asychronous dan
Synchronous. Double speed (hanya pada mode Asynchronou ) dikontrol
oleh U2X yang mana terdapat pada register UCSRA. Ketika
mengunakan mode operasi synchronous (UMSEL = 1) dan data
direction register untuk pin XCk (DDR_XCK) mengendalikan apakah
sumber clock tersebut adalah internal (master mode) atau eksternal
(slave mode) pin-pin XCK hanya akan aktif ketika menggunakan mode
Synchronous.
Gambar 11 Blok diagram clock generator logic
Keterangan sinyal :
txclk : clock pengirim (internal clock)
rxclk : clock dasar penerima (internal clock)
xcki : input dari pin XCK (sinyal internal). Digunakan untuk operasi
slave synchronous.
xcko : clock output ke pin XCK (sinyal internal). Digunakan untuk
operasi master synchronous
fosc : frekuensi pin XTAL (system clock)
Generator Internal Clock – Pembangkit Baud rate
Generasi internal clock digunakan untuk mode – mode operasi
master asynchronous dan synchronous. Register USART baud rate
(UBRR) dan down-counter dikoneksikan kepada fungsinya sebagai
programmable prescaler atau pembangkit baud rate. Down-counter,
dijalankan pada system clock ( fosc), dibebani dengan nilai UBRR
setiap counter telah dihitung mundur ke nol atau ketika register
UBRRL ditulisi. Clock dibangkitkan setiap counter mencapai nol.
Clock ini adalah pembangkit baud rate clock output (fosc/( UBBR+1)).
Pemancar membagi baud rete generator clock output dengan 2, 8,
atau 16 cara tergantung pada mode.

11.
Pembangkit output baud rate
digunakan secara langsung oleh penerima clock dan unit-unit
pelindung data. Unit-unit recovery menggunakan suatu mesin status
yang menggunakan 2, 8, atau 16 cara yang tergantung pada cara
menyimpan status dari UMSEL, bit-bit U2X dan DDR_XCK.
Tabel di bawah menunjukan penyamaan perhitungan baud rate
dan nilai UBRR tiap mode operasi mengunakan sumber pembangkit
clock internal.
Tabel 7 Persamaan untuk menyeting perhitungan register baud rate
note: baud rate menunjukan pengiriman rate bit tiap detik (bps)
BAUD :baud rate ( pada bit-bit per detik,bps ) fosc frekuensi sistem
clock osilator
UBRR : terdiri dari UBRRH dan UBBRL,( 0-4095 )
Eksternal Clock
Eksternal clock digunakan untuk operasi mode slave
synchronous. Eksternal clock masuk dari pin XCK dicontohkan oleh
suatu daftar sinkronisasi register untuk memperkecil kesempatan
meta-stabilitas. Keluaran dari sinkronisasi register kemudian harus
menerobos detector tepi sebelum digunakan oleh pengirim dan
penerima.
Proses ini mengenalkan dua period delay clock CPU dan oleh
karena itu maksimal frekuensi clock XCK eksternal dibatasi oleh
persamaan sebagai berikut
Fxck < fosc/4
Keterangan: fosc tergantung pada stabilitas sistem sumber clock.
Operasi Synchronous Clock
Ketika mode sinkron digunakan (UMSEL=1), pin XCK akan
digunakan sama seperti clock input (slave) atau clock output (master).
Dengan ketergantungan antara tepi clock dan data sampling atau
perubahan data menjadi sama. Prinsip dasarnya adalah data input
(on RxD) dicontohkan pada clock XCK berlawanan dari tepi data
output (TxD) sehingga mengalami perubahan.

12.
UCPOL bit UCRSC memilih tepi yang mana clock XCK digunakan
untuk data sampling dan yang mana digunakan untuk perubahan
data. Seperti yang ditunjukan pada gambar di atas, ketika UCPOL nol
data akan diubah pada tepi kenaikan XCK dan dicontohkan pada tepi
XCK saat jatuh. Jika UCPOL dalam kondisi set, data akan mengalami
perubahan pada saat tepi XCK jatuh dan data akan dicontohkan
pada saat tepi XCK naik.
Inisialisasi USART
USART harus diinisialisasi sebelum komunikasi manapun
dapat berlangsung. Proses inisialisasi normalnya terdiri dari
pengesetan baud rate, penyetingan frame format dan pengaktifan
pengirim atau penerima tergantung pada pemakaian. Untuk interrupt
menjalankan operasi USART, global interrupt flag (penanda) sebaiknya
dibersihkan (dan interrupt global disable) ketika inisialisasi dilakukan.
Sebelum melakukan inisialisasi ulang dengan mengubah baud
rate atau frame format, untuk meyakinkan bahwa tidak ada transmisi
berkelanjutan sepanjang periode register yang diubah. Flag TXC dapat
digunakan untuk mengecek bahwa pemancar telah melengkapi
semua pengiriman, dan flag RXC dapat digunakan untuk mengecek
bahwa tidak ada data yang tidak terbaca pada buffer penerima.
Tercatat bahwa flag TXC harus dibersihkan sebelum tiap transmisi
(sebelum UDR ditulisi) jika itu semua digunakan untuk tujuan
tersebut.

Tidak ada komentar:

Posting Komentar