Percobaan III KOMUNIKASI USART DAN EVALUASI MODUL I-III Gomgom Silalahi (14S16048) Tanggal Percobaan : 29/03/2019 [EL 3102] [Praktikum Elektronika II] [Lab Dasar teknik Elektro] – Teknik Elektro Institut Teknologi Del Gambar 3.1 ATMega 8535, Abstrak --- In module 3 practicum, the practitioner will work on the practicum about Usart Communication and Module I-III Evaluation. The purpose of this practicum is to practice discussing the ATMega 8535 data sheet and practicum that is capable of making USART communication applications. KEY WORDS: CVAVR, ATmega 8535, USART I. PENDAHULUAN 4. a. memahami datasheet ATMega 8535 b. membuat aplikasi timer/counter dan interrupt pada AVR dengan menggunakan bahasa pemrograman C pada WinAVR 5. membuat aplikasi external interrupt pada AVR dengan 6. menggunakan bahasa pemrograman C pada WinAVR II. 2.1 ATMEGA8535, Secara singkat, ATMega8535 memiliki beberapa kemampuan: 1. Sistem mikrokontroler 8 bit berbasis RISC kecepatan maksimal 16 MHz. ATMega merupakan sistem minimum yang sering digunakan sebagai prosesor sebuah sistem sederhana. Dalam hal ini, sistem minimum ATMega, khususnya ATMega 8535 digunakan sebagai kit praktikum, sehingga diharapkan setelah3. melakukan percobaan, mahasiswa dapat: c. ATMega8535 merupakan salah satu mikro kontroler 8 bit buatan Atmel untuk keluarga AVR yang diproduksi secara massal pada tahun 2006. Karena merupakan keluarga AVR, maka ATMega8535 juga menggunakan arsitektur RISC. dengan 2. Memiliki memori flash 8 KB, SRAM sebesar 512 byte dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte. Memiliki ADC (pengubah analog-ke-digital) internal dengan ketelitian 10 bit sebanyak 8 saluran. Memiliki PWM (Pulse Width Modulation) internal sebanyak 4 saluran. Portal komunikasi serial (USART) dengan kecepatan maksimal 2.5 Mbps. Enam pilihan mode sleep, untuk menghemat penggunaan daya listrik. LANDASAN TEORETIS Konfigurasi mode operasi (Hal. 83)\ Pengaturan Perilaku pin OCO (misalnya untuk mode nonPWM) (Hal. 84) Pengaturan sumber clock (Hal. 85) Register-register penting lain (Hal. 85) USART Data Register (Hal. 164-165) USART Control and Status Register A (Hal. 165-166) USART Control and Status Register B (Hal. 166-167) KONFIGURASI EXTERNAL INTERRUPT USART Control and Status Register B (Hal. 167) Register-register penting lain (Hal. 167 - 170) START UCSRB = 0x10 UCSRc = 0x86 UBRRL = 103 INISIALISASI REGISTER INPUT PORTA=UDR BREAK Gambar 3.2 Flowchart Percobaan 3.A.1 III. HASIL DAN ANALISIS Kemudian kita akan menggunakan code sebagai berikut : III.A MENERIMA DATA DARI PC Ada pun persiapan yang harus dipenuhi yaitu: Hubungkan PORT USB Master Mikro AVR pada PORT USB PC anda. Pastikan USB Downloader anda sudah terinstall. Hubungkan Pin RX, TX, GND dari USB to TTL ke Pin RX, TX, GND dari Master Mikro AVR. Pastikan USB to TTL Downloader anda sudah terinstall. Hubungkan PORT A (ATMega8535) dengan PORT OUTPUT LED. Jalankan HyperTerminal TUGAS III.A.1 Pada tugas pertama ini kita melakukan praktikum sesuai dengan modul praktikum. #include <mega8535.h> #include <stdio.h> char b; void main() { UCSRB = 0b00010000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; DDRA = 0b11111111; while(1) { b = getchar(); switch(b) { case ‘0’: PORTA = 0b00000000; break; case ‘1’: PORTA = 0b00000001; break; case ‘2’: PORTA = 0b00000010; break; case ‘3’: PORTA = 0b00000100; break; case ‘4’: PORTA = 0b00001000; break; case ‘5’: PORTA = 0b00010000; break; case ‘6’: PORTA = 0b00100000; break; case ‘7’: PORTA = 0b01000000; break; case ‘8’: PORTA = 0b10000000; case ‘8’: PORTA = 0b10000000; break; case ‘9’: PORTA = 0b11111111; break; } } } Semua lampu mati kecuali lampu led 8. sesuai code pada line 32 Berikut adalah hasil yang dihasilkan : Pada menekan tombol 0: LED LED LED LED LED LED 8 7 6 5 4 3 Semua lampu mati sesuai code pada line 16. Pada tombol 9: LED LED LED LED LED LED 8 7 6 5 4 3 Semua lampu menyala sesuai code pada line 34 LED 2 LED 1 LED 2 LED 1 OUTPUT : saat ditekan angka 1 pada PC: Pada tombol 1: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 1. sesuai code pada line 18. Pada tombol 2: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 2. sesuai code pada line 20. Pada tombol 3: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 3. sesuai code pada line 22 Pada tombol 4: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 4. sesuai code pada line 24 Pada tombol 5: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 5. sesuai code pada line 26 Pada tombol 6: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 6. sesuai code pada line 28 Pada tombol 7: LED LED LED LED LED LED LED LED 8 7 6 5 4 3 2 1 Semua lampu mati kecuali lampu led 7. sesuai code pada line 30 Pada tombol 8: LED LED 8 7 LED 6 LED 5 LED 4 LED 3 LED 2 LED 1 Saat ditekan angka sembilan pada PC: ANALISIS : Baudrate pada percobaan ini adalah 9600 , nilai UBRR 47 tanpa kecepatan ganda dan frekuensi clock 7372800 Hz. Nilai persamaan didapatkan dari persamaan : Pemprosesan karakter keyboard yang besarnya 8 bit menjadi 8 = 8.333 × 10−4 9600 Jadi 8.333 × 10−4 detik untuk baud rate 9600. Pada register UCSRB dibuat dengan nilai 0x10 sehingga nilai bit diset 1 sehingga USART Receiver menjadi aktif dan ukuran data UBRRH = 0 Kecepatan transmisi USART yang digunakan (yang direpresentasikan pada bit U2X) hanya mempengaruhi nilai UBRR yang harus diset pada register UBRRH dan UBRRL. Jika U2X bernilai 1 yang artinya double USART transmission speed aktif, maka nilai UBRR yang harus diassign menjadi lebih besar dibandingkan dengan saat nilai U2X bernilai 0 (normal USART transmission speed). while(1) pada code sebagai infinite loop yang selalu menerima input, kemudian diproses sehingga keluar output., seperti pada line 16 case ‘0’: PORTA = 0b00000000. Ini menjelaskan case atau suatu kejadian pada saat kita menekan tombol ‘0’ dan akan menampilkan output pada PORTA dengan lampu yang mati pada setiap LED yang ada karena PORTA di set 0. TUGAS III.A.2 Untuk percobaan 3.A.2 hasilnya sama berbeda pada responnya saja, namun perbedaan itu tidak terasa. Berikut adalah kondisi pada A.2. Baudrate = 2400bps. Mengaktifkan fasilitas double USART transmission speed. Pada III.A.2 hanya berbeda dalam baud rate dengan III.A.1 Saat menekan tombol 9 dengan perbedaannya cukup besar (dari 9600 ke 2400 baud rate) namun respon yang diperoleh tidak terlalu terasa dikarenakan oleh pemrosesan karakter keyboard 8 = 3.333 × 10−3 2400 Jadi 3.333 × 10−3 detik untuk baud rate 2400 Kendala yang dialami pada code yang akan kami buat, dikarenakan saat kami mengubah baut rate yang 2400, kami kebingungan pada UBRRL yang akan dibuat. Tetapi pada percobaan ini hasil nya sama dengan pada tugas III.A.1 hanya bedanya pada waktu pemprosesan inisialisasi ke output atau keluarannya. START II.B MENGIRIM DATA KE PC Ada pun persiapan yang harus dipenuhi yaitu: Menjalankan HyperTerminal. (Catatan: pengaturan Flow control = None).Dan output yang diinginkan adalah : UCSRB = 0x10 UCSRc = 0x86 UBRRL = 103 Percobaan 3.B.1 Setiap tombol reset ditekan, muncul tulisan pada layar Hyperterminal, INISIALISASI REGISTER Praktikum Sistem Mikroprosesor INPUT START PORTA=UDR BREAK Berikut adalah output yang dihasilkan : Saat menekan tombol 1 UCSRB = 0x08 UCSRC = 0x86 UCSRH = 0x0 UBRRL = 103 UBRRL = 103 INISIALISASI REGISTER Tampil Berikut adalah code yang digunakan : #include <mega8535.h> #include <stdio.h> void main() { UCSRB = 0b00001000; UCSRC = 0b10000110; UCSRH = 0; UBRRL = 103; printf(“Praktikum Sistem Mikroprosesor\r\n”); } Praktikum Sistem Mikroprosesor RESET III.C PENGIRIMAN DAN PENERIMAAN DATA DARI DAN KE PC Ada pun persiapan yang harus dipenuhi yaitu: Hubungkan PORT A (ATMega8535) dengan PORT OUTPUT LED. Jalankan HyperTerminal. (Catatan: pengaturan Flow control = None). Dan output yang dihasilkan adalah : TUGAS III.C.1 Pada tugas ini kita akan menjalakan program berikut : ANALISIS : Pada tugas ini kita akan menjalankan Hyperterminal, dan hyperteminal ini akan menampilkan data yang kita program seperti pada line 9, printf(“Praktikum Sistem Mikroprosesor\r\n”)yang akan menampilkan kata Praktikum Sistem Mikroprosesor. Kemudian, terlihat bahwa pada body main, tidak terdapat infinite loop (while(1)) sehingga program berjalan hanya satu kali untuk setiap run. Oleh karena itu, diperlukan penekanan tombol reset pada sismin agar program bisa berjalan berulang kali. Terlihat pula bahwa terdapat pengassign-an sebuah string Praktikum Sistem Mikroprosesor dalam suatu array of char bernama kal. TUGAS II.B.2 Kita membuat program diatas sehingga pada layer Hyperterminal ditampilkan nama Anda dan pasangan kelompok Anda secara bergantian setiap x detik dan terus menerus, dengan x = (modulus 9 dari nomor kelompok) + 1. Keterangan: fasilitas delay AVR-gcc tidak digunakan. Dan kami membuat jumlah counter sebanyak n kali menjadi 3 Berikut adalah flowchart nya: START UCSRB = 0x08 UCSRC = 0x86 UCSRH = 0x0 UBRRL = 103 UBRRL = 103 INISIALISASI REGISTER Gomgom TAMPIL END DELAY = 1 TAMPIL Holong OUPUT: Pada tugas ini kelompok kami tidak selesai karena kurang pemahaman pada code. #include <mega8535.h> #include <stdio.h> char b; void main() { UCSRB = 0b00011000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; DDRB = 0b11111111; printf(“Praktikum Sistem Mikroprosesor\r\n”); while(1) { b = getchar(); switch(b) { case ‘0’: PORTA = 0b00000000; break; case ‘1’: PORTA = 0b00000001; break; case ‘2’: PORTA = 0b00000010; break; case ‘3’: PORTA = 0b00000100; break; case ‘4’: PORTA = 0b00001000; break; case ‘5’: PORTA = 0b00010000; break; case ‘6’: PORTA = 0b00100000; break; case ‘7’: PORTA = 0b01000000; break; case ‘8’: PORTA = 0b10000000; break; case ‘9’: PORTA = 0b11111111; break; } } } Berikut adalaj flowchart : START TUGAS III.C.2 Pada tugas III.C.2 ini kami tidak dapat selesai karena kurangnya dalam pemahaman modul dan code yang akan kami buat. UCSRA =0b0000000; UCSRB = 0b00011000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; IV. printf(“Praktikum Sistem Mikroprosesor\r\n”); while(1) end SIMPULAN Mikrokontroller ATMega 8535 mempunyai Datasheet yang berisikan data tentang USART dan apa-apa saja yang perlu diketahui. USART pada ATMega 8535 digunakan untuk mengirim dan menerima data pada interface dengan assign UDR. Untuk men set nlai dari BaudRated dapat dengan men set register UBBR Untuk membuat aplikasi komunikasi USART , digunakan register : UDR, UCSRA, UCSRB, UCSRC, UBRRH, UBBRL. Case pada setiap kondisi diuji yang sesuai dengan tombol PC REFERENSI Electrical Engineering IT Del,2015, “Modul Praktikum Sistem Mikroprosesor”,Laguboti [2] Adel S. Sedra and Kennet C. Smith, Microelectronic Circuits, Oxford University Press, USA, 2004. [3] ATMega 8535 Datasheet fom www.atmel.com [1] break Berikut adalah output yang dihasilkan : Saat menekan tombol 1 Saat menekan tombl 9 LAMPIRAN Tugas III.A.1 #include <mega8535.h> #include <stdio.h> char b; void main() { UCSRB = 0b00010000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; DDRA = 0b11111111; while(1) { b = getchar(); switch(b) { case '0': PORTA = 0b00000000; break; case '1': PORTA = 0b00000001; break; case '2': PORTA = 0b00000010; break; case '3': PORTA = 0b00000100; break; case '4': PORTA = 0b00001000; break; case '5': PORTA = 0b00010000; break; case '6': PORTA = 0b00100000; break; case '7': PORTA = 0b01000000; break; case '8': PORTA = 0b10000000; break; case '9': PORTA = 0b11111111; break; } } } saat ditekan angka 1 pada PC: Saat ditekan angka sembilan pada PC: Tugas III.A.2 Saat menekan tombol 1 Saat menekan tombol 9 #include <mega8535.h> #include <stdio.h> char b; void main() { UCSRB = 0b00010000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 51; DDRA = 0b11111111; while(1) { b = getchar(); switch(b) { case '0': PORTA = 0b00000000; break; case '1': PORTA = 0b00000001; break; case '2': PORTA = 0b00000010; break; case '3': PORTA = 0b00000100; break; case '4': PORTA = 0b00001000; break; case '5': PORTA = 0b00010000; break; case '6': PORTA = 0b00100000; break; case '7': PORTA = 0b01000000; break; case '8': PORTA = 0b10000000; break; case '9': PORTA = 0b11111111; break; } } } Tugas III.B.1 #include <mega8535.h> #include <stdio.h> #include <delay.h> void main() { UCSRB = 0b00001000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; while (1) { printf("Praktikum Sistem Mikroprosesor\r\n"); } } Tugas III.B.2 ##include <mega8535.h> #include <stdio.h> #include <delay.h> void main() { UCSRB = 0b00001000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; while (1) { printf("Irvan Saragi\r\n"); delay_ms(3000); printf ("Estika Ginting\r\n"); delay_ms(3000); printf ("Paulus Sihotang\r\n"); delay_ms(3000); } } Tugas III.C.1 #include <mega8535.h> #include <stdio.h> char b; void main() { UCSRB = 0b00011000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 103; DDRB = 0b11111111; printf(“Praktikum Sistem Mikroprosesor\r\n”); while(1) { b = getchar(); switch(b) { case ‘0’: PORTA= 0b00000000; break; case ‘1’: PORTA= 0b00000001; break; case ‘2’: PORTA= 0b00000010; break; case ‘3’: PORTA= 0b00000100; break; case‘4’: PORTA= 0b00001000; break; } } case ‘5’: PORTA= 0b00010000; break; case ‘6’: PORTA= 0b00100000; break; case ‘7’: PORTA= 0b01000000; break; case ‘8’: PORTA= 0b10000000; break; case ‘9’: PORTA= 0b11111111; break; } Saat menekan tombol 1 Saat menekan tombl 9 Tugas III.C.2 #include <mega8535.h> #include <stdio.h> #define F_CPU 1000000 UL char b; void main() { UCSRB = 0b00011000; UCSRC = 0b10000110; UBRRH = 0; UBRRL = 5; // focs=1 MHZ maka UBRRL = 5. dengan baudrate =9600 DDRB = 0b11111111; printf(“Praktikum Sistem Mikroprosesor\r\n”); //uses time =15 s while(1) { b = getchar(); switch(b) { case'0': PORTA = 0b00000000; break; case '1': PORTA = 0b00000001; break; case '2': PORTA = 0b00000010; break; case '3': PORTA = 0b00000100; break; case '4': PORTA = 0b00001000; break; case '5': PORTA = 0b00010000; break; case '6': PORTA = 0b00100000; break; case '7': PORTA = 0b01000000; break; case '8': PORTA = 0b10000000; break; case '9': PORTA = 0b11111111; break; } } }