Anda di halaman 1dari 41

LAPORAN PRAKTIKUM

MIKROPROSESSOR

Kelompok 14 :

1. Tiara Nurul Aziza F1B021095


2. Surya Jagad F1B021092
3. Imam Soleh Sallahuddin F1B021123
4. Muh Rhama insan kamil F1B021131
5. Muhamad Safari F1B021070
6. Iswa Eldiranata F1B021054
7. Ari Satria F1B018009

JURUSAN TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS MATARAM
2023
KATA PENGANTAR

Puji Syukur dipanjaktkan kepada Tuhan Yang Mahas Esa penulis sampaikan
atas kenikmatan yang tiada tara yang selalu dilimpahkan oleh-Nya. Keberhasilan
penulisan modul Praktikum Mikroprosesor ini pun atas karunia-Nya. Mata kuliah
praktikum mikroprosesor adalah mata kuliah pendamping teori-teori yang telah
diberikan dari dosen kepada mahasiswa. Salah satu praktikum yang ada di Teknik
Elektro Fakutas Teknik Universitas Mataram adalah praktikum Mikroprosesor. Mata
kuliah sistem mikroprosesor pada periode saaat ini memegang peranan sangat
penting dalam kehidupan industri. Penerapan nya dimulai dari alat komunikasi, alat-
alat rumah tangga, alat keamanan, dan lain sebagainya khususnya yang berbasis
teknologi elektronika dan mikrokomputer. Modul Praktikum Mikroprosesor ini
berada dibawah Laboratorium Sistem Kendali disusun diperuntukan bagi
mahasiswan dalam memberi bekal kepada mahasiswa Teknik elektro dalam
menghadapi kemajuan teknologi. Ucapan terima kasih penulis sampaikan kepada
semua pihak yang telah membantu dan membaca, serta mempraktikkan modul ini.
Demikian kata pengantar ini di sampaikan dan semoga bermanfaat bagi kita
semua

Tim Dosen Pengampu

Supriono

i
PANDUAN PELAKSANAN PRAKTIKUM

1. Sebelum melakukan percobaan periksa dahulu semua kabel/jumper. Pastikan tidak


ada kabel/jumper yang putus.
2. Materi Pelaksanaan praktikum mikroprosessor tahun 2023 tentang Interrupt dan
Multi- Core pada prosessor RP2040 dari Raspberry dengan mempergunakan bahasa
Micropython.
3. Sebelum melakukan praktikum, para praktikan diharapkan telah melakukan
diskusi/bimbingan dari dosen pembimbing. Diskusi ini dimaksudkan agar
pertanyaan/soal tentang Interrupt dan Multi-core dapat terjawab.
4. Pada saat melakukan Praktikum, Asisten laboratorium bertugas membantu dan
mengawasi jalannya praktikum. Metode pengambilan data dapat ditambah atau
dimodifikasi dari panduan praktikum. Hal ini boleh dilakukan berdasarkan hasil
diskusi yang telah dilakukan dengan dosen pembimbing.
5. Setelah melakukan praktikum, Praktikan diharapkan proaktif melakukan bimbingan
kepada dosen pembimbing untuk penyusunan laporan praktikum. Pada praktikum
mikroprosessor tidak ada asistensi atau ACC laporan dari para Asissten
Laboratorium , nilai praktikum hanya ditentukan oleh Dosen Pembimbing.
6. Laporan praktikum paling lambat pada hari terakhir pelaksanaan Ujian Akhir
Semester dan sudah di ACC/ditanda tangani oleh dosen pembimbing. Soft copy
laporan praktikum diupload ke link yang akan diberikan kemudian.
7. Panduan penyimpanan file dan link untuk meng-upload file laporan praktikum akan
diberikandigrup.

ii
DAFTAR ISI

PANDUAN PELAKSANAN PRAKTIKUM............................................................................ii


MODUL A INTERRUPT............................................................................................................1
A.1. Teori Pendukung...............................................................................................................1
A.2 Tujuan:...........................................................................................................................4
A.3 Peralatan:........................................................................................................................4
A.4 Rangkaian Percobaan 1. Eksternal Interrupt.................................................................4
A.5 Prosedur Percobaan 1. Eksternal Interrupt....................................................................5
A.6 Analisa Data.................................................................................................................11
A.7 Rangkaian percobaan 2. Internal Interrupt..................................................................15
A.8 Prosedur Percobaan 2. Internal Interrupt.....................................................................15
A.9 Analisa Data.................................................................................................................20
Pertanyaan...............................................................................................................................23
Jawab.......................................................................................................................................23
MODUL B MULTI CORE........................................................................................................25
B.1 Teori Pendukung..........................................................................................................25
B.2 Tujuan..........................................................................................................................27
B.3 Rangkaian Percobaan 3. Multi Core pada Prosessor RP2040.......................................27
B.4 Prosedur Percobaan 3 Multi Core................................................................................27
B.5 Analisa data..................................................................................................................32
Pertanyaan...............................................................................................................................35
Jawab.......................................................................................................................................35
DAFTAR PUSTAKA................................................................................................................37

iii
MODUL A

