MIKROPROSESSOR
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
Supriono
PANDUAN PELAKSANAN PRAKTIKUM
2. Materi Pelaksanaan praktikum mikroprosessor tahun 2023 tentang Interrupt dan Multi-
Core pada prosessor RP2040 dari Raspberry dengan mempergunakan bahasa
Micropython.
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.
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 diberikan digrup
DAFTAR ISI
KATA PENGANTAR...............................................................................................................2
PANDUAN PELAKSANAN PRAKTIKUM............................................................................3
Panduan Penyimpanan File........................................................................................................4
MODUL A INTERRUPT.....................................................................................................6
1. Teori Pendukung............................................................................................................6
• Tujuan........................................................................................................................7
• Peralatan.....................................................................................................................7
• Rangkaian Percobaan 1. Eksternal Interrupt..............................................................7
• Prosedur Percobaan 1. Eksternal Interrupt.................................................................8
• Koding........................................................................................................................8
• Pengujian dan Keluaran...........................................................................................11
• Rangkaian Percobaan 2. Internal Interrupt...............................................................13
• Prosedur Percobaan 2. Internal Interrupt.................................................................13
• Koding......................................................................................................................14
• Pengujian dan Keluaran...........................................................................................17
Pertanyaan................................................................................................................................18
MODUL B MULTI CORE......................................................................................................19
• Teori Pendukung......................................................................................................19
• Tujuan.......................................................................Error! Bookmark not defined.
• Rangkaian Percobaan 3. Multi Core pada Prosessor RP2040 Error!
Bookmark not defined.
• Prosedur Percobaan 3 Multi Core............................Error! Bookmark not defined.
• Koding......................................................................................................................22
• Pengujian dan Keluaran...........................................................................................23
Pertanyaan................................................................................................................................24
DAFTAR PUSTAKA..............................................................................................................25
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 mengerjakan
tugas 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 dengan
prosessor 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.
HIGH_LEVEL
FALLING
RISING
LOW_LEVEL
A.3 Peralatan:
2. Computer dengan software Thonny dengan Python3 versi 6 atau lebih besar
#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()
# ============================================
# =========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)
Tabel 1. Eksternal interrupt
No Kegiatan Hasil
1. Memberikan tegangan 3V3 pada kaki 5.
jumlah interrupt yang terjadi.
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)
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,
# ============================================
# =========PROGRAM UTAMA======================
while True:
for i in range(1, 100000, 1):
#led1.low()
print(" Baris ke : 1 pada program utama")
#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()
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
7. 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.
8. Apakah semua prosessor yang ada dipasaran memiliki urutan prioritas interrupt seperti prosessor
Raspberry. Berikanlah bukti dan alasannya.
MODUL B
MULTI CORE
Multi core pada prosessor berari prosessor tersebut memiliki lebih dari satu core dalam satu chip.
Mamfaat 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 tampa
harus diatur atau dibuatkan rule.
Gambar B.1 . Bus Fabric dari Prosessor RP2040.
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()
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()
20
Tabel 4. Percobaan Multi Core
No Kegiatan Hasil
3 Mengunakan rule
- Aktifkan baris #lock.acquire() dan
#lock.release()
Amati LED dan teks dilayar
4 Tampa menggunakan Rule
- Non-Aktifkan baris #lock.acquire()
dan
#lock.release()
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 tampa menggunakan rule dan
seluruh baris sleep dimatikan. Mengapa Raspberry Pi Pico tidak dapat dikendalikan.
21
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.
22