64686683 Trainer Book ATMega16 ok

download 64686683 Trainer Book ATMega16 ok

of 64

description

vjvjhv

Transcript of 64686683 Trainer Book ATMega16 ok

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    1/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    2/64

    DAFTAR ISI

    i

    ii

    BAB I MENGENAL ATMEGA 161. ... 1

    2. 2

    3. .. 3

    4. ... 4

    BAB II MENGENAL BAHASA C

    1. 5

    2. 83. 11

    BAB III TRAINER MIKROKONTROLER

    1. Modul Boar .. 15

    2. . 16

    3. Menggunakan Trainer Mikrokontroler 18

    BAB IV APLIKASI INPUT/OUTPUT MIKROKONTROLER

    1. 20

    2. Contoh Program 21

    BAB V INTERUPSI

    1. 28

    2. . 29

    BAB VI APLIKASI DENGAN SEVEN SEGMEN

    1. 32

    2. 33

    BAB VII APLIKASI DENGAN MATRIK LED

    1. 35

    2. 38

    BAB VIII TIMER/COUNTER

    1. 49

    2. 52

    3. 54

    4. 54

    BABIX PWM 61

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    3/64

    BAB I

    MENGENAL ATMEGA16

    1.

    Pengenalan Mikrokontroler AVRATMEGA16 merupakan salah satu jenis mikrokontroler AVR. Mirkokontroler

    AVR( ) standar memiliki arsitektur 8 bit, dimana semua

    instruksi dikemas dalam kode 16-bit, dan sebagian besar intruksi dieksekusi dalam

    1(satu) siklus clock.AVRberteknologiRISC(Reduced Instruction Set Computing),

    sedangkanMCS51berteknologi CISC (Complex Intruction Set Computing).

    AVRdapat dikelompokkan menjadi empat kelas, yaitu keluargaAttiny, keluarga

    AT902xx, keluarga Atmega, dan keluargaAT86RFxx. Pada dasarnya yang membedakan

    masing-masing kelas adalah memori, peripheral, dan fungsinya. Silahkan buka

    www.atmel.com untuk informasi lebih lanjut tentang berbagai variasiAVR. Untuk

    mikrokontrolerAVRyang berukuran lebih kecil, dapat menggunakanAtmega8,

    Attiny2313dengan ukuranFlash Memory2KB dengan dua input analog.

    Mikrokontroler pada dasarnya diprogram dengan bahasa assembler. Tetapi Saat ini

    mikrokontroler dapat deprogram dengan menggunakan bahasa tingkat tinggi sepert

    BASIC,PASCAL atau C. Bahasa tingkat tinggi tersebut memiliki beberapa keuntungan

    dibandingkan dengan bahasa asembler :

    Lebih mudah membangun program dengan menggunakan bahasa tingkat tinggi

    Perbaikan program lebih mudah jika program dibangun menggunakan bahasa

    tingkat tinggi

    Testingprogram didalam bahasa tingkat tinggi lebih mudah

    Bahasa tingkat tinggi lebih banyak dikenal dan error program yang dibuat dapat

    dihindari

    Mudah mendokumentasikan sebuah program tingkat tingggi

    Meskipun demikian, bahasa tingkat tinggi juga memiliki beberapa kelemahan,

    contohnya ukuran kode memori biasanya besar, dan program yang dibangun

    menggunakan bahasa asemblerbiasanya bekerja cepat dibangdingkan dengan program

    yang dibangun menggunakan bahasa tingkat tinggi.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    4/64

    2. Fitur ATMEGA16

    ATMega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer

    sistem untuk mengoptimasi konsumsi daya versus kecepatan proses. Beberapa

    keistimewaan dari AVR ATMega16 antara lain:

    Arsitektur RSIC

    - 130 intruksi yang umumnya hanya membutuhkan 1 siklus clock.

    - 32x8 generalpurpose register.

    - Troughput hampir mencapai 16 MIPS pada frekuensi 16 MHz.

    - CPU yang terdiri dari 32 register.

    Nonvolatile Program and Data Memories

    - Memory Flashsebesar 16KB dengan kemampuanRead While Write.

    - Optional Boot Code Section with Independent Lock Bits

    - EEPROMsebesar 512 byte dapat diprogram saat operasi.

    - Internal SRAMsebesar 1KB.

    Peripheral Features

    - Dua buah timer/counter 8 bit denganprescaler terpisahdan mode compare

    - Satu buah timer/counter 16 bit dengan prescaler terpisah, mode compare dan

    mode capture

    - Real Time Counter with Separate Oscillator

    - 4 chanel PWM

    - ADC (Analog to Digital Converter) 10 bit sebanyak 8channel.

    - Portantarmuka SPI.

    - Port USARTprogrammable untuk komunikasi serial.

    - Watchdog Timerdengan oscilator internal.

    Fitur spesial mikrokontroler

    - Power-on Reset and Programmable Brown-out Detection- Internal Calibrated RC Oscillator

    - Unit interupsi internal dan eksternal.

    - Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down,

    Standby and Extended Standby

    Saluran I/O

    - Saluran I/O ada 32 buah, yaitu Port A, Port B, Port C, dan Port D

    - 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLFTegangan operasi

    - 2.7 - 5.5V untuk Atmega16L

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    5/64

    - 4.5 - 5.5V untuk Atmega16

    Spedd grade

    - 0 8 MHz untuk ATMEGA16L

    - 0 16 untuk ATMEGA16

    3. Pin ATMEGA16

    Atmega 16 memepunyai kaki standart 40 pin PID yang mempunyai fungsi sendiri-

    sendiri. Untuk lebih jelas tentang konigurasi Pin Atmega 16 bisa di lihat pada gambar

    berikut:

    Berikut penjelasan umum susunan kaki Atmega16 tersebut:

    VCC merupakan pin masukan positif catudaya.

    GND sebagaiPIN ground.

    Port A (PA0 ... PA7) merupakan pin I/O dua arah dan dapat diprogram sebagai pin

    masukan ADC.

    Port B (PB0 ... PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu

    Timer/Counter, Komparator Analog, dan SPI.

    Port C (PC0 ... PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu

    TWI, komparator analog, dan Timer Oscilator.

    Port D (PD0 ... PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu

    komparator analog, interupsi eksternal, dan komunikasi serial.

    Reset merupakan pin yangdigunakan untuk mereset ke kondisi semula.

    XTAL 1 dan XTAL 2 sebagai pin masukan clock eksternal.

    AVCC sebagai pin masukan tegangan untuk ADC.

    AREF sebagai pin masukan tegangan referensi.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    6/64

    4. Status register

    Status register adalah register berisi status yang dihasilkan pada setiap operasi yang

    dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU

    mikrokontroller. Gambar berikut adalah status register ATMEGA16.

    Bit 7 6 5 4 3 2 1 0

    I T H S V N Z C SREG

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Bit7 : I (global interupt enable)

    Bit yang mengaktifkan interupsi, jika terjadi interupsi yang dipicu oleh

    hardware I akan di-clear dan akan di set kembali menggunakan interupsi RETI

    Bit6 : T (Bit copy interupt)

    Bit5 : H (Half Carry Flag)

    Bit4 : S (Sign Bit)

    Bit S merupakan hasil operasi EXOR antara flag N (negative) dan flag V

    (komplemen dua overflow)

    Bit3 : V (

    Bit berguna untuk mendukung operasi aritmatika

    Bit2 : N (Negtive Flag)

    Apabila suatu operasi menghasilkan bilangan negative, maka flag N akan di

    set.

    Bit1 : Z (Zero Flag)

    Bit akan di set bila operasi yang diperoleh adalah nol

    Bit0 : C (Carry flag)

    Bit akan diset bila hasil operasi menghasilkan carry

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    7/64

    BAB II

    MENGENAL BAHASA C

    1.

    Penulisan Bahasa C

    Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan ATMEL

    menggunakan software CodeVision AVR. CodeVision AVR merupakan software C-

    cross compiler, program dapat ditulis dalam bahasa C, CodeVisionAVR memiliki IDE

    (integrated development environment) yang lengkap, sehingga penulisan program,

    compile, link, pembuatan code mesin (assembler) dan download program ke chip AVR

    dapat dilakukan pada CodeVision. Berikut ini adalah aturan penulisan program dalam

    bahasa C menggunakan CodeVision AVR

    Preprocessor (#):

    Digunakan untuk memasukan

    (include) text dari file lain dan

    mendefinisikan macro

    /*

    Atau jika untuk satu baris saja

    Inisialisasi

    Program utama

    Program akan berulang terus karena syarat while (1) akan

    selalu menghasilkan nilai benar (true)

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    8/64

    Penjelasan:

    Preprocessor (#) : digunakan untuk memasukan (include) text dari file lain,

    mendefinisikan macro yang dapat mengurangi beban kerja pemrograman dan

    meningkatkan legibility source code mudah dibaca.

    #define : digunakan untuk mendefinisikan macro.

    Contoh : #define sensor PINA.5

    #define SUM(a,b) a+b

    Komentar : penulisan komentar untuk beberapa baris sekaligus

    Sedangkan penulisan komentar untuk 1 baris saja

    Identifer : nama yang diberikan pada variable, fungsi, label atau objek lain.

    Identifer dapat mengandung huruf dan angka

    ). Identifer berdifat case sensitive. Identifer dapat mencapai maksiml 32 karakter.

    Konstanta

    Cara menuliskan konstanta adalah:

    - Konstanta integer dan long integer ditulis dalam bentuk desimal (1234), dalam

    bentuk biner mempunyai awalan 0b (0b01011100), dalam bentuk hexadesimal

    mempunyai awalan 0x (0x0e) atau dalam oktal mempunyai awalan o (o765).

    - Unsigned integer mempunyai akhiran U (10000U)

    - long integer mempunyai akhiran L (99L)

    - unsigned long integer mempunyai akhiran UL (99UL)

    - floating point mempunyai akhiran F (1.234F)

    - character

    Tipe data yang ada dalam bahasa C adalah sebagai berikut:

    Tipe Ukuran (Bit) Range

    Bit 1 0, 1 (tipe data bit hanya dapat digunakan untuk

    variabel global)

    Char 8 -128 sampai 127

    Unsigned char 8 0 sampai 255

    Signed char 8 -128 sampai 127

    Int 16 -32768 sampai 32767

    Short int 16 -32768 sampai 32767

    Unsigned int 16 0 sampai 65535

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    9/64

    Signed in 16 -32768 sampai 32767

    Long int 32 -2147483648 sampai 2147483647

    Unsigned long int 32 0 sampai 4294967295

    Signed long int 32 -2147483648 sampai 2147483647

    Float 32 + 1.175e-38 sampai + 3.402e38

    Double 32 + 1.175e-38 sampai + 3.402e38

    Operator yang dapat digunakan pada bahasa C adalah:

    Jenis operator Operator Keterangan

    Operator kondisi

    < Lebih kecil

    < = Lebih kecil atau sama dengan

    > Lebih besar

    > = Lebih besar atau sama dengan

    = = Sama dengan

    ! = Tidak sama dengan

    Operator aritmatika

    + Penjumlahan

    - Pengurangan

    * Perkalian

    / Pembagian

    % Modulus (sisa bagi)

    Operator logika

    ! Boolean not

    && Boolean and

    | | Boolean or

    Operator bitwise

    ~ Komplemen bitwise

    & Bitwise and

    | Bitwise or

    ^ Bitwise exor

    >> Right shift

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    10/64

    >> = Untuk memasukan shift right

    &= Untuk memasukan bitwise and

    ^ = Untk memasukan bitwise exor

    \ = Untuk memasukan bitwise or

    2. Program Kontrol

    a. Percabangan

    Digunakan untuk melakukan operasi perabangan bersyarat. Sintaks penulisan if

    dapat ditulis sebagai berikut:

    Jika hasil testing expresion memberikan hsil tidak nol, statemen dilaksanakan.

    Pada keadaan sebaliknya statemen 2 yang akan dilaksanakan. Sebaiknya perintah

    if untuk beberapa kondisi dilakukan dengan menggunakan blok-blok.

    Percabangan switch

    intah switch. Dalam pernyataan

    switch sebuah variabel secara berurutan diuji oleh beberapa konstanta bilangan

    bulat atau konstanta karakter. Sintaks perintah switch dapat dilihat sebagai berikut:

    Hal-hal yang harus diperhatikan:

    - Switch hanya dapat memeriksa variabel terhadap sebuah konstanta, sedangkan if

    dapat memeriksa persyaratan perbandingan (lebih besar, lebih kecil, dll).

    - Tidak ada konstanta yang sama dalam sebuah switch

    - Perintah switch jika dimanfaatkan dengan tepat dapat memberikan hasil yang

    /atau bersarang.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    11/64

    b. Perulangan (looping)

    For

    Untuk pengulangan yang melakukan proses increment dan dicrement. Sintaks

    perintah for untuk pengulangan incrementdapat ditulis sebagi berikut:

    Sintaks untuk pengulangan decrement dapat ditulis sebagai berikut:

    Syarat loop adalah pernyataan relasional yang menyatakan syarat berhentinya

    pengulangan, biasanya berkaitan dengan variabel kontrol, nama_variabel++, dan

    nama_variabel --, menyatakan proses increment dan proses decrement pada

    variabel kontrol.

    While

    Perintah while dapat melakukan looping apabila persyaratan benar. Sintaks

    perintah while dapat ditulis sebagai berikut:

    Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum

    melakukan looping. Hal ini sebenarnya tidak perlu, untuk mengatasi hal tersebut

    adalah sebagai berikut:

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    12/64

    c. Array

    Array adalah deretan variabel yang berjenis sama dan mempunyai nama yang sama.

    Setiap anggota deretan (elemen) diberi nomor yang disebut indeks. Array diatur agar

    mempunyai lokasi memory yang bersebelahan dengan alamat terkecil menunjukan

    elemen array pertama dan alamat terbesar menunjukan elemen terakhir. Alamat array

    dapat diakses dengan menggunakan alamat indeksnya. Bentuk deklarasi array adalah

    sebagi berikut:

    d.

    Fungsi

    Sebuah program yang besar dapat dipecah-pecah menjadi beberapa subprogram yang

    terpisah yang melakukan fungsi tertentu. Subprogram yang seperti itu disebut fungsi.

    Fungsi merupakan sebuah blok yang melingkupi beberapa perintah. Deklarasi fungsi

    dapat dilakukan dengan cara:

    Parameter dalam fungsi dapat dijelaskan sebagai berikut:

    - Tipe adalah nilai yang dihasilkan oleh fungsi, jika tidak dinyatakan hasil fungsidisebut integer.

    - Argumen : deklarasi variabel apa saja yang dibutuhkan oleh fungsi dan bersifat

    optional.

    - Fungsi dengan nilai balik (return value)

    Fungsi ini memberikan hasil yang berupa nilai. Contoh:

    - Fungsi tanpa nilai balik

    Fungsi ini tidak memberikan hasil berupa nilai melainkan berupa sebuah proses.

    Fungsi ini bertipe void. Contoh:

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    13/64

    - Pernyataan return

    Pernyataan return dapat menyatakan dua hal yaitu:

    1. return mengakhiri jalanya fungsi dan kembali keprogram utama

    2. mengirim nilai balik

    Fungsi dapat ditulis pada akhir program dengan membuat sebuah prototype function

    dibagian awal proogram. Cara menulis fugsi seperti itu memberikan kemudahan bagi

    programer untuk memeriksa dan membaca ulang sebuag program yang besar.

    parameter dalam sebuah fungsi ada dua yaituparameter actual danparameter formal.

    Parameter actual adalah parameter yang terdapat pada saat pemanggilan fungsi,

    parameter formal adalah parameter pada saat fungsi itu dibuat. Contoh:

    3. Library Function pada CodeVisionAVR

    a. Fungsi input/output

    \INC. berkut

    adalah beberapa fungsi dasar yang disediakan oleh code vision .

    - char getchar(void) : menghasilkan nilai balikan berupa karakter yang diterima

    dari UART, menggunakan sistem polling (menerima data serial).

    -

    sistem polling (mengirimkan data serial).

    Sebelum menggunakan fungsi ini, lakukan terlebih dahulu pengaturan konfigurasi

    komunikasi serial:

    - inisialisasi baudrate UART

    - mengaktikan transmitter UART

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    14/64

    - mengaktifkan receiver UART

    Fungsi I/O yang lainya menggunakan getchar dan putchar, seperti:

    - void puts(char *str) : output, menggunakan putchar, null mengakhiri karakter

    string, berlokasi di SRAM

    - void putsf(char flash *str) : output menggunakan, putchar, null mengakhiri

    karakter string, berlokasi di FLASH

    - void printf (char flash *fmtstr[arg1, arg2, ...]) : output text terformat,

    menggunakan putchar, sesuai dengan format specifiers dalam fmtstr string.

    b. Fungsi tipe karakter

    \INC. berkut

    adalah beberapa fungsi tipe karakter yang disediakan oleh code vision

    - char toascii (char c) : konersi char c menjadi tipe ascii

    - char toint (char c) ; menginterprestasikan karakter c sebagai digit hexa desimal

    dan mengkonversikan mejadi unsigned char dari 0 hingga 15

    - char tolower (char c) : mengubah karakter c ke huruf kecil

    - char toupper (char c) : mengubah karakter kehuruf besar

    c. Standard library Function

    \INC

    - Int atoi (char *str) : mengubah string menjadi integer- Long int atoi (char *str) : mengubah string mejadi long integer

    - void itoa (int n, char *str) : mengubah integer menjadi karakter

    - void itoa (long int n, char *str) : mengubah long integer menjadi karakter

    - void float (float n, unsigned char decimal, char *str) : mengubah bilangan

    floating point menjadi karakter pada string

    d. Fungsi matematika

    \INC. berikut adalahcontoh beberapa fungsi matematika yang disediakan CVAVR.

    - unsigned char cabs (signed char x) : menghasilkan nilai absolute dari byte x

    - unsigned int abs (int x) : menghasilkan nilai absolute dari bilangan integer x

    - unsigned long labs (long int x) : menghasilkan nilai absolute dari bilangan long

    integer x

    - float abs (float x) : menghsilkan nilai absolute dari bilangan floating point x

    - signed char cmax (signed char a, signed char b) : menghasilkan nilai maksimum

    dari byte a dan b

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    15/64

    - long int lmax (long int a, long int b) : menghasilkan nilai maksimum dari long

    integer a dan b.

    - signed char csign (signed char x) ; menghasilkan -1, 0, 1 jika byte x negative, nol,

    positif

    - unsigned char isqrt (unsigned int x) : menghasilkan akar kuadrat dari unsigned

    integer x

    e. Fungsi konversi BCD

    \INC

    - unsigned char bcd2bin (unsigned char n) : mengubah bilangan n dari bcd ke nilai

    binernya.

    - Unsigned char bin 2 bcd (unsigned char n) : mengubah bilangan n dari biner ke

    nilai BCDnya, bilangan n harus (0 99)

    f. Fungsi LCD

    Fungsi lcd ditujukan ntuk mempermudah interfacing antara program c dengan modul

    alphanumeric LCD yang dibuat dengan chip hitachi HD44780 atau yang lainya.

    dimasukan (include) jika kita ingin menggunakan fitur fungsi lcd. Sebelum

    menggunkan fungsi ini terlebih dahulu harus diatur port mikrokontroler yang

    digunakan untuk komunikasi dengan modul LCD. Format lcd dalam modul lcd.hmendukung : 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 dan 2x40 karakter.

    Fungsi untuk mengakses lcd diantaratnya adalah:

    - Unsigned char lcd_init (unsigned char lcd_columns)

    Untuk menginisialisasi modul lcd, menghapus layar dan meletakan fungsi

    karakter pada baris ke 0 kolom ke 0. Jumlah kolom dalam lcd harus disebutkan

    (misal 16). Kursor tidak dtampakan. Nilai yang dikembalikan adalah 1 bila

    modul lcd terdeteksi, dan bernilai 0 jika tidak terdapat modul lcd. Fungsi iniharus dipanggil pertama kali sebelum menggunakan fungsi yang lain.

    - void lcd_clear (void)

    menghapus layar lcd dan meletakan karakter pada baris ke 0 kolom ke 0

    - void lcd_gotoxy (unsigned char x, unsigned char y)

    meletakan posisi karakter pada kolom ke x baris ke . nomor baris dankolom

    dimulai dari nol

    - void lcd_putchar (char c)

    menampilkan karakter pada lcd

    - void lcd_puts (char *str)

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    16/64

    menampilkan string yang disimpan pada SRAM pada lcd

    - void lcd_putsf (char flash *str)

    menampilkan string yang disimpan pada flash pada LCD.

    g. Fungsi delay

    Menghasilkan delay dalam program c, berada pada header delay.h yang harus

    dimasukan (include) sebelum digunakan. Sebelum memanggil fungsi, interupsi harus

    dimatikan terlebih dahulu, bila tidak maka delay akan lebih lama dari yang

    diharapkan. Juga sangat penting untuk menyebutkan frekuens clock chip IC AVR

    yang digunakan. Fungsi delay yang disediakan adalah :

    - void delay_us (unsigned int n)

    fungsi ini menghasilkan delay selama n mikro sekon, n adalah nilai konstan.

    - void delay_ms (unsigned int n)

    - fungsi ini menghasilkan delay selama n mili sekon, n adalah nilai konstan.

    Kedu fungsi tersebut secara otomatis akan mereset watchdog timer setiap 1

    milisekon dengan mengaktifkan intruksi wdr.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    17/64

    BAB III

    TRAINER MIKROKONTROLER

    1.

    Modul Board Mikrokontroler

    Trainer mikrokontroler merupakan modul board yang dapat digunakan untuk belajar

    pemrograman mikrokontroler. Spesifikasi modul board yang digunakan adalah :

    Chip mikrokontroler : ATMEGA16 / ATMEGA8535

    Downloader (ISP) : ATMEGA8 (on board)

    Firmware programmer : usb asp

    Pin output : 8 buah led pada port B (0 7)

    Pin input

    : - dip switch 8 chanel pada port C (0 7)

    - 4 push button NO pada port D (4 7)

    Free pin: 12 port yaitu port A (0 7), port D (0 3) dapat

    difungsikan sebagai port I/O

    Fitur lain: - 4 buah seven segmen common anoda

    - Dot matrik 5 x 7

    Supply : 5 V DC (menggunakan keluaran USB komputer)

    Berikut adalah gambar prototype board trainer mikrokontroler:

    indikator board

    indikator downloader Port B led output Reset

    Button- PD0

    Button- PD1

    Button- PD2 (INT0) Button- PD3 (INT1)

    Seven segmen 1 - 4

    PWM led

    Matrik 5x7

    indikator busy

    Port C - input

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    18/64

    2. Instalasi Trainer Mikrokontroler

    Modul board mikrokontroler ini menggunakan firmware usb asp. Firmware ini sebaiknya

    digunakan pada windows Xp. Sebelum trainer mikrokontroler ini digunakan harus

    dilakukan instlasi terlebih dahulu. Tahap instalasi firmware adalah sebagai berikut:

    a. Hubungkan USB ke komputer, dan led akan menyala

    b. Klik next dan p install from a list or spesific location (advanced)

    c.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    19/64

    d. Include this location in the search

    e. Klik next dan tunggu sampai instalasi selesai

    f. Untuk mengetahui perangkat sudah terinstall dengan benar, lihat pada informasi

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    20/64

    3. Menggunakan Trainer Mikrokontroler

    Setelah usb asp terinstal, modul board sudah dapat digunakan untuk mendownload

    program dari komputer. Supaya lebih mudah, kita gunakan software khazama. Caranya

    adalah sebagai berikut:

    a. Buka software khazama dan pilih chip AVR yang akan di program

    b. Open program dengan cara tekan Ctrl+L atau klik File Load Flash file to Buffer

    c. File yang dibuka adalah

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    21/64

    d.

    e. Jika proses download program berhasil maka akan muncul seperti gambar berikut

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    22/64

    BAB IV

    APLIKASI INPUT/OUTPUT MIKROKONTROLER

    1.

    Setting Port I/O

    Atmega 16 memiliki 4 buah port I/O yaitu port A, port B, port C, dan port D yang

    masing masing terdiri dari 8 buah kaki. Sehingga secara keseluruhan Atmega16 memiliki

    32 buah kaki bidirectional yang dapat diprogram sebagai input atau output dengan pilihan

    internal pull-up. Masing port memiliki 3 buah register bit, yaitu DDxn, PORTxn dan

    PINxn. Huruf x mewakili nama port, sedangkan n mewakili nama bit. Bit DDxn terdapat

    pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx dan bit PINxn

    terdapat pada I/O addres PINx.

    Deskripsi register untuk port A, port B, port C dan port D sama yaitu terdiri dari

    DDxn, PORTxn dan PINxn berikut adalah deskripsi register untuk port A.

    Port A data register - PORTA

    Bit 7 6 5 4 3 2 1 0

    PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0 PORTA

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Port A data direction register - DDRA

    Bit 7 6 5 4 3 2 1 0

    DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA0 DDRA

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Port A input pin addres - PINA

    Bit 7 6 5 4 3 2 1 0

    PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0 PINAA

    Read/write R R R R R R R R

    Initial Value N/A N/A N/A N/A N/A N/A N/A N/A

    Port I/O pada mikrokontroler AVR dapat difungsikan sebagai input atau output,

    dengan cara mengubah isi I/O register Data Direction Register. Bit DDxn dalam register

    DDRx (Data Direction Register) menentukan arah pin. Berikut adalah tabel pengaturan

    port I/O :

    DDR bit =1 DDR bit = 0

    PORT bit = 1 Output high Input pull-up

    PORT bit = 0 Output low Input floating

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    23/64

    Misalnya :

    Jika kita ingin Port C dikonfigurasikan sebagai ouput, maka DDRC (data direction register

    port C) harus diset 0b11111111 atau 0xFF atau 255. Jika port C sebagai output, maka

    DDRC harus diset 0x00 atau 0b00000000 atau 0.

    Contoh:

    Setiap pin I/O mikrokontroler AVR memiliki internal pull up. Misalnya port B

    dikonigurasikan sebagai input dan internal pull up nya diaktifkan, maka DDRB = 0x00 dan

    PORTB = 0xFF.

    Contoh:

    Untuk membaca data pada salah satu port, dapat digunakan fungsi PINx, sedangkan untuk

    membaca data per pin pada suatu port dapat digunakan fungsi PINx.bit

    Contoh:

    dan arusnya sebesar 20 mA. Port I/O sebagai output hanya memberikan arus (sourcing)

    sebesar 20 mA, keluaran dari suatu port mikrokontroler hanya dapat mengemudikan

    perangkat output dengan arus yang kecil, sehingga untk peralatan elektronika dengan arus

    yang besar perlu diberikan penguat tambahan, oleh karena itu biasanya dipergunakan

    penguat lagi berupa transistor atau IC penguat.

    2. Contoh Program Aplikasi

    a.

    Program blink led

    Menyalakan dan mematikan led, output berupa 8 buah led aktif low pada port B (PB0

    PB7). Berikut adalah cara membuat program menggunakan CodeWizardAVR

    - Create new file (klik projrect)

    - Setting clock Amega16 sebesar kristal yang digunakan yaitu 12 MHz

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    24/64

    - Konfigurasi port B sebagai output

    - Save program

    - Tuliskan program

    Program :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    25/64

    - Build program dengan menekan Ctrl+F9 atau klik project build all

    - Download program menggunakan software khazama, caranya:

    Atur chip AVR yang digunakan

    Program yang ditulis

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    26/64

    Open program, dengan cara tekan Ctrl+L atau klik file load file flash

    to buffer. Program yang didownloadkan adalah hasil compile dari

    CVAVR yang

    Lalu klik Auto Program

    b.

    Program nyala berurutan

    Menyalakan dan mematikan led secara berurutan, output berupa 8 buah led aktif low

    pada port B (PB0 PB7). Gunakan CodeWizardAVR untuk membuat program.

    - Create new file

    - Konfigurasi chip, clock dan port B sebagai output

    - Save program

    - Tuliskan program

    - Build dan download program ke Atmega16Program :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    27/64

    c.

    Program SakelarPort C sebagai input dan Port B sebagai output. Langkah memprogram:

    - Create new file

    - Konfigurasi chip, clock

    - Konfigurasi port B sebagai output dan port C sebagai input

    - Save program

    - Tuliskan program

    - Build dan download program ke Atmega16

    Program :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    28/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    29/64

    BAB V

    INTERUPSI

    Interupsi adalah keadaan dimana saat program utama dieksekusi oleh CPU, kemudian tiba-

    tiba berhenti untuk sementara waktu karena ada rutin lain yang harus ditangani oleh CPU, dan

    setelah selesai mengerjakan rutin tersebut, CPU kembali mengerjakan rutin utama. Amega 16

    memili 21 sumber interupsi yang ditujukan pada tabel dibawah ini.

    No

    Vektor

    Alamat

    Program

    Sumber

    InteruptKeterangan

    1 $000(1) RESETExternal pin, power on reset, brown-out

    reset, Watchdog reset, JTAG AVR reset

    2 $002 INT0 Eksternal interupt request 03 $004 INT1 Eksternal interupt request 1

    4 $006 TIMER2 COMP Timer/Counter compare match

    5 $008 TIMER2 OVF Timer/counter overflow

    6 $00A TIMER1 CAPT Timer/counter capture event

    7 $00C TIMER1 COMP A Timer/counter 1 compare match A

    8 $00ETIMER 1 COMP

    B

    Timer/counter 1 compare match B

    9 $010 TIMER 1 OVF Timer/counter 1 overflow

    10 $012 TIMER 0 OVF Timer/counter 2 overflow

    11 $014 SPI, STC Serial transfer complete

    12 $016 USART, RXC USART, Rx Complete

    13 $018 USART, UDRE USART data register empty

    14 $01A USART, TXC USART, Tx Complete

    15 $01C ADC ADC conversion complete16 $01E EE_RDY EEPROM ready

    17 $020 ANA_COMP Analog comparator

    18 $022 TWI Two wire serial interface

    19 $024 INT2 External interupt request2

    20 $026 TIMER 0 COMP Timer/counter 0 compare match

    21 $028 SPM_RDY Store program memory ready

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    30/64

    1. Interupsi eksternal

    Pada Atmega16 terdapat 3 pin untuk interupsi eksternal, yaitu INT0, INT1, INT2.

    Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi eksternal diatur oleh

    register MCUCR (MCU control register), seperti gambar berikut.

    Bit 7 6 5 4 3 2 1 0

    SM2 SE SM1 SM0 ISC11 ISC10 ISC01 1SC0 MCUCR

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    a. Bit ISC01 dan ISC00 menentukan kondisi yang dapat menyebabkan interupsi eksternal

    pada pin INT0. Konfigurasi bit ISC01 dan ISC00 dapat dilihat pada tabel dibawah ini.

    ISC01 ISC00 Keterangan

    0 0 Logika 0 pada pin INT0 menyebabkan interupsi

    0 1 Perubahan logika pada INT0 menyebabkan interupsi

    1 0 Perubahan logika dari 1 ke 0 pada pin INT0 menyebabkan interupsi

    1 1 Perubahan logika dari 0 ke 1 pada pin INT0 menyebabkan interupsi

    b. Bit ISC11 dan ISC10 menentukan kondisi yang dapat menyebabkan interupsi eksternal

    pada pin INT1. Konfigurasi bit ISC11 dan ISC10 dapat dilihat pada tabel dibawah ini.

    ISC11 ISC10 Keterangan

    0 0 Logika 0 pada pin INT1 menyebabkan interupsi

    0 1 Perubahan logika pada INT1 menyebabkan interupsi

    1 0 Perubahan logika dari 1 ke 0 pada pin INT1 menyebabkan interupsi

    1 1 Perubahan logika dari 0 ke 1 pada pin INT1 menyebabkan interupsi

    Pemilihan pengaktifan interupsi eksternal diatur oleh register GICR (general interupt

    control register), seperti dalam gambar berikut:

    Bit 7 6 5 4 3 2 1 0

    INT1 INT0 INT2 - - - IVSEL IVSE GICR

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Bit-bit INT1, INT0, INT2 pada register GICR digunakan untuk mengaktifkan masing-

    masing interupsi eksternal. Ketika bit-bit tersebut di set 1 (aktif), maka interupsi eksternal

    akan aktif. Jika bit I (interupt) pada SREG (status register) diset 1 maka enable interupt,

    intruksi untuk mengaktifkan globa interupt yaitu sei. Program interupsi dari masing-

    masing interupsi akan dimulai dari vektor interupsi pada masing-masing jenis interupsi

    eksternal.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    31/64

    2. Praktik interupsi eksternal

    Berikut adalah program interupsi eksternal INT 0 dan INT 1 aktif. Led akan nyala

    bergantian, ketika ditekan push button PD2 (int 0 aktif) maka led akan menyala flip-flop,

    ketika ditekan push button PD3 (int1 aktif) maka akan menjadi blink led.

    Langkah kerja:

    - Create new file

    - Konfigurasi chip, clock

    - Konfigurasi port B sebagai output dan PD 2 dan PD3 sebagai input pull up

    - Aktifkan INT0 dan INT1

    - Save program

    - Tuliskan program- Build dan download program ke Atmega16

    Program:

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    32/64

    Program Flip-flop

    Program blink led

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    33/64

    Program Utama, nyala

    bergatian

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    34/64

    g10

    f9

    CA8

    a7

    b6

    1e

    2d

    3CA

    4c

    5D

    b

    a

    c

    f

    e

    d

    g

    Dp

    BAB VI

    APLIKASI DENGAN SEVEN SEGMEN

    1.

    Seven Segmen

    Seven segmen merupakan kumpulan dari 8 buah led A, B, C, D, E, F,

    G, Dp yang disusun sedemikian rupa sehingga membentuk seven

    segmen. gambar disamping adalah konfigurasi pin dari seven segmen:

    Pada trainer mikrokontroler yang kita gunakan, menggunakan 4 bauh

    seven segmen common anoda yang masing-masing dikendalikan

    melalui PD4, PD5, PD6, PD7. Sebenarnya yang bisa dinyalakan dari

    empat buah seven segmen tersebut hanya salah satu saja. Maka agartampak nyala bersamaan ke empat seven segmen harus dihidupkan

    secara bergantian dengan waktu tunda yang sangat cepat.

    Oleh kerena itu pada masing-masing segmen di drive oleh transistor NPN pada common

    anodanya. Sehingga seven segmen akan nyala jika common anoda berlogika 1 dan kaki

    lainya berlogika 0. Berikut adalah tabel format penyalaan seven segmen aktive low.

    Angka7 6 5 4 3 2 1 0

    Hexap g f e d c b a

    0 1 1 0 0 0 0 0 0 C0

    1 1 1 1 1 1 0 0 1 F9

    2 1 0 1 0 0 1 0 0 A4

    3 1 0 1 1 0 0 0 0 B0

    4 1 0 0 1 1 0 0 1 99

    5 1 0 0 1 0 0 1 0 92

    6 1 0 0 0 0 0 1 0 82

    7 1 1 1 1 1 0 0 0 F8

    8 1 0 0 0 0 0 0 0 80

    9 1 0 0 1 0 0 0 0 90

    A 1 0 0 0 1 0 0 0 88

    B 1 0 0 0 0 0 1 1 83

    C 1 1 0 0 0 1 1 0 C6

    D 1 0 1 0 0 0 0 1 A1

    E 1 0 0 0 0 1 1 0 86

    F 1 0 0 0 1 1 1 0 8E

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    35/64

    2. Program Aplikasi Seven Segmen

    a. Program menyalakan seven segmen 1, 2, 3, 4

    b. Program up counter

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    36/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    37/64

    BAB VII

    APLIKASI DENGAN MATRIK LED

    1.

    Menampilkan karakter

    Dot matrik atau matrik led merupakan kumpulan led yang tersusun menjadi sejumlah

    kolom dan baris.contaohnya seperti yang ada pada trainer mikrokontroler yang kita

    gunakan yaitu dot matrik 5x7. Dot matrik 5x7 terdiri dari 5 baris dan 7 kolom. Untuk

    menyalakan satu led diberi tegangan ke anoda dan menghubungkan katoda ke ground.

    Untuk menghasilkan angka atau huruf, led tidak bisa ditampilkan secara bersamaan tetapi

    led ini diaktifkan baris demi baris dengan cepat. Proses ini di ulangi untuk baris dan kolom

    selanjutnya, proses ini dinamakanscanning. Berikut gambar rangkain dari dot matrik 5x7:

    a. Program menampilkan karakter A

    Karakter PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

    A

    PD4 0 1 1 0 0 0 0 0

    PD5 1 0 0 1 0 0 0 0

    PD6 1 1 1 1 0 0 0 0

    PD7 1 0 0 1 0 0 0 0

    PA0 1 0 0 1 0 0 0 0

    -on kan sebuah led

    syaratnya adalah anoda lebih positif dari katoda. Misalnya untuk menghidupkan led

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    38/64

    (1,1) maka PD4 = 1 dan PA7 = 0. Contoh lain untuk menghidupkan led (1,3), (1,4)

    dan (1,7) secara bersamaan, PORTA= 0b11001100, PORTD = 0b0001000. Sedangkan

    u

    memperolehnya dengan cara teknik scanning, yaitu baris pertama aktif, kemudian

    kedu, ketiga dan seterusnya dengan delay yang sangat cepat.

    Program:

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    39/64

    b. Program menampilkan karakter 12

    Karakter PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

    12

    PD4 0 1 0 0 1 1 0 0

    PD5 1 1 0 1 0 0 1 0

    PD6 0 1 0 0 0 1 0 0

    PD7 0 1 0 0 1 0 0 0

    PA0 0 1 0 1 1 1 1 0

    Algoritma pemrogramanya adalah:

    Matikan semua led

    PORTA = 0b10110010; PORTD = 0b00010000; delay;

    PORTA = 0b00101100; PORTD = 0b00100000; delay;

    PORTA = 0b10111010; PORTD = 0b01000000; delay;

    PORTA = 0b10110110; PORTD = 0b10000000; delay;

    PORTA = 0b10100001; PORTD = 0b00000000; delay; ulang dari baris

    pertama

    Program:

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    40/64

    2.

    Menampilkan karakter berjalan

    Menampilkan tulisan ATMEGA 16 berjalan. Berikut adalah proses penampilan tulisan

    berjalan.

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    41/64

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

    PA7 PA6 PA5 PA4 PA3 PA2 PA1

    PD4

    PD5

    PD6

    PD7

    PA0

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    42/64

    Dan seterusnya sampai didapat tulisan mikrokontroler. Caranya yaitu dengan cara

    memprogram pertahapan gambar diatas, dengan delay 0,5 s tiap tahapnya tulisan akan

    nampak berjalan. Berikut adalah programnya :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    43/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    44/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    45/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    46/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    47/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    48/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    49/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    50/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    51/64

    BAB VIII

    TIMER/COUNTER

    Timer/counter adalah fasilitas dari ATMega16 yang digunakan untuk perhitungan

    pewaktuan. AVR Atmega16 memiliki 3 buah timer diantaranya : timer 0 (8 bit), timer 1 (16

    bit), timer 2 (8 bit).

    1. Timer/Counter 8 bit

    Timer/counter 0 dan timer/counter 2 adalah timer counter 8 bit yang mempunyai multi

    fungsi. Fitur fiturnya yaitu :

    Counter satu kanal

    Timer di nol kan saat match compare (autoreload)

    Glitch free, phase correct pulse width modulation

    Frekuensi generator

    I/O bit clock prescaler

    Interupsi timer yang disebabkan timer overflow (TOVn) dan compare match

    (OCFn)

    Timer/counter 8 bit dapat menghitung maksiml sampai 255 (00 FF h) hitungan,

    dimana periode setiap hitungan tergantung dari setting prescaler-nya. Untuk mengatur jenis

    mode operasi dari timer/counter dan mengatur prescaler digunakan register timer/counter

    control register TCCRn (n =0,2). TCCR adalah register 8 bit, sebagai berikut:

    7 6 5 4 3 2 1 0

    TCCRnFOCn WGMn COMn COMn WGMn CSn CSn Csn

    - 0 1 0 1 2 1 0

    Keterangan :

    Bit 7 : FOCn (force output compare

    Bit 6 dan Bit 3 : WGMn0 dan WGMn1 (waveform Generator Unit), bit

    mengontrol kenaikan dari counter, sumber nilai maksimum dan

    mode operasi timer/counter, yaitu mode normal, clear timer,

    compare match, dan dua tipe PWM.

    a. Mode operasi Timer

    Mode Normal

    Timer digunakan untuk menghitung saja, membuat delay, menghitung selang

    waktu

    Mode PWM, phase correct

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    52/64

    Memberikan bentuk gelombang phase correct PWM resolusi tinggi. Mode phase

    correct PWM berdasarkan operasi dual slope. Counter menghitung berulang-ulang

    dari bottom ke max dan dari max ke bottom.

    CTC (Clear Timer on Compare Match)

    Pada mode CTC, nilai timer yang ada pada TCNTn akan di nol kan lagi jika TCTn

    sudah sama dengan nilai yang ada pada register OCRn, sebelumnya OCR diset

    dulu, karena timer 0 dan 2 maksimumnya 255, maka range OCR 0 255.

    Fast PWM

    Memberikan pulsa PWM frekuensi tinggi. Fast PWM berbeda dengan mode PWM

    lain, fast PWM berdasarkan operasi single sloop. Counter menghitung dari bottom

    hingga top kemudian kembali lagi menghitung dari bottom.

    b. Seting Bit pada Timer 8 bit

    Cara seting timer 8 bit adalah dengan cara mengatur register WGM01 dan WGM00,

    berikut adalah tabel cara mengatur WGM01 dan WGM0.

    ModeWGM01

    (CTC0)

    WGM00

    (PWM0)

    Timer/counter

    mode of

    operation

    TOPUpdate of

    OCR0

    TOV 0 flag

    set-on

    0 0 0 Normal 0xFF Immediate MAX

    1 0 1 PWM, phasecorrect

    0xFF TOP BOTTOM

    2 1 0 CTC OCR0 Immediete MAX

    3 1 1 Fast PWM 0xFF TOP MAX

    Keterangan :

    BOTTOM = 0x00, MAX = 0xFF, TOP = 0xFF atau nilai yang berada pada register

    OCRn tergantung pada mode operasi.

    Bit 5 dan bit 4: COMn1 dan COMn0 (Compare Match Output Mode)

    untuk mengontrol pin Ocn (ouput compare pin), tergantung mode apa yang

    digunakan (nilai WGMn0 dan WGMn1). COMn1 dan COMn0 digunakan untuk

    pengaturan lebih spesifik suatu mode timer. Berikut tabel seting pada bit tersebut

    untuk timer/counter 0 :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    53/64

    - Compare output mode, non PWM mode

    COM01 COM00 Description

    0 0 Normal port operation, OC0 disconected

    0 1 Toogle OC0 on compare Match

    1 0 Clear OC0 on compare match

    1 1 Set OC0 on compare match

    - Compare output mode, Fast PWM mode

    COM01 COM00 Description

    0 0 Normal port operation, OC0 disconected

    0 1 Rserved

    1 0 Clear OC0 on compare match

    1 1 Set OC0 on compare match

    - Compare output mode, phase correct PWM mode

    COM01 COM00 Description

    0 0 Normal port operation, OC0 disconected

    0 1 Reserved

    1 0

    Clear OC0 on compare match when up-

    counting. Set OC0 on compare match whendown-counting

    1 1Set OC0 on compare match. Clear OC0 on

    compare match when down-counting

    Bit 2, bit 1 dan bit 0 : CSn2, Csn1, CSn0 (clock select)

    Sumber clock timer/counter dapat berasal dari internal maupun eksternal. Bit

    CSn2, CSn1, CSn0 digunakan untuk memilih sumber clock yang akan digunakan

    oleh timer/counter dan untuk prescaller, misalnya configurasi bit CSn2, CSn1,

    CSn0 sebagai berikut:

    0 0 0 : timer dihentikan jika diset nilai ini

    0 0 1 : sekali detaknya sama dengan detak oscilator yang digunakan

    0 1 0 : sekali detaknya sama dengan detak oscilator/8, sehingga timer akan

    berdetak setelah oscilator berdetak 8 kali.

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    54/64

    Berikut tabel seting bit tersebut untuk timer counter 0:

    CS02 CS01 CS00 Description

    0 0 0 No clock source (timer/counter stopped)

    0 0 1 ClkI/O/no prescaling

    0 1 0 ClkI/O/8 (from prescaler)

    0 1 1 ClkI/O/64 (from prescaler)

    1 0 0 ClkI/O/256 (from prescaler)

    1 0 1 ClkI/O/1024 (from prescaler)

    1 1 0 Eksternal clock source on T0 pin. Clock on falling edge

    1 1 1 Eksternal clock source on T0 pin. Clock on rising edge

    2. Timer/Counter 16 bit

    Pada mode normal, TCNT1 akan meghitung naik dan membangkitkan interupt

    timer/counter 1 ketika nilainya berubah dari 0xFFFF ke 0x0000. Untuk menggunakan

    timer yang menghitung mundur, cukup dengan memasukan nilai yang diinginkan ke

    TCNT1 dan menunggu sampai erjadi interupt, tetapi untuk timer yang menghitung maju,

    maka nilai yang dimasukan ke dalam TCNT1 nilainya harus 65536 (timer value).

    a. Register timer 16 bit

    TCNT1

    Timer/counter register digunakan untuk menyimpan nilai timer yang diinginkan.

    TCNT1 dibagi menjadi 2 register 8 bit yaitu TCNT1H dan TCNT1L.

    TIMSK & TIFR

    Timer interupt mask regiter dan timer interupt flag register digunakan untuk

    mengendalikan interupt mana yang diaktifkan dengan cara melakukan seting pada

    TIMSK dan untuk mengetahui interupt mana yang sedang terjadi. Berikut adalah

    bit pada register TIMSK (timer/counter interupt mask register).

    Bit 7 6 5 4 3 2 1 0

    OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 TIMSK

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Keterangan:

    Bit7 : OCIE2, timer/counter 2 output compare match interupt enable

    Bit6 : TOIE2, timer/counter2 overflow interupt enable

    Bit5 : TICIE1, timer1 input capture interupt enable

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    55/64

    Bit4 : OCIE1A, timer/counter 1A output compare match interupt enable

    Bit3 : OCIE1B, timer/counter1B output compare match interupt enable

    Bit2 : TOEI1, timer/counter1 overflow interupt enable

    Bit1 : OCIE0, timer/counter0 output compare match interupt enable

    Bit0 : TOEI0 timer/counter0 overflow interupt enable

    Berikut adalah bit pada register TIFR (timer/counter interupt flag register:

    Bit 7 6 5 4 3 2 1 0

    OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR

    Read/write R/W R/W R/W R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    Keterangan:

    Bit7 : OCF2, output compare flag

    Bit6 : TOV2, timer/counter2 overflow flag

    Bit5 : ICF1, timer1 input capture interupt flag

    Bit4 : OCF1A, output compare flag 1A

    Bit3 : OCF1B, output compare flag 1B

    Bit2 : TOV1, timer counter1 overflow flag

    Bit1 : OCF0, output compare flag0

    Bit0 : TOV0, timer/counter0 overflow flag

    TCCR1B

    Timer/counter1control register B digunakan untuk mengatur mode timer, prescaler

    dan pilihan lainya.

    Bit 7 6 5 4 3 2 1 0

    ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10 TCCR1B

    Read/write R/W R/W R R/W R/W R/W R/W R/W

    Initial Value 0 0 0 0 0 0 0 0

    CS12, CS11, CS10 sebagai Clock select bits, pemilih prescaler timer/counter 1 dan

    hubunganya dengan clock eksternal pada pin T1.

    CS12 CS11 CS10 Description

    1 0 1 ClkI/O/1024 (from prescaler)

    1 1 0 Eksternal clock source on T0 pin. Clock on falling edge

    1 1 1 Eksternal clock source on T0 pin. Clock on rising edge

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    56/64

    b. Interupt timer

    Ada dua sumber interupi timer yaitu:

    Overflow interupt, interupt terjadi jika TCNTn mencapai 255 untuk timer 0 dan

    65555 untuk timer 2 .

    Compare match interupt, interupt terjadi jika nilai OCR sama dengan TCNTn.

    3. Prescaler

    Pada dasarnya timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung

    tersebut bisa sama dengan frekuensi crystal yang digunakan atau dapat diperlambat dengan

    prescaler dengan faktor 8, 64, 256 atau 1024. Berikut penjelasan sebuah AVR

    menggunakan kristal dengan frekuensi 8 MHz dan timer yang digunakan adalah timer 16

    bit. Maka maksimum waktu timer yang bisa dihasilkan adalah:

    TMAX = 1/FCLKx (FFFFh+1)

    = 1/8MHz x (65535+1)

    = 0.008192 s

    Untuk menghasilkan waktu timer yang lebih lama dapat digunakan prescaler, misalnya

    1024, maka maksimal waktu timer yang bisa dihasilkan adalah:

    TMAX = 1/FCLKx (FFFF h+1) x N

    = 1/8 MHz x (65535+1) x N

    = 0

    = 8.388608 s

    4. Perhitungan waktu timer

    TCNT = (1+FFFFh) TTimer x FCLK/N

    Keterangan :TCNT = nilai timer (hex)

    FCLK= frekuensi clock kristal yang digunakan (Hz)

    TTimer= waktu timer yang diinginkan (s)

    N = prescaler (1, 8, 64, 256, 1024)

    1+FFFFh = nilai maksimum timer adalah FFFFh dan oveflow saat FFFFh ke 0000h

    Contoh :

    Diinginkan sebuah timer 16 bit bekerja selama 1 detik, dengan frekuensi clock sebesar

    11,0592 MHz dan prescaller 1024, maka diperoleh nilai TCNT sebesar:

    TCNT = (1+FFFF h) 1 x 11059200/1024

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    57/64

    = 10000h 10800d

    = 10000h 2A30h

    = D5D0 h

    Dengan demikian, nilai TCNT1H = D5 dan TCNT1L = D0h

    Timer 16 bit Atmega16 dapat menghasilkan waktu tunda maksimum sebesar 6,06805555

    detik pada frekuensi 11,0592 MHz. Dengan nilai maksimum FFFFh maka akan dihasilkan

    waktu timer selama:

    FFFFh = Ttimerx 11059200/1024

    65535 = Ttimerx 10800

    Ttimer= 6,068055555s

    Praktik 1:

    Program menyalakan dan memadamkan led selama delay waktu 1s menggunakan timer

    16 bit. Port B sebagai output, kristal yang digunakan 12 MHz dan prescaler 1024, maka

    nilai TCNT didapat dari :

    Program :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    58/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    59/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    60/64

    Praktik 2:

    Membuat jam digital menggunakan timer 2 (timer 8 bit). Jam terdiri dari menit dan detik

    yang akan ditmpilkan pada seven segmen. Gunakan compare match interupt, kristal

    12Mhz, prescaler 8 dan timer 2.

    Maka clock value = 12Mhz/8 = 1500 KHz.

    Untuk mendapatkan periode 0.1 ms,

    maka nilai register OCR

    OCR = 10-4s x 1500 KHz = 150d = 96h

    maka nilai register OCR = 0x96

    Periodenya adalah 0,1ms, agar menjadi 1s

    harus dikalikan 10000.

    Program :

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    61/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    62/64

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    63/64

    BAB IX

    PWM (PULSE WITH MODULATION)

    Pulse width modulation menggunakan gelombang kotak dengan lebar duty cycle tertentumenghasilkan nilai rata-rata dari suatu bentuk gelombang. Jika kita menganggap bentuk

    gelombang kotak f(t) dengan nilai batas bawah ymin batas atas ymax dan duty cycle D, sperti

    dilihat dalam gambar.

    Nilai rata rata daribentuk gelombang diatas adalah:

    Jikaf(t) adalah gelombang kotak, maka nilai ymaxadalah ari 0 < t < DT dan nilai ymin dari D.T< t < T. duty cycle menyatakan presentase keadaan logika high dalam suatu periode sinyal.

    Satu siklus diawali oleh transisi low to high dari sinyal dan berakhir pada transisi berikutnya.

    Selama satu siklus, jika waktu sinyal pada keadaan high sama dengan low maka dapat

    dikatakan sinyal mempunyai duty cycle 50%. Besar duty cycle dapat diatur pada register

    OCR. Semakin besar nilai data pada register OCR, maka semakin tingi juga nilai rata-rata

    tegangan DC.

    ymax

    ymin

    0 D.T T T+D.T 2T

    0

    255

    OCR = 128

    0

    255

    OCR = 200

  • 5/20/2018 64686683 Trainer Book ATMega16 ok

    64/64

    Program : Mengatur intensitas cahaya led