INTERRUPT
A.1. Teori Pendukung
Interrupt merupakan salah satu fasilitas yang sangat penting pada
Mikroprosessor. Dalam keadaan normal, tidak ada Interrupt, maka program utama
dijalankan. Ketika terjadi Interrupt, maka prosessor akan melompat ke program
Interrupt vector (Interrupt Service Routine). Setelah Interrupt vektor dijalankan
maka prosessor kembali ke program utama untuk melanjutkan perintah yang
ditinggalkan. Contoh Interrupt dalam kehidupan kita, bayangkan kita sedang bekerja
didepan komputer mengerjakantugas kampus. Ketika sedang mengerjakan tugas, HP
kita berdering sehingga kita meninggalkan pengerjaan tugas kampus untuk
menjawab panggilan HP. Setelah pembicaraan di HP selesai maka kita melanjutkan
kembali untuk mengerjakan tugas kampus.
Prosessor Raspberry RP2040, selanjutnya disebut RP2040, memiliki dua
macam Interrupt yaitu Interrupt Internal dan Interrupt external. Interrupt eksternal
adalah perubahan state pada pin RP2040 (GPIO) sementara Interrupt Internal adalah
telah dipenuhi suatu kondisi misalnya timer/counter. Pada kedua Interrupt ini,
Prosessor akan beralih dari program utama ke program Interrupt vektor. Setelah
Interrupt vektor dijalankan maka prosessor kembali ke program utama. Program
pada Interrupt vector dapat berupa program yang kompleks, hal ini yang merupakan
keunggulan RP2040 dibandingkan denganprosessor jenis lainnya.

Program Interrupt pada RP2040 ditulis menggunakan Micropython. Sinyal


eksternal Interrupt yang didukung oleh micropython adalah: hal. 42 pada
micropython.doc
– Pin.IRQ_FALLING Interrupt on falling edge.
– Pin.IRQ_RISING Interrupt on rising edge.
– Pin.IRQ_LOW_LEVEL Interrupt on low level.
– Pin.IRQ_HIGH_LEVEL Interrupt on high level.

1
HIGH_LEVEL

Gambar A.1 Jenis-jenis Interrupt pada eksternal Interrupt

Adapun beberapa fungsi dari mikroprosesor antara lain:


a. Mengirim Sinyal Kendali dan Menerima Sinyal Interrupsi
Selain menghasilkan sinyal kendali, mikroprosesor juga mampu menerima
sinyal interupsi dari perangkat eksternal atau komponen lainnya. Ini
memungkinkan mikroprosesor untuk merespons keadaan tertentu.
b. Menyediakan pewaktuan untuk siklus kerja sistem mikroprosesor
Pewaktuan yang disediakan oleh mikroprosesor adalah hal penting dalam
mengatur urutan eksekusi instruksi dan operasi, memastikan keterikatan dan
sinkronisasi yang tepat dalam siklus kerja sistem.
c. Memindahkan data dari dan ke memori.
Fungsi ini melibatkan transfer data antara mikroprosesor dan memori untuk
menjaga alur informasi yang diperlukan oleh instruksi dan program yang
dieksekusi.
d. Mengerjakan fungsi operasi logika dan aritmatika
Mikroprosesor memiliki kemampuan untuk melakukan operasi logika dan
operasi aritmetika kompleks sesuai dengan kebutuhan instruksi yang diterima.
e. Mengambil instruksi dan data dari memori
Proses pengambilan instruksi dan data dari memori merupakan langkah
penting yang memungkinkan mikroprosesor untuk menjalankan program yang
disimpan dalam memori.

2
Selain itu ada juga komponen-komponen yang terdapat pada mikroprosesor
diantaranya:
a. Arithmetic Logic Unit (ALU)
Tugasnya melakukan operasi aritmetika seperti penjumlahan, pengurangan,
perkalian, dan pembagian. Juga melakukan operasi logika seperti AND, OR,
NOT.
b. Control Unit (CU)
Mengendalikan alur eksekusi instruksi, menghasilkan sinyal kendali yang
mengarahkan operasi sistem dan komponen-komponen mikroprosesor, dan
mengelola interupsi.
c. Register
Merupakan tempat penyimpanan sementara untuk data yang digunakan
oleh ALU dan operasi lainnya.
d. Cache Memory
Fungsinya menyimpan data dan instruksi yang sering digunakan dari
memori utama. Juga untuk meningkatkan kecepatan akses dengan menyediakan
penyimpanan yang lebih cepat daripada memori utama.
e. Unit Pewaktu (Clock)
Menyediakan waktu atau clock cycle yang mengatur eksekusi instruksi dan
operasi sistem. Pewaktuan yang tepat memastikan koordinasi yang baik antara
komponen mikroprosesor.
f. Floating Point Unit (FPU)
Tugasnya melakukan operasi floating-point untuk operasi matematika yang
melibatkan pecahan.
g. Unit Kontrol Memori
Mengelola akses ke memori utama dan menangani operasi baca/tulis data
antara mikroprosesor dan memori.
h. Bus System
Fungsinya yaitu menyediakan jalur komunikasi antara berbagai komponen
mikroprosesor.

