Uploaded by User6313

PrakSismik Modul3 14S16048 GomgomSilalahi

advertisement
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;
}
}
}
Download