3
A.2 Tujuan:
1. Melihat kerja eksternal Interrupt pada Prosessor RP2040.
2. Melihat prioritas Interrupt pada Prosessor RP2040
A.3 Peralatan:
1. Unit Controller PED RG-144
2. Computer dengan software Thonny dengan Python3 versi 6 atau lebih besar
3. Kapasitor minimal 100 nF dan Kabel jumper.
A.4 Rangkaian Percobaan 1. Eksternal Interrupt

Gambar A.2 Rangkaian Percobaan Interrupt Eksternal

4
A.5 Prosedur Percobaan 1. Eksternal Interrupt
1. Rangkailah percobaan seperti gambar 2.
2. Tulis program 1 pada IDE Thonny.
3. Jalankan program tersebut.
4. Lihat, apakah LED 1 s/d LED 4 menyala dan padam secara bergantian? Jika
ya lanjut ke prosedur 5.Jika tidak tanyakan kepada asisten.
5. Berikan tegangan high (3V3) pada kaki 5.
6. Catat jumlah Interrupt yang terjadi.
7. Pasang kapasitor 100 nF atau lebih pada kaki 5.
8. Berikan tegangan high (3V3) pada kaki 5. 10.Catat jumlah Interrupt yang
terjadi.
9. Kerjakan tabel 1.
10. Selesai

 Flowchart

5
# PROGRAM 1 EKSTERNAL INTERRUPT
#====================================
from machine import Pin
from time import sleep
#import utime

# mengkonfigurasi pin1 s/d pin 4 sebagai


output
led1 = Pin(1, mode = Pin.OUT, value = 1)
led2 = Pin(2, mode = Pin.OUT, value = 1)
led3 = Pin(3, mode = Pin.OUT, value = 1)
led4 = Pin(4, mode = Pin.OUT, value = 1)
x=0 # dipergunakan untuk counter

# mengkonfigurasi pin 5 sebagai input


# pin 5 dalam keadaan normal low,
# jika menerima pulsa high maka terjadi Interrupt
sela = Pin(5, Pin.IN, Pin.PULL_DOWN)

#Jika terjadi Interrupt maka fungsi berikut dijalankan


def eksternal1(pin):
#machine.disable_irq()
global x
print("Kaki 5 mendapat pulsa high")
print("jenis Interrupt adalah Rising")
x = x+1
print ("Sekarang Interrupt ke-", x)
#machine.enable_irq()

#def eksternal2(pin):
#machine.disable_irq()
#global x
#print("Kaki 5 mendapat pulsa LOW")
#print("jenis Interrupt adalah Falling")#x =
x+1 #print ("Sekarang Interrupt ke-", x)
#machine.enable_irq()

#def eksternal3(pin):
#machine.disable_irq()
#global x
#print("Kaki 5 mendapat pulsa LOW")
#print("jenis Interrupt adalah HIGH LEVEL")
#x = x+1
#print ("Sekarang Interrupt ke-", x)
#machine.enable_irq()

#def eksternal4(pin):
#machine.disable_irq()
#global x
#print("Kaki 5 mendapat pulsa LOW")
#print("jenis Interrupt adalah LOW LEVEL")
#x = x+1
#print ("Sekarang Interrupt ke-", x)
#machine.enable_irq()

6
# mengkonfigurasi Interrupt pada Pin 5
sela.irq(trigger = Pin.IRQ_RISING, handler = eksternal1)
#sela.irq(trigger = Pin.IRQ_FALLING, handler = eksternal2)
#sela.irq(trigger = –Pin.IRQ_HIGH_LEVEL, handler = eksternal3)
#sela.irq(trigger = Pin.IRQ_LOW_LEVEL, handler = eksternal4)

# ============================================
# =========PROGRAM UTAMA======================

while True:

led1.low()
#utime.sleep_ms(200)
sleep(0.2)
# alternative lain untuk penundaan menggunakan for,
#yaitu for i in range(1, 100, 2):
led2.low()
sleep(0.2)
#utime.sleep_ms(200)
led3.low()
sleep(0.2)
#utime.sleep_ms(200)
led4.low()
sleep(0.2)
#utime.sleep_ms(200)
led1.high()
sleep(0.2)
#utime.sleep_ms(200)
led2.high()
sleep(0.2)
#utime.sleep_ms(200)
led3.high()
sleep(0.2)
#utime.sleep_ms(200)
led4.high()
sleep(0.2)
#utime.sleep_ms(200)

7
Tabel 1. Eksternal Interrupt
No Kegiatan Hasil
1. Memberikan tegangan 3V3 pada kaki 5.
jumlah Interrupt yang terjadi.

2. Menambahkan kapasitor pada kaki 5


kemudian diberi tegangan 3V3.
jumlah Interrupt yang terjadi.

8
3. Meng-aktifkan baris
sela.irq(trigger =
Pin.IRQ_FALLING, handler =
eksternal)

4. Meng-aktifkan baris
sela.irq(trigger =
Pin.IRQ_HIGH_LEVEL, handler =
eksternal)

5. Meng-aktifkan baris
sela.irq(trigger =
Pin.IRQ_LOW_LEVEL, handler =
eksternal)

9
6. Aktifkan semua konfigurasi Interrupt
dan semua fungsi #def eksternalx
Interrupt jenis apa saja yang menimbulkan
error
referensi
lihat pada hal. 42
micropython-docs.pdf
trigger configures the event which can
generate anInterrupt. Possible values are:

7. Aktifkan semua baris


import utime
utime.sleep_ms(200)
dan non-aktifkan semua
baris
from time import sleep
sleep(0.2).
Berikan eksternal Interrupt pada kaki 5

10
A.6 ANALISA DATA
1. Memberikan tegangan 3V3 pada kaki 5. Jumlah interrupt yang terjadi

Berdasarkan gambar diatas, jika diberikan tegangan 3V3 pada kaki/pin 5


maka mendapatkan pulsa high jenis interrupt Rising. Serta jumlah interrupt
yang terjadi akan semakin banyak dan terus berulang berkali-kali walaupun
hanya dihubungkan satu kali. Hal ini dikarenakan sinyal pulsa masih memiliki
gelombang yang noise sehingga mengakibatkan interrupt akan terus terjadi
dengan sangat cepat.

2. Menambahkan kapasitor pada kaki 5 kemudian diberi tegangan 3V3. Jumlah


interrupt yang terjadi

Berdasarkan gambar diatas, jika ditambahkan kapasitor dan diberikan


tegangan 3V3 pada kaki/pin 5 maka mendapatkan pulsa high jenis interrupt
Rising. Serta jumlah interrupt yang terjadi akan sesuai dengan berapa kali dia

11
dihubungkan. Hal ini dikarenakan peran sebuah kapasitor yang dapat
memperbaiki sinyal pulsa yang memiliki gelombang noise tersebut sehingga
interrupt tidak akan terjadi beberapa kali lagi.

3. Meng-aktifkan baris sela.irq(trigger = Pin.IRQ_FALLING, handler =


eksternal)

Berdasarkan gambar di atas, jika ditambahkan kapasitor dan diberikan


tegangan 3V3 pada kaki/pin 5 maka mendapatkan pulsa low dengan jenis
interrupt Falling. Yang dimana pada kondisi falling ini tegangan yang
didapatkan turun selama dua kali, karena masih terdapat kapasitor pada kaki 5.
Fungsi pada kapasitor ini juga sebagai penyimpan tegangan, sehingga tegangan
yang disimpan tersebut akan terlepas kembali dan mengakibatkan interrupt
falling terjadi dua kali.

4. Meng-aktifkan baris sela.irq(trigger = Pin.IRQ_HIGH_LEVEL, handler


=eksternal)

Berdasarkan gambar di atas, sama seperti sebelumnya hal tersebut terjadi


karena perbedaan pada bahasa micropython yang tidak bisa digunakan pada
Rasberry, Karena Rasberry memiliki developing board sendiri.

12
5. Meng-aktifkan baris sela.irq(trigger = Pin.IRQ_LOW_LEVEL, handler =
eksternal)

Berdasarkan gambar di atas, sama seperti sebelumnya hal tersebut terjadi


karena perbedaan pada bahasa micropython yang tidak bisa digunakan pada
Rasberry, Karena Rasberry memiliki developing board sendiri.

6. Berdasarkan kegiatan yang dilakukan apabila mengaktifkan semua konfigurasi


Interrupt dan semua fungsi #def eksternalx Interrupt jenis yang akan
menimbulkan error adalah jenis Interrupt Low Level dan High Level.
Pada Low Level saat input eksternal yang diawasi oleh Interrupt diperlakukan
sebagai "aktif" ketika sinyalnya berada pada level rendah. Ketika sinyal ini
berubah dari level tinggi ke level rendah, maka Interrupt akan terpicu.
Sedangkan pada High Level adalah sebaliknya dari Low Level. Mereka terpicu
saat input eksternal dianggap aktif pada level tinggi (biasanya berarti tegangan
mendekati nilai yang tinggi atau tegangan sumber daya).

13
7. Aktifkan semua baris import utime utime.sleep_ms(200) dan non-
aktifkan semua baris from time import sleepsleep(0.2).Berikan eksternal
interrupt pada kaki 5

Berdasarkan gambar di atas, jika mengaktifkan semua baris


import utime
utime.sleep_ms(200)
dan non-aktifkan semua baris
from time import sleep
sleep(0.2).

Maka semua kode utime akan tersimpan pada mikrokontroler dan dapat berjalan
sendiri tanpa perlu lagi menjalankan program pada aplikasi Thonny dan
menghasilkan interrupt jenis Falling. Yang dimana kode utime itu sendiri
digunakan untuk mengatur penundaan atau mengukur waktu dalam
mikrokontroler atau perangkat yang menjalankan MicroPython. sleep, fungsi ini
digunakan untuk menghentikan eksekusi program selama jumlah detik yang
ditentukan sebelum melanjutkan eksekusi.

14
A.7 Rangkaian Percobaan 2. Internal Interrupt

Gambar A.3 Rangkaian Percobaan Interrupt Internal

A.8 Prosedur Percobaan 2. Internal Interrupt


1. Rangkailah percobaan seperti gambar 3.

2. Beri kapasitor 100 nF atau lebih pada kaki 5

2. Tulis program 2 pada IDE Thonny.

3. Jalankan program tersebut

4. Apakah LED Normal ? Jika YA lanjut ke prosedur 5 jika TIDAK tanyakan


ke asissten

5. Berikan pulsa high (3V3) pada kaki 5.

6. Kerjakan tabel 2.

7. Percobaan selesai

15
# PROGRAM 2 PRIORITAS INTERRUPT
#====================================
from machine import Pin
from machine import Timer
from time import sleep
import utime

# mengkonfigurasi pin1 s/d pin 4 sebagai output


led1 = Pin(1, mode = Pin.OUT, value = 0)
led2 = Pin(2, mode = Pin.OUT, value = 0)
led3 = Pin(3, mode = Pin.OUT, value = 0)
led4 = Pin(4, mode = Pin.OUT, value = 0)

# mengkonfigurasi pin 5 sebagai input


# pin 5 dalam keadaan normal low,
# jika menerima pulsa high maka terjadi Interrupt

sela = Pin(5, Pin.IN, Pin.PULL_DOWN)

# Jika terjadi Interrupt dari Pin maka fungsi berikut dijalankan

def eksternal(pin):
#machine.disable_irq() global hitung
#for i in range(1, 100, 1):
print("++++++++++++++++++++++++++++++++++++")
print("Kaki 5 mendapat pulsa high")
print("jenis Interrupt adalah Rising")
print ("Kaki 5 mengalami Interrupt ke : ", hitung) print("+++++++++++++
++++++++++++++++++++++++++++++")
hitung = hitung + 1
utime.sleep_ms(2000)
#machine.enable_irq()
def pewaktu(source):
for i in range(1, 20, 1):
print(" ============================================")
print(" Telah terjadi interupt oleh timer")
print(" berikan Interrupt pada pin 5 ")
print(" Perhatikan apakah Interrupt dan LED bekerja !!!")
print(" Loop pewaktu ke :", i)
utime.sleep_ms(200)
# mengkonfigurasi Interrupt pada Pin 5
sela.irq(trigger = Pin.IRQ_RISING, handler = eksternal)
# coba juga menggunakan Pin.IRQ_FALLING, Pin.IRQ_LOW_LEVEL # and
Pin.IRQ_HIGH_LEVEL,

#waktu = Timer(period=10000, mode=Timer.PERIODIC, callback=pewaktu)


waktu = Timer(period=10000, mode=Timer.ONE_SHOT, callback=pewaktu)
hitung = 1

# ============================================
# =========PROGRAM UTAMA======================
while True:
for i in range(1, 100000, 1):
#led1.low()
print(" Baris ke : 1 pada program utama")

16
#led2.low()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 2 pada program
utama")
#led3.low()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 3 pada program utama")
#led4.low()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 4 pada program utama")
#led1.high()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 5 pada program utama")
#led2.high()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 6 pada program utama")
#led3.high()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 7 pada program utama")
#led4.high()
#sleep(0.2)
#utime.sleep_ms(200)
print(" Baris ke : 8 pada program utama")

# Menonaktifkan timer
waktu.deinit()

17
Tabel 2. Percobaan Prioritas Interrupt

No Kegiatan Hasil
1 Memberikan pulsa high (3V3)
pada kaki 5
Apakah Interrupt eksternal dan
Interrupt Internal bekerja
Catatan
perintah print merupakan
Interrupt serial Tx dan Rx
dari Raspberry ke Komputer

2. Aktifkan baris %for i in


range(1, 100, 2): dan
non-aktifkan baris
sleep(5000)
pada fungsi def
pewaktu():
aktifkan semua LED dan
tundaan waktu pada program
utama.
Berikan pulsa high (3V3) pada
kaki 5

3 Aktifkan baris %for i in


range(1, 100, 2): dan
non-aktifkan baris
utime.sleep_ms(200)
pada fungsi
def eksternal(pin):
aktifkan semua LED dan
tundaan waktu pada program
utama. non-ktifkan baris for
i in range(1, 20, 1):
pada fungsi def
pewaktu():
aktifkan baris
#waktu =
Timer(period=10000,
mode=Timer.PERIODIC,

18
callback=pewaktu)
Non-aktifkan baris
waktu =
Timer(period=10000,
mode=Timer.ONE_SHOT,
callback=pewaktu)
Berikan pulsa high (3V3) pada
kaki 5

19
A.9 Analisa Data
1. Memberikan pulsa high (3V3) pada kaki 5
Apakah interrupt eksternal dan interrupt internal bekerja

Berdasarkan gambar di atas dapat diketahui disini digunakan timer selama 1


detik, yang berarti setiap 1 detik akan didapatkan keluaran secara kontinyu.
Adapun tujuan dari percobaan ini adalah untuk mengetahui skala prioritas
antara interrupt serial, eksternal, dan internal. Dari hasil percobaan, dapat
dianalisa bahwa kedudukan interrupt serial lebih tinggi daripada kedudukan
interrupt eksternal maupun internal. Sedangkan, untuk interrupt eksternal dan
internal diketahui bahwa keduanya memiliki kedudukan yang sama. Namun,
salah satu dari kedua interrupt tersebut dapat menjadi lebih tinggi ketika
diberi perintah prioritas.

20
2. Aktifkan baris %for i in range(1, 100, 2): dan non-aktifkan baris
sleep(5000)pada fungsi def pewaktu(): aktifkan semua LED dan tundaan
waktu pada program utama. Berikan pulsa high (3V3) pada kaki 5

Berdasarkan gambar diatas dapat dilihat bahwa ketika interrupt internal


berjalan maka interrupt eksternal tidak bisa dijalankan. Dimana interrupt
eksternal akan menunggu interrupt internal selesai menjalankan programnya
terlebih dahulu.

3. Aktifkan baris %for i in range(1, 100, 2): dan non-aktifkan


baris utime.sleep_ms(200)pada fungsi def eksternal(pin):
aktifkan semua LED dan tundaan waktu pada program utama.non-ktifkan baris
for i in range(1, 20, 1):pada fungsi def pewaktu():
aktifkan baris #waktu = Timer(period=10000,
mode=Timer.PERIODIC, callback=pewaktu) Non-aktifkan
baris waktu = Timer(period=10000,
mode=Timer.ONE_SHOT, callback=pewaktu)Berikan pulsa high
(3V3) pada kaki 5.

21
Berdasarkan gambar diatas dapat dilihat bahwa ketika interrupt eksternal
berjalan maka interrupt internal tidak bisa dijalankan. Dimana interrupt internal
akan menunggu interrupt eksternal selesai menjalankan programnya terlebih
dahulu.

22
PERTANYAAN
1. Pada tabel 1 eksternal Interrupt kegiatan no.1 memberikan tegangan 3V3 pada
kaki 5. Mengapa telah terjadi beberapa kali Interrupt sedangkan kaki 5 hanya
sekali diberikan pulsa high.
2. Pada tabel 1 eksternal Interrupt kegiatan no. 2. Apa fungsi kapasitor pada kaki
5? Bagaimana cara kerja kapasitor tersebut?
3. Pada tabel 1 eksternal Interrupt kegiatan no. 3, 4, 5. Mengapa tidak semua
kegiatan menghasilkan Interrupt sedangkan program Interrupt tersebut berasal
dari MicroPython Documentation?
4. Pada tabel 1 eksternal Interrupt kegiatan no. 7 Mengapa tidak semua Interrupt
bekerja?
5. Pada tabel 1 eksternal Interrupt kegiatan no. 8. Dimana letak perbedaan kerja
utime.sleep_ms(200) dengan sleep(0.2)?
6. Pada Tabel 3. Percobaan Prioritas Interrupt. Manakah lebih tinggi
prioritasnya eksternal Interrupt dengan timer Interrupt. Berikanlah buktinya?.
Jika dibandingkan kedua Interrupt tersebut dengan serial Interrupt. Manakah
yang lebih tinggi?. Berikan buktinya.
7. Apakah semua prosessor yang ada dipasaran memiliki urutan prioritas Interrupt
seperti prosessor Raspberry. Berikanlah bukti dan alasannya.

JAWAB
1. Karena sinyal yang keluar tidak sempurna, terdapat getaran (ripple) pada
sinyal sehingga interupt tertrigger berkali kali.
2. Kapasitor berfungsi sebagai penyaring atau filter dalam sebuah rangkaian agar
dapat menstabilkan sinyal.
3. Karena bahasa mikroPython dipakai untuk board dari pyhton sedangkan saat
praktikum memakai board dari rapsberry. Dan bahasa dari mikrophyton tidak
sesuai saat digunakan pada rapsbery.
4. Karena bahasa mikroPython dipakai untuk board dari pyhton sedangkan saat
praktikum memakai board dari rapsberry. Dan bahasa dari mikrophyton tidak

23
sesuai saat digunakan pada rapsberry.
5. Pada utime.sleep_ms(200) progran dapat langsung tersimpan pada
rapsberry pada mikrokontroller tanpa menggunakan software thonny dan
dapat berjalan secara otomatis. Sedangkan pada sleep(0.2)program tidak
dapat tersimpan tanpa bantuan software Thonny.
6. Kedudukannya sama tetapi yang lebih di prioritaskan adalah program yang
lebih dulu dijalankan dimana saat program yang akan dInterrupt lagi harus
menunggu program pertama selesai terlebih dahulu.
Jika dibandingakan serial Interrupt maka kedudukan serial akan lebih prioritas
dikarenakan adanya perintah print.
7. Tidak semua prosessor yang ada dipasaran memiliki urutan prioritas Interrupt
seperti prosessor Raspberry. Dimana prossesor rapsberry memiliki prioritas
interupt paling tinggi. Buktinya saat running program, tidak ada program yang
terpotong dengan kata lain program harus selesai sebelum muncul interupt
selanjutnya.

24
MODUL B
MULTI CORE
B.1 Teori
Pendukung
Multi Core pada prosessor berari prosessor tersebut memiliki lebih dari satu
core dalam satu chip. Manfaat dari sistem Multi Core adalah data dapat
didistribusikan ke masing masing core sehingga proses dapat berjalan lebih cepat.
Sebagai analoginya, misalnya Iqbal disuruh menyolder sebanyak 50 (lima puluh)
LED maka waktu yang dibutuhkan oleh Iqbal untuk menyelesaikan pekerjaan
tersebut 1 (satu) jam. Pekerjaan tersebut dapat diselesaikan kurang dari 15 (lima
belas) menit jika didistribusikan kepada ke-4 teman Iqbal ( Landi, Made, Rusli dan
Awi).

Contoh kasus Iqbal adalah sistem Multi Core dengan resources yang
memadai. Untuk sistem yang resourcesnya tidak memadai, sistem Multi Core
dapat menimbulkan masalah. Sebagai analoginya jika solder yang ada hanya 3
(tiga) unit maka kemungkinan ada 2 (dua) orang tidak bekerja (idle) bahkan dalam
kondisi terburuk dapat terjadi perkelahian dalam memperebutkan solder. Begitu
juga dengan sistem Multi Core dapat terjadi hang . Agar rebutan resource tidak
terjadi maka perlu dibuatkan rule dalam penggunaan resource.

Pada praktikum ini, prosessor yang dipergunakan adalah RP2040 dari


perusahaan Raspberry. Prosessor tersebut memiliki dua core atau dikenal dengan
nama Dual Core. Gambar B.1 menunjukan resources pada chip RP2040.
Sementara arsitekture dari prosessor RP2040 diperlihatkan pada gambar B.2. Pada
gambar B.1. ditunjukkan bahwa seluruh memory (ROM dan SRAM), ADC, PWM
, Timer, RTC adalah berbagi/share. Sementara device seperti GPIO (PIO), seluruh
device komunikasi serial (UART, SPI, I2C) tidak dishare artinya masing masing
prosesor dapat mempergunakannya secara langsung tanpa harus diatur atau
dibuatkan rule.

25
Gambar B.1 Bus Fabric dari Prosessor RP2040.

Gambar B.2 Arsitekture dari Prosessor RP2040.

26
B.2 Tujuan:
1. Melihat kerja sistem Multi Core khususnya pada Prosessor RP2040.
2. Melihat koordinasi/rule sistem berbagi resources pada Prosessor RP2040
B.3 Rangkaian Percobaan 3. Multi Core pada Prosessor RP2040

Gambar B.3 Rangkaian Percobaan Multi Core


B.4 Prosedur Percobaan 3 Multi Core.
1. Rangkailah percobaan seperti Gambar 6
2. Tulis program 3 OPERASI DUAL CORE
3. Jalankan program tersebut
4. Kerjakan tabel 2.
5. Percobaan selesai.

# PROGRAM 3 OPERASI DUAL CORE


#====================================
import _thread
from machine import Pin
from time import sleep
#from utime import sleep

# mengkonfigurasi pin 1 s/d pin 8 sebagai output


led1 = Pin(1, mode = Pin.OUT, value = 0)
led2 = Pin(2, mode = Pin.OUT, value = 0)
led3 = Pin(3, mode = Pin.OUT, value = 0)
led4 = Pin(4, mode = Pin.OUT, value = 0)
led16 = Pin(16, mode = Pin.OUT, value = 0)

27
led17 = Pin(17, mode = Pin.OUT, value =
0) led18 = Pin(18, mode = Pin.OUT, value
= 0) led19 = Pin(19, mode = Pin.OUT,
value = 0) lock = _thread.allocate_lock()
# Proses pada core – 2

def Core2():
while True:

#lock.acquire()
led16.low()
#print(" BARIS KE : 1 pada PROSESSOR 2")
led17.low()
sleep(0.2)
#print(" BARIS KE : 2 pada PROSESSOR 2")
led18.low()
sleep(0.2)
#print(" BARIS KE : 3 pada PROSESSOR 2")
led19.low()
sleep(0.2)
#print(" BARIS KE : 4 pada PROSESSOR 2")
led16.high()
sleep(0.2)
#print(" BARIS KE : 5 pada PROSESSOR 2")
led17.high()
sleep(0.2)
#print(" BARIS KE : 6 pada PROSESSOR 2")
led18.high()
sleep(0.2)
#print(" BARIS KE : 7 pada PROSESSOR 2")
led19.high()
sleep(0.2)
#print(" BARIS KE : 8 pada PROSESSOR 2")
#lock.release()
thread.start_new_thread(Core2, ())
# ===========================================
# Proses pada core – 1
while True:
#lock.acquire()
led1.low()
#print(" Baris ke : 1 pada CORE 1")
led2.low()
sleep(0.2)
#print(" Baris ke : 2 pada CORE 1")
led3.low()
sleep(0.2)
#print(" Baris ke : 3 pada CORE 1")
led4.low()
sleep(0.2)
#print(" Baris ke : 4 pada CORE 1")
led1.high()

28
sleep(0.2)
#print(" Baris ke : 5 pada CORE 1")
led2.high()
sleep(0.2)
#print(" Baris ke : 6 pada CORE 1")
led3.high()
sleep(0.2)
#print(" Baris ke : 7 pada CORE
1") #print(" Baris ke : 8 pada
CORE 1") #lock.release()

29
Tabel 3. Percobaan Multi Core
No Kegiatan Hasil
1 Tampa menggunakan Rule

- Menon-aktifkan semua baris


#print
Amati LED
2. Tampa menggunakan Rule
- Menon-aktifkan semua LED
-meng-aktifkan semua baris #print
Amati teks dilayar komputer

3 Mengunakan rule
- Aktifkan baris
#lock.acquire()
dan
#lock.release()
Amati LED dan teks dilayar

30
4 Tampa menggunakan Rule
- Non-Aktifkan baris
#lock.acquire()
dan
#lock.release()

31
B.5 Analisa Data
1. Menon-aktifkan semua baris print (Tanpa menggunakan Rule)
Berdasarkan percobaan yang dilakukan dengan menonaktifkan seluruh
baris print dan tanpa menggunakan rule. Dapat dianalisa bahwa pada kedua
core yang sedang berjalan tanpa menggunakan rule maka, lampu indikator
yang terdapat pada unit controller akan menyala secara acak. Hal ini dapat
terjadi dikarenakan pada kedua core tidak diberikan perintah prioritas
(rule) yang mengakibatkan pada core 1 lebih banyak bekerja daripada core
2 sedangkan core 2 berusaha akan mengambil alih perkejaan dari core 1
yang menyebabkan lampu indikator menyala secara acak.

2. Tanpa menggunakan Rule


- Menon-aktifkan semua LED
- Meng-aktifkan semua baris #print

Berdasarkan gambar diatas dapat dianalisa sebagai pembuktian


dlanjutan dari percobaan sebelumnya. Dimana, pada percobaan
sebelumnya kita menggunakan LED sebagai indikator. Sedangkan, pada
percobaan ini menggunakan teks pada layar seperti gambar di atas untuk
indikatornya. Dapat dianalisa bahwa core 1 lebih banyak berkerja.

32
3. Mengunakan rule
- Aktifkan baris #lock.acquire() dan #lock.release()

Berdasarkan gambar di atas dapat dianalisa bahwa pada saat core 1


bekerja maka secara bersamaan pada core 2 akan dilakukan mode lock
hingga core 1 selesai bekerja. Saat core 1 selesai bekerja maka, core 1
akan memasuki mode lock dan secara bersamaan core 2 akan memasuki
mode release yang mengakibatkan core 2 akan bekerja. Hal ini akan
terjadi terus secara berulang.

4. Tanpa menggunakan Rule


- Non-Aktifkan baris #lock.acquire()Dan #lock.release()

33
Pada percobaan ini dapat diketahui pada saat tanpa menggunakan rule
dengan menonatktifkan lock acquire dan menonaktifkan lock release
didapatkan bahwa hasil percobaan ini sama dengan hasil percobaan
kedua.

34
PERTANYAAN
1. Jika dianalogikan contoh kasus Iqbal, Landi, Made, Rusli dan Awi, Solder
dan 50 LED terhadap sistem Prosessor maka :
Core adalah Memory adalah
Data yang diolah adalah

2. Kalau tidak ada perintah _thread.start_new_thread pada prosessor Multi


Core, maka program dijalankan pada core ke:
3. Ketika menjalankan PROGRAM 3 OPERASI DUAL CORE tampa
menggunakan rule, mengapa nyala LED dan tampilkan teks pada layar
komputer tidak berarturan.
4. Ketika menjalankan PROGRAM 3 OPERASI DUAL CORE tanpa
menggunakan rule dan seluruh baris sleep dimatikan. Mengapa Raspberry Pi
Pico tidak dapat dikendalikan.
5. Ketika menjalankan PROGRAM 3 OPERASI DUAL CORE dengan
menggunakan rule, Ketika core 1 sedang bekerja. Apakah core yang lainnya
tidak bekerja? Berikan bukti terhadap jawaban anda.
6. Pada prosessor yang memiliki 8 core (Octa Core), Apakah semua corenya
bekerja secara merata dalam mengolah data. Berikan bukti pada jawaban
anda.

JAWAB
1. Core adalah Manusia (Iqbal, Landi, Made, Rusli,
Awi) Memory adalah Solder
Data yang diolah adalah LED
2. Core ke 1 atau pertama karena harus ada perintah atau rule nya terlebih
dahulu untuk menjalankan program kedua.
3. Karena jika tanpa menggunakan rule maka core 1 dan core 2 akan saling
berebutan dalam menjalankan programnya.
4. Karena untuk menjeda harus menggunakan rule dan seluruh baris sleep
diaktifkan supaya program dapat dikendalikan.

35
5. Bekerja, karena jika menggunakan rule maka salah satu core akan bekerja
dan yang satunya akan menunggu sampai program yang pertama selesai
6. Tidak, karena tidak semua core bisa bekerja secara bersamaan tapi paling
bisa bekerja bersamaan 2 atau 3 core secara bersamaan.

36
DAFTAR PUSTAKA

Damien P. George, Paul Sokolovsky, and contributors, 2019-01-25,


MicroPythonDocumentation Release 1.10

RP2040 Datasheet, 2022-06-17, a Microcontroller by Raspberry Pi, Raspberry


Pi Ltd

Raspberry Pi Pico Python SDK, 2022-06-17, A Micropython


Environment for RP2040Microcontrollers, Raspberry Pi Ltd

37

Anda mungkin juga menyukai