123452. Konsep Sistem Tertanam
⚙️ Sistem Tertanam • 16 Pertemuan

Konsep Sistem Tertanam

Materi kuliah per pertemuan: dasar sistem tertanam, arsitektur MCU, GPIO, interrupt dan timer, ADC/PWM, komunikasi serial (UART, SPI, I2C), real-time dan RTOS, serta manajemen daya dan debugging.

← Beranda Portal
Sumber: Materi_Konsep_Sistem_Tertanam_150hal.pdf

🗺️ Peta & Capaian Mata Kuliah

Peta 16 pertemuan

Pert.TopikCPMK
1Pengantar sistem tertanam1
2Arsitektur: MPU vs MCU, CPU, memori1
3Platform dan lingkungan pengembangan (IDE, toolchain, flashing)1, 2
4GPIO, I/O digital, dan pemrograman C untuk mikrokontroler2
5Interrupt dan timer2
6ADC, DAC, PWM; antarmuka sensor dan aktuator2
7Review dan latihan soal1, 2
8Ujian Tengah Semester (UTS)1, 2
9Komunikasi serial: UART3
10Komunikasi serial: SPI dan I2C3
11Konsep real-time dan pengantar RTOS4
12RTOS: task, scheduling, dan prioritas4
13RTOS: semaphore, mutex, dan antrean (queue)4
14Manajemen daya, keandalan, dan debugging4, 5

Capaian pembelajaran dan penilaian

KodeSetelah mata kuliah ini, mahasiswa mampu...Pertemuan
CPMK-1Menjelaskan karakteristik, komponen, dan arsitektur sistem tertanam serta perbedaannya dengan komputer umumP1–P3
CPMK-2Menggunakan fitur dasar mikrokontroler (GPIO, timer, interrupt, ADC) dan antarmuka sensor/aktuatorP3–P7
CPMK-3Menerapkan protokol komunikasi serial (UART, SPI, I2C) pada sistem tertanamP9–P10
CPMK-4Menjelaskan konsep real-time dan menerapkan RTOS (task, scheduling, sinkronisasi)P11–P14
CPMK-5Merancang, membangun, dan menguji prototipe sistem tertanam secara berkelompokP14–P15

Penilaian (RPS): tugas & kuis 15 % · praktikum 25 % · UTS 20 % · UAS 20 % · proyek akhir 20 %

Peralatan yang dipakai di praktikum

Slide 4: Peralatan yang dipakai di praktikum
Gambar: slide 4 dari materi PDF
Teks pada slide

Papan mikrokontroler Breadboard + jumper
Arduino Uno · ESP32 · STM32 merangkai tanpa solder
Sensor Servo / motor DC
LDR · suhu · jarak · DHT/BME aktuator (PWM)
Cukup satu papan mikrokontroler, breadboard, dan beberapa

LED + resistor Push button
output digital paling dasar input digital
v
Kabel USB Multimeter / logic analyzer
daya + upload program mengukur dan debugging
komponen dasar untuk mengikuti seluruh materi

Pertemuan 1: Pengantar Sistem Tertanam

🎯 Tujuan Pembelajaran CPMK-1
  • Menjelaskan definisi dan ciri sistem tertanam
  • Membedakannya dari komputer serba guna
  • Menyebut contoh penerapan, komponen, dan kendala desain

Apa itu sistem tertanam?

Slide 6: Apa itu sistem tertanam?
Gambar: slide 6 dari materi PDF
Teks pada slide

Sistem tertanam (embedded system)
adalah sistem komputer khusus yang
menjadi bagian dari perangkat atau sistem
yang lebih besar
Dirancang untuk satu fungsi atau
sekumpulan tugas tertentu
Biasanya berjalan terus-menerus tanpa
campur tangan pengguna
Pengguna melihat produknya (mesin cuci,
AC), bukan "komputernya"

PERANGKAT: mesin cuci
INPUT Catu daya OUTPUT
Sensor Motor
level air drum
SISTEM
TERTANAM
Sensor
(MCU + firmware) Pompa air
suhu
Tombol Display /
program buzzer
Satu fungsi khusus:
mengatur siklus cuci secara otomatis
Pengguna melihatnya sebagai "mesin cuci",
bukan sebagai komputer.

Sistem tertanam vs komputer serba guna

AspekSistem tertanamKomputer serba guna (PC)
FungsiKhusus, satu tujuanUmum, banyak aplikasi
Sumber dayaTerbatas (KB–MB memori, puluhan–ratusan MHz)Besar (GB memori, GHz)
Perangkat lunakFirmware tetap, jarang digantiOS + aplikasi yang dipasang bebas
DayaSangat hemat (µW–W), sering bateraiPuluhan–ratusan watt
Waktu responsSering real-timeUmumnya best-effort
AntarmukaSensor, aktuator, tombol, display kecilKeyboard, mouse, layar besar
Biaya & ukuranKecil, murah per unitLebih besar dan mahal

Ciri-ciri utama sistem tertanam

Slide 8: Ciri-ciri utama sistem tertanam
Gambar: slide 8 dari materi PDF
Teks pada slide

Fungsi khusus: dirancang untuk satu
pekerjaan
Ukuran kecil & hemat daya: sering
bertenaga baterai
Sumber daya terbatas: memori dan
prosesor secukupnya
Real-time: harus merespons dalam batas
waktu tertentu
Andal: berjalan 24/7, sering dipasang di
tempat sulit dijangkau

Fungsi
khusus
Andal Ukuran
24/7 kecil
Sistem
tertanam
Sumber daya Hemat
terbatas daya
Real-time

Sekilas sejarah

Slide 9: Sekilas sejarah
Gambar: slide 9 dari materi PDF
Teks pada slide

1966 1974 1996
Apollo Guidance TI TMS1000 Atmel
Computer (NASA) mikrokontroler awal memori flash
1971 1980
Intel 4004 Intel 8051
mikroprosesor 1-chip (MCS-51)
Dari komputer navigasi Apollo hingga mikrokontroler

2005 2016
AVR Arduino ESP32
on-chip belajar jadi mudah Wi-Fi + Bluetooth
2004 2007
ARM Cortex-M3 STM32
inti 32-bit murah famili Cortex-M ST
Wi-Fi yang harganya hanya beberapa dolar

Di mana kita menemukannya?

Slide 10: Di mana kita menemukannya?
Gambar: slide 10 dari materi PDF
Teks pada slide

Rumah tangga Otomotif
Mesin cuci, kulkas, AC ECU mesin (injeksi BBM)
Microwave, rice cooker ABS, airbag, TPMS
Remote & smart plug Lampu, jendela, sensor
Medis Elektronik konsumen
Alat pacu jantung TV pintar, kamera digital
Pemantau tekanan darah Jam tangan pintar
Pompa infus, glukometer Konsol game, drone
Sistem tertanam ada di hampir semua

Industri
PLC & robot pabrik
Kontrol proses & motor
parkir Sensor jalur produksi
IoT & kota pintar
Sensor pertanian
Lampu jalan cerdas
Pelacak GPS, smart meter
perangkat elektronik di sekitar kita

Blok penyusun sistem tertanam

Slide 11: Blok penyusun sistem tertanam
Gambar: slide 11 dari materi PDF
Teks pada slide

Catu daya
+ regulator
MIKROKONTROLER
Sensor analog Pengondisi digital
CPU
(suhu, cahaya, sinyal
jarak, tombol) + ADC
Timer
dunia nyata
dunia digital / pengguna
Antarmuka pengguna
(tombol, display, LED)
Alur umum: sensor → pemrosesan → aktuator, dengan

kendali Driver daya Aktuator
Memori
(transistor, (motor, lampu,
H-bridge) buzzer, relay)
GPIO
Komunikasi: UART · SPI · I2C · Wi-Fi
· Bluetooth
catu daya dan komunikasi sebagai pendukung

Perangkat keras dan firmware

Slide 12: Perangkat keras dan firmware
Gambar: slide 12 dari materi PDF
Teks pada slide

Perangkat keras: mikrokontroler, memori,
sensor, aktuator, catu daya
Firmware: program yang tersimpan di
memori flash dan berjalan begitu daya
menyala
Dapat berupa bare-metal (tanpa OS) atau
berjalan di atas RTOS
Umumnya ditulis dalam C/C++ (kadang
assembly)
Pembaruan firmware: lewat
kabel/programmer atau OTA (over-the-air)

Aplikasi
ERAWMRIF
logika program: kontrol suhu, protokol
RTOS / middleware
/
KANUL
task, jaringan, file system
TAKGNAREP
Driver / HAL
GPIO, UART, SPI, I2C, ADC
Boot & startup
reset vector, inisialisasi clock
Perangkat keras
MCU, memori, sensor, aktuator
Firmware tersimpan di memori flash
dan berjalan begitu daya menyala

Klasifikasi sistem tertanam

Dasar klasifikasiKategoriContoh
Kinerja & kompleksitasSkala kecil (8/16-bit) · menengah (32-bit) · canggih (SoC + OS)Termostat sederhana · mesin cuci · router, smartphone
Fungsi / perilakuStandalone · real-time · jaringan (networked) · bergerak (mobile)Oven microwave · rem ABS · sensor IoT · pelacak GPS
Kekritisan waktuHard · firm · soft real-timeAirbag · inspeksi kamera pabrik · pemutar video
Sumber dayaBertenaga baterai · tersambung listrikWearable · panel kontrol pabrik

Satu produk bisa masuk ke beberapa kategori sekaligus.

Kendala desain

Slide 14: Kendala desain
Gambar: slide 14 dari materi PDF
Teks pada slide

Biaya: harga per unit sangat menentukan
pada produksi massal
Daya: baterai harus awet berbulan-bulan
Ukuran & berat: harus muat di dalam
produk
Memori & kinerja: KB–MB memori,
puluhan–ratusan MHz
Waktu rilis, keandalan, dan keamanan
juga membatasi pilihan

Biaya
trade-off
desain
Kinerja Daya
Kinerja naik → daya & biaya naik
Daya turun → clock diturunkan, kinerja turun
Biaya turun → memori dan fitur terbatas

Rangkuman Pertemuan 1

  1. Sistem tertanam = komputer khusus yang menjadi bagian dari perangkat lebih besar dan menjalankan fungsi tertentu.
  2. Cirinya: fungsi khusus, sumber daya terbatas, hemat daya, sering real-time, dan andal.
  3. Blok utama: sensor → pemroses (MCU) → driver → aktuator, ditambah catu daya dan komunikasi.
  4. Firmware berjalan di atas perangkat keras, bare-metal atau RTOS, umumnya ditulis dalam C/C++.
  5. Desain selalu kompromi antara biaya, kinerja, daya, ukuran, dan keandalan.

Kata kunci: sistem tertanam · firmware · sensor · aktuator · real-time · trade-off

Pertemuan 2: Arsitektur Sistem Tertanam

🎯 Tujuan Pembelajaran CPMK-1
  • Membedakan mikroprosesor dan mikrokontroler
  • Menjelaskan Harvard vs von Neumann, pipeline, dan register
  • Memahami peta memori dan jenis-jenis memori

Mikroprosesor vs mikrokontroler

Slide 17: Mikroprosesor vs mikrokontroler
Gambar: slide 17 dari materi PDF
Teks pada slide

MIKROPROSESOR (MPU): banyak chip di satu papan
CPU
(mikroprosesor)
BUS alamat · data · kontrol
ROM / Pengendali Timer /
RAM
Flash I/O UART
chip terpisah, papan lebih besar, daya & biaya lebih tinggi
Mikrokontroler = CPU + memori

MIKROKONTROLER (MCU): semua dalam satu chip
satu chip (SoC)
CPU Flash RAM Timer
bus internal
GPIO ADC UART SPI / I2C
ukuran kecil, hemat daya, murah, siap pakai
+ periferal dalam satu chip

Perbandingan MPU dan MCU

AspekMikroprosesor (MPU)Mikrokontroler (MCU)
Isi chipHanya CPU; memori dan I/O eksternalCPU + Flash + RAM + periferal
KecepatanRatusan MHz hingga GHzPuluhan hingga beberapa ratus MHz
MemoriEksternal, GB (DDR)Internal, KB hingga MB
DayaLebih besar (watt)Kecil (mW; µW saat tidur)
Sistem operasiUmumnya Linux / AndroidBare-metal atau RTOS
Biaya sistemLebih mahal (banyak komponen)Murah, rangkaian sederhana
ContohARM Cortex-A (Raspberry Pi), x86ATmega328P, STM32, ESP32

Arsitektur: von Neumann vs Harvard

Slide 19: Arsitektur: von Neumann vs Harvard
Gambar: slide 19 dari materi PDF
Teks pada slide

von Neumann: satu memori, satu bus
satu bus Memori
CPU (program
+ data)
instruksi dan data bergantian lewat
bus yang sama (bottleneck)
Contoh: PC (x86), Cortex-M0/M0+
Harvard memungkinkan instruksi dan data

Harvard: memori program & data terpisah
Memori program
bus instruksi
(Flash)
CPU
bus data Memori data
(SRAM)
instruksi dan data diakses bersamaan
(lebih cepat)
Contoh: AVR, 8051, PIC, Cortex-M3/M4 (modified)
diakses serentak, sehingga lebih cepat

RISC vs CISC dan pipeline

Slide 20: RISC vs CISC dan pipeline
Gambar: slide 20 dari materi PDF
Teks pada slide

RISC: instruksi sedikit, sederhana, panjang
tetap (ARM, AVR, RISC-V)
CISC: instruksi banyak dan kompleks (x86,
8051)
Pipeline memecah eksekusi menjadi tahap
fetch–decode–execute yang tumpang tindih
Throughput naik: mendekati 1 instruksi per
siklus
Cortex-M3/M4 memakai pipeline 3 tahap

Nomor siklus clock
Tanpa pipeline: 2 instruksi = 6 siklus
1 2 3 4 5 6
I1 F D E
I2 F D E
Dengan pipeline: 4 instruksi = 6 siklus
1 2 3 4 5 6
I1 F D E
I2 F D E
I3 F D E
I4 F D E
F = fetch D = decode E = execute
Tiap siklus, tahap berbeda bekerja paralel

Siklus fetch–decode–execute

Slide 21: Siklus fetch–decode–execute
Gambar: slide 21 dari materi PDF
Teks pada slide

Fetch: CPU mengambil instruksi dari
memori pada alamat yang ditunjuk PC
Decode: unit kontrol menafsirkan opcode
dan operand
Execute: ALU, memori, atau I/O
mengerjakan operasi
PC bertambah, lalu siklus berulang tanpa
henti
Lompatan (jump) dan interupsi mengubah
nilai PC

1 FETCH
ambil instruksi dari
memori[PC]
PC
+ 1
3 EXECUTE 2 DECODE
ALU / memori / I/O unit kontrol menafsirkan
mengerjakan operasi opcode & operand
Contoh instruksi: ADD R1, R2
R1 ← R1 + R2, lalu PC menunjuk instruksi berikutnya
diulang jutaan–miliaran kali per detik

Register inti CPU

Slide 22: Register inti CPU
Gambar: slide 22 dari materi PDF
Teks pada slide

Register umum (R0–R15): tempat data
sementara, akses 1 siklus
PC (program counter): alamat instruksi
berikutnya
SP (stack pointer): puncak stack untuk
variabel lokal, alamat balik, dan konteks
Status/flag: hasil operasi terakhir (nol,
negatif, carry, overflow)
ALU memakai register sebagai operan dan
penyimpan hasil

REGISTER UMUM (R0–R15) STACK (SRAM)
R0 R1 R2 R3
R4 R5 R6 R7
R8 R9 R10 R11
SP
R12 R13 R14 R15 (kosong)
data C
PC SP
data B
alamat instruksi berikut puncak stack
STATUS (FLAG) data A
N Z C V
negatif · nol · carry · overflow
Register = memori tercepat, ada di dalam CPU

Peta memori

Slide 23: Peta memori
Gambar: slide 23 dari materi PDF
Teks pada slide

MCU memakai satu ruang alamat untuk
Flash, SRAM, dan register periferal
Memory-mapped I/O: menulis ke alamat
tertentu = mengatur GPIO, timer, UART
Flash: program dan konstanta (non-volatile)
SRAM: variabel, stack, heap (hilang saat
daya mati)
Alamat dasar berbeda per chip: lihat
datasheet / reference manual

tinggi
0xE000 0000
Sistem (NVIC, SysTick) interrupt & debug
0x4000 0000
Register periferal GPIO, timer, UART
0x2000 0000
SRAM variabel, stack, heap
0x0800 0000
Flash program & konstanta
rendah
Contoh peta memori MCU STM32 (Cortex-M)

Jenis memori pada sistem tertanam

MemoriVolatile?FungsiCatatan
Mask ROMTidakProgram tetap dari pabrikTidak dapat diubah; hanya untuk produksi sangat besar
FlashTidakMenyimpan firmwareHapus per blok; siklus tulis terbatas (puluhan ribu kali)
SRAMYaVariabel, stack, heapCepat, tetapi mahal per bit
DRAMYaMemori besar pada MPU/SoCPerlu refresh; dipakai Linux embedded
EEPROMTidakKonfigurasi kecilTulis per byte, lambat

Famili mikrokontroler populer

FamiliLebar bitKecepatan umumCiri / contoh
8051 (MCS-51)812–100 MHzKlasik; banyak dipakai untuk pendidikan
AVR (ATmega328P)816–20 MHzDasar Arduino Uno; mudah dipelajari
PIC (Microchip)8 / 16 / 324–64 MHzLuas dipakai di industri dan kontrol
ARM Cortex-M (STM32)3248–480 MHzDominan di industri; ekosistem luas
ESP32 (Xtensa / RISC-V)32hingga 240 MHzWi-Fi + Bluetooth terintegrasi

Kecepatan dan fitur bervariasi per seri; angka di atas hanya rentang umum.

Rangkuman Pertemuan 2

  1. MCU = CPU + memori + periferal dalam satu chip; MPU membutuhkan komponen eksternal.
  2. Harvard memisahkan memori dan bus program/data; von Neumann memakai satu memori dan satu bus.
  3. CPU bekerja dengan siklus fetch–decode–execute; pipeline membuatnya mendekati 1 instruksi per siklus.
  4. Register (PC, SP, flag, umum) adalah memori tercepat; periferal diakses lewat memory-mapped I/O.
  5. Flash menyimpan program (non-volatile), SRAM menyimpan data (volatile).

Kata kunci: MCU · MPU · Harvard · pipeline · register · Flash · SRAM

Pertemuan 3: Platform dan Lingkungan Pengembangan

🎯 Tujuan Pembelajaran CPMK-1 · 2
  • Mengenali isi MCU dan papan pengembangan populer
  • Menjelaskan alur toolchain dan cara flashing
  • Menjalankan program pertama (Blink)

Isi sebuah mikrokontroler

Slide 28: Isi sebuah mikrokontroler
Gambar: slide 28 dari materi PDF
Teks pada slide

DALAM SATU CHIP MIKROKONTROLER
Pengendali
CPU core
interupsi
BUS INTERNAL (alamat
Timer
GPIO ADC UART
PWM
LED, motor, sensor PC, GPS,
tombol servo analog modul
Periferal terhubung ke bus internal

Flash SRAM
(program) (data)
· data · kontrol)
SPI I2C Watchdog RTC
SD card, sensor, reset jam &
display EEPROM otomatis alarm
dan ke dunia luar lewat pin

Clock dan reset

Slide 29: Clock dan reset
Gambar: slide 29 dari materi PDF
Teks pada slide

Clock = detak yang mengatur kecepatan
CPU dan periferal
Sumber: osilator RC internal atau kristal
eksternal (lebih akurat)
PLL mengalikan frekuensi; prescaler
membaginya
Clock tinggi → cepat, tetapi boros daya
Reset: power-on, tombol, watchdog,
brown-out; CPU mulai dari reset vector

CLOCK
CPU
Kristal PLL Prescaler
16 MHz × n ÷ n Periferal
Timer
RESET
ATAU
Power-on reset
Tombol RESET
CPU mulai dari
reset vector
Watchdog timeout
(alamat awal program)
Brown-out

Papan pengembangan populer

PapanMCUClockFlash / RAMLogikaKonektivitas
Arduino UnoATmega328P (AVR 8-bit)16 MHz32 KB / 2 KB5 VUSB-serial
ESP32 DevKitESP32 (Xtensa 32-bit)hingga 240 MHzumumnya 4 MB / 520 KB3,3 VWi-Fi + Bluetooth
STM32 "Blue Pill"STM32F103C8 (Cortex-M3)72 MHz64 KB / 20 KB3,3 VUSB, CAN

Nilai tipikal; periksa datasheet papan yang dipakai di praktikum.

Anatomi papan Arduino Uno

Slide 31: Anatomi papan Arduino Uno
Gambar: slide 31 dari materi PDF
Teks pada slide

Papan = MCU + regulator + USB-serial +
header pin
Pin digital 0–13 (PWM pada 3, 5, 6, 9, 10,
11)
Pin analog A0–A5 terhubung ke ADC 10 bit
Daya lewat USB (5 V) atau jack 7–12 V
LED bawaan di pin 13 (LED_BUILTIN)

4
6
1
3 ATmega328P
8
2
7
5
1 USB (daya + program) 5 Pin analog A0–A5 + daya
2 DC jack 7–12 V 6 Tombol reset
3 Mikrokontroler ATmega328P 7 Kristal 16 MHz
4 Pin digital 0–13 (PWM: ~) 8 Regulator 5 V / 3,3 V

Toolchain: dari kode ke chip

Slide 32: Toolchain: dari kode ke chip
Gambar: slide 32 dari materi PDF
Teks pada slide

BUILD (di komputer)
main.c Preprocessor Compiler
kode sumber #include, #define C → assembly
firmware.elf objcopy
kode + simbol debug → .hex / .bin
FLASH (ke chip) Satu klik "Upload"
Kompilasi silang (cross-compile): dibuat

Assembler Linker
assembly → .o + library & linker script
Flasher Memori flash MCU
bootloader / SWD / JTAG program siap dijalankan
di IDE menjalankan semua tahap ini
di PC, dijalankan di mikrokontroler

IDE dan cara mem-flash

Slide 33: IDE dan cara mem-flash
Gambar: slide 33 dari materi PDF
Teks pada slide

IDE: Arduino IDE, PlatformIO (VS Code),
STM32CubeIDE, ESP-IDF
Bootloader: program kecil di chip yang
menerima firmware lewat USB-serial
Debugger SWD/JTAG: flash sekaligus
debugging (breakpoint)
Pilih board dan port yang benar sebelum
upload
Gagal? Cek kabel data, driver
(CH340/CP210x), dan mode boot

A. Lewat bootloader (Arduino, ESP32)
USB
USB-serial MCU
PC / IDE
+ bootloader (flash)
B. Lewat debugger (STM32, ARM)
SWDIO
USB
ST-Link / SWCLK MCU
PC / IDE
J-Link (target)
GND
Debugger juga bisa: breakpoint, step, baca register
dan memori saat program berjalan
SWD = Serial Wire Debug (2 kabel + GND)

Program pertama: Blink

Slide 34: Program pertama: Blink
Gambar: slide 34 dari materi PDF
Teks pada slide
// Blink: LED pada pin 13 berkedip tiap detik
const int LED = 13;
void setup() {
pinMode(LED, OUTPUT); // pin 13 sebagai
}
void loop() {
digitalWrite(LED, HIGH); // nyalakan LED
delay(500); // tunggu 500 ms
digitalWrite(LED, LOW); // matikan LED
delay(500);
}

setup() dijalankan sekali saat
mulai
loop() diulang selamanya
delay() menahan CPU (blocking)
output
Periode 1 s → frekuensi 1 Hz

Alur kerja dan keselamatan praktikum

Slide 35: Alur kerja dan keselamatan praktikum
Gambar: slide 35 dari materi PDF
Teks pada slide

Alur: edit → build → flash → uji → debug (diulang)
Periksa polaritas (VCC/GND) sebelum menyalakan
Jangan melebihi tegangan logika pin (5 V vs
Beri resistor pada LED; jangan hubungkan pin
Matikan daya sebelum mengubah rangkaian
Hindari ESD: sentuh logam ber-ground dulu,
Simpan kode di Git dan beri komentar yang

daya
3,3 V)
output langsung ke GND/VCC
pegang papan pada tepinya
jelas

Rangkuman Pertemuan 3

  1. MCU berisi CPU, memori, bus internal, dan periferal (GPIO, timer, ADC, UART, SPI, I2C, watchdog).
  2. Clock menentukan kecepatan; reset memulai CPU dari reset vector.
  3. Papan populer: Arduino Uno (AVR 8-bit, 5 V), ESP32 (Wi-Fi/BLE, 3,3 V), STM32 (Cortex-M, 3,3 V).
  4. Toolchain: preprocessor → compiler → assembler → linker → .hex/.bin → flasher.
  5. Program pertama "Blink" memakai setup() sekali dan loop() berulang.

Kata kunci: toolchain · bootloader · SWD · IDE · Blink · cross-compile

Pertemuan 4: GPIO dan Pemrograman C

🎯 Tujuan Pembelajaran CPMK-2
  • Mengatur pin GPIO sebagai input atau output
  • Merangkai LED dan tombol dengan benar
  • Memakai operasi bit untuk mengakses register

Apa itu GPIO?

Slide 38: Apa itu GPIO?
Gambar: slide 38 dari materi PDF
Teks pada slide

GPIO = General Purpose Input/Output: pin
serbaguna yang dapat diprogram
Dikelompokkan dalam port (mis. PORTB
berisi 8 pin)
Output: MCU menulis HIGH/LOW untuk
LED, relay, dll.
Input: MCU membaca level HIGH/LOW dari
tombol atau sensor digital
Arah diatur oleh register arah (DDR /
MODER)

+VCC
pull-up
internal
DDR
(arah: 1 = output)
enable
PIN
PORT
(data keluar)
PIN
(data masuk)
buffer input
Satu pin bisa menjadi input atau output
sesuai isi register arah

Mode pin GPIO

ModeArtiDipakai untuk
Input floatingPin tanpa resistor tarikSinyal dari rangkaian yang aktif mendorong level
Input pull-upResistor internal ke VCCTombol yang dihubungkan ke GND
Input pull-downResistor internal ke GNDTombol yang dihubungkan ke VCC
Output push-pullMenarik HIGH dan LOW secara aktifLED, sinyal logika
Output open-drainHanya menarik ke LOWBus I2C, penggeser level
Fungsi alternatif / analogPin dikuasai periferalADC, UART, SPI, PWM

Level logika dan tegangan

Slide 40: Level logika dan tegangan
Gambar: slide 40 dari materi PDF
Teks pada slide

Logika digital hanya mengenal HIGH dan
LOW
Ambang bergantung pada tegangan sistem
(5 V atau 3,3 V)
Di antara ambang = tidak terdefinisi →
hasil acak
Arus pin terbatas (tipikal ≈ 20 mA); cek juga
batas per port/chip
5 V → 3,3 V hanya lewat level shifter atau
pembagi tegangan

Sistem 5 V
5 V
HIGH
Sistem 3,3 V
≈ 3,5 V
3,3 V
HIGH
tak terdefinisi
≈ 2,3 V
tak terdefinisi
≈ 1,5 V
≈ 1,0 V
LOW
LOW
0 V 0 V
Jangan hubungkan output 5 V ke input 3,3 V!
Gunakan level shifter atau pembagi tegangan

Menyalakan LED dengan aman

Slide 41: Menyalakan LED dengan aman
Gambar: slide 41 dari materi PDF
Teks pada slide

LED butuh resistor pembatas arus
Rumus: R = (V − V ) / I
pin f
Contoh: (5 − 2) V / 10 mA = 300 Ω → pakai
330 Ω
LED menyala saat arus mengalir dari pin ke
GND (active-high)
Arus 5–15 mA sudah cukup terang untuk
indikator

R = 330 Ω
D13
MCU
I LED
Hukum Ohm: R = (V_pin − V_f) / I
= (5 V − 2 V) / 10 mA = 300 Ω
dipilih nilai standar 330 Ω
I = 3 V / 330 Ω ≈ 9 mA (aman, di bawah 20 mA)
V_f = tegangan maju LED (merah ≈ 2 V)

Membaca tombol: pull-up dan pull-down

Slide 42: Membaca tombol: pull-up dan pull-down
Gambar: slide 42 dari materi PDF
Teks pada slide

Pin input tidak boleh floating: harus punya
level pasti
Pull-up: lepas = HIGH, ditekan = LOW
(logika terbalik)
Pull-down: lepas = LOW, ditekan = HIGH
Resistor umum 10 kΩ, atau pakai pull-up
internal (INPUT_PULLUP)
Pull-up internal AVR ≈ 20–50 kΩ

PULL-UP PULL-DOWN
+VCC +VCC
10 kΩ
ke pin ke pin
MCU MCU
10 kΩ
Tanpa resistor, pin "mengambang" (floating)
→ pembacaan acak
Lepas: HIGH Lepas: LOW
Ditekan: LOW Ditekan: HIGH
(logika terbalik) (logika normal)

Bouncing dan debouncing

Slide 43: Bouncing dan debouncing
Gambar: slide 43 dari materi PDF
Teks pada slide

Kontak mekanis memantul sesaat → satu
tekanan terbaca banyak kali
Durasi bounce ≈ 1–20 ms
Debounce perangkat lunak: baca ulang
setelah ±20 ms, terima jika stabil
Debounce perangkat keras: kapasitor
(RC) atau Schmitt trigger
Jangan pakai delay() panjang untuk
debounce di sistem multitugas

tombol ditekan
Ideal
bounce ≈ 1–20 ms
Nyata (bouncing)
Setelah debounce
Satu tekanan terbaca banyak kali → perlu debounce
(tunda beberapa ms atau pakai kapasitor/filter)

Tipe data dan operator bit di C

ElemenContohKeterangan
uint8_t / int8_tuint8_t x = 200;Lebar pasti 8 bit; pilihan utama di firmware
uint16_t / uint32_tuint32_t t = 0;16 dan 32 bit tanpa tanda
volatilevolatile uint8_t flag;Nilai bisa berubah di luar alur program (ISR / hardware)
AND &x & 0x0FAmbil atau hapus bit tertentu
OR |x | 0x20Set bit
XOR ^x ^ 0x20Toggle bit
NOT ~~(1 << 5)Balik semua bit (membuat mask)
Geser << >>1 << 5Mask posisi bit ke-5 (= 0x20)

Akses register langsung: set, clear, toggle

Slide 45: Akses register langsung: set, clear, toggle
Gambar: slide 45 dari materi PDF
Teks pada slide
// AVR ATmega328P: LED pada PB5 (pin 13)
DDRB |= (1 << DDB5); // PB5 sebagai output
PORTB |= (1 << PORTB5); // set bit -> HIGH
PORTB &= ~(1 << PORTB5); // clear bit -> LOW
PORTB ^= (1 << PORTB5); // toggle bit
// Membaca bit input (tombol di PD2)
if (PIND & (1 << PIND2)) {
// pin HIGH
}

SET (jadikan 1) bit 7 6 5 4 3 2 1 0
reg |= (1<<5);
sebelum 0 1 0 0 1 0 1 0
sesudah 0 1 1 0 1 0 1 0
CLEAR (jadikan 0)
reg &= ~(1<<5);
sebelum 0 1 1 0 1 0 1 0
sesudah 0 1 0 0 1 0 1 0
TOGGLE (balik)
reg ^= (1<<5);
sebelum 0 1 0 0 1 0 1 0
sesudah 0 1 1 0 1 0 1 0

Contoh: tombol mengontrol LED

Slide 46: Contoh: tombol mengontrol LED
Gambar: slide 46 dari materi PDF
Teks pada slide
const int BTN = 2; // tombol ke GND (pull-up internal)
const int LED = 13;
void setup() {
pinMode(BTN, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop() {
if (digitalRead(BTN) == LOW) { // ditekan
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}

Teknik ini disebut polling: CPU terus
membaca tombol
Tombol aktif-LOW karena memakai
pull-up
Tambahkan debounce bila tombol
dipakai menghitung
Alternatif lebih efisien: interrupt
(Pertemuan 5)

Rangkuman Pertemuan 4

  1. GPIO dapat menjadi input atau output sesuai register arah.
  2. Input harus punya level pasti: gunakan pull-up/pull-down dan waspadai bouncing.
  3. LED butuh resistor: R = (V_pin − V_f) / I.
  4. Operasi bit: set (|=), clear (&= ~), toggle (^=) untuk mengatur register.
  5. Polling itu sederhana tetapi boros CPU, alasan untuk beralih ke interrupt.

Kata kunci: GPIO · pull-up · debounce · operasi bit · register · polling

Pertemuan 5: Interrupt dan Timer

🎯 Tujuan Pembelajaran CPMK-2
  • Membedakan polling dan interrupt
  • Menulis ISR yang benar
  • Menghitung periode timer dan memakai mode timer

Polling vs interrupt

Slide 49: Polling vs interrupt
Gambar: slide 49 dari materi PDF
Teks pada slide

event
POLLING
CPU rajin menanyakan "ada event?"
cek kerja lain cek kerja lain cek kerja lain cek kerja lain
event
INTERRUPT
perangkat "memanggil" CPU saat perlu
program utama (CPU mengerjakan tugas lain)
respons
Interrupt: CPU bekerja dan hanya "diganggu"

terjadi
cek kerja lain cek kerja lain cek kerja lain cek kerja lain cek
terlambat (latency) banyak siklus CPU terbuang untuk mengecek
terjadi
CPU bebas, respons cepat
ISR program utama dilanjutkan
segera
ketika benar-benar ada event

Mekanisme interrupt

Slide 50: Mekanisme interrupt
Gambar: slide 50 dari materi PDF
Teks pada slide

Perangkat meminta layanan lewat IRQ
(interrupt request)
CPU menyelesaikan instruksi, lalu
menyimpan konteks (PC, flag) ke stack
CPU melompat ke ISR (interrupt service
routine)
Instruksi RETI / return memulihkan
konteks
Latency interupsi: waktu dari event sampai
ISR mulai (beberapa–puluhan siklus)

Program utama berjalan
otomatis
Event / permintaan interupsi (IRQ)
CPU menyelesaikan instruksi saat ini
oleh
Simpan konteks (PC, flag) ke stack
hardware
Lompat ke ISR lewat vektor interupsi
Jalankan ISR (singkat!)
Pulihkan konteks (RETI / return)
Program utama dilanjutkan
lanjut tepat di instruksi yang tertunda

Vektor interupsi dan prioritas

Slide 51: Vektor interupsi dan prioritas
Gambar: slide 51 dari materi PDF
Teks pada slide

Tabel vektor = daftar alamat ISR untuk tiap
sumber interupsi
Sumber: timer, GPIO eksternal, UART,
ADC, dll.
Prioritas: interupsi penting dapat menyela
ISR lain (nested)
Cortex-M: kontroler NVIC; angka prioritas
kecil = lebih tinggi
Bit enable (lokal + global) harus aktif agar
interupsi bekerja

Alamat Vektor (alamat ISR)
0x0000 Nilai awal SP
0x0004 Reset_Handler
0x0008 NMI_Handler kode ISR
di Flash
0x000C HardFault_Handler
void
... ... EXTI0_IRQ-
Handler(void)
{
0x003C SysTick_Handler
...
}
0x0040 IRQ0 (WWDG)
... ...
0x0058 EXTI0_IRQHandler
... ...
Prioritas Cortex-M: angka kecil = prioritas tinggi

Menulis ISR yang baik

Slide 52: Menulis ISR yang baik
Gambar: slide 52 dari materi PDF
Teks pada slide
volatile bool tombolDitekan = false; // volatile!
void ISR_tombol() { // ISR: singkat dan cepat
tombolDitekan = true; // hanya set flag
}
void setup() {
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2),
ISR_tombol, FALLING);
}
void loop() {
if (tombolDitekan) {
tombolDitekan = false;
// ... proses di sini (kerja berat)
}
}

volatile untuk variabel yang diubah di
ISR
ISR singkat: set flag atau isi buffer
Hindari delay(),
Serial.print(), dan perulangan
panjang di ISR
Variabel > 8 bit di AVR: lindungi saat
dibaca (atomic)

Pemicu interupsi eksternal

Slide 53: Pemicu interupsi eksternal
Gambar: slide 53 dari materi PDF
Teks pada slide

RISING: dipicu saat sinyal naik LOW →
HIGH
FALLING: dipicu saat turun HIGH → LOW
(tombol dengan pull-up)
CHANGE: dipicu pada setiap perubahan
LOW level: dipicu terus selama sinyal LOW
Tombol yang memantul bisa memicu ISR
berkali-kali → debounce

Sinyal
RISING
FALLING
CHANGE
LOW level (terpicu selama sinyal LOW)
Panah = saat interupsi dipicu

Timer / counter

Slide 54: Timer / counter
Gambar: slide 54 dari materi PDF
Teks pada slide

Timer = register penghitung yang
bertambah tiap detak clock
Prescaler memperlambat clock agar
hitungan lebih lama
Saat counter = nilai compare (OCR) → flag,
interupsi, atau toggle pin
Dipakai untuk: penundaan akurat, PWM,
ukur frekuensi, jam sistem
Timer berjalan paralel dengan CPU,
sehingga CPU bebas bekerja

Clock Prescaler Counter
16 MHz ÷ 64 (TCNT)
OCR Komparator
(nilai banding) TCNT = OCR ?
jika sama = compare match
Flag → Toggle Reset counter
interupsi ISR pin output (mode CTC)
Timer = penghitung yang berdetak dari clock;
saat mencapai nilai tertentu ia memicu aksi.

Menghitung periode timer

Slide 55: Menghitung periode timer
Gambar: slide 55 dari materi PDF
Teks pada slide

f = f / prescaler
timer clk
OCR = f / (prescaler × f ) − 1
clk target
Contoh: 16 MHz, prescaler 64 → 250 kHz (4
µs per hitungan)
Target 1 ms → OCR = 250 − 1 = 249
Pilih prescaler agar OCR muat di register (8
bit ≤ 255, 16 bit ≤ 65535)

TCNT
OCR
249
0
waktu
flag
T = 1 ms
f_timer = 16 MHz / 64 = 250 kHz → 1 hitungan = 4 µs
250 hitungan × 4 µs = 1 ms → OCR = 250 − 1 = 249
ISR dipanggil tiap 1 ms ("detak" sistem)

Mode operasi timer

ModeCara kerjaDipakai untuk
Normal (overflow)Counter naik sampai maksimum lalu overflowTick waktu sederhana, hitung overflow
CTC (Clear Timer on Compare)Counter di-reset saat sama dengan OCRPeriode tepat, jam sistem 1 ms
Fast / Phase-correct PWMDuty cycle diatur lewat OCRDimming LED, kontrol motor, servo
Input captureMenyimpan nilai counter saat ada tepi sinyalMengukur frekuensi atau lebar pulsa
Output compareMengubah pin otomatis saat compare matchGelombang kotak tanpa campur tangan CPU

Contoh: blink dengan timer interrupt

Slide 57: Contoh: blink dengan timer interrupt
Gambar: slide 57 dari materi PDF
Teks pada slide
// Timer1 mode CTC: interupsi tiap 1 detik (16 MHz)
volatile bool ledState = false;
void setup() {
pinMode(13, OUTPUT);
noInterrupts();
TCCR1A = 0;
TCCR1B = (1 << WGM12) | (1 << CS12); // CTC, prescaler 256
OCR1A = 62499; // 16e6 / 256 = 62500 Hz -> 1 detik
TIMSK1 = (1 << OCIE1A); // aktifkan compare-match interrupt
interrupts();
}
ISR(TIMER1_COMPA_vect) { // dipanggil tiap 1 detik
ledState = !ledState;
digitalWrite(13, ledState);
}
void loop() { /* CPU bebas mengerjakan tugas lain */ }
Hitungan: 16 MHz / 256 = 62.500 Hz → 62.500 hitungan = 1 s → OCR1A

= 62.500 − 1 = 62.499.

Rangkuman Pertemuan 5

  1. Interrupt membuat CPU merespons event segera tanpa polling.
  2. Alur: IRQ → simpan konteks → ISR lewat vektor → pulihkan konteks.
  3. ISR harus singkat; variabel yang dibagi dengan ISR dideklarasikan volatile.
  4. Timer menghitung detak clock; prescaler dan OCR menentukan periode: OCR = f_clk / (prescaler × f) − 1.
  5. Mode timer: normal, CTC, PWM, input capture.

Kata kunci: IRQ · ISR · NVIC · volatile · prescaler · OCR · CTC

Pertemuan 6: ADC, DAC, dan PWM

🎯 Tujuan Pembelajaran CPMK-2
  • Menjelaskan sampling, kuantisasi, dan resolusi ADC
  • Memakai PWM untuk LED, motor, dan servo
  • Menghubungkan sensor dan aktuator dengan driver yang tepat

Dunia analog dan dunia digital

Slide 60: Dunia analog dan dunia digital
Gambar: slide 60 dari materi PDF
Teks pada slide

Dunia analog
sampling +
kuantisasi
MCU
ADC (angka
digital)
0110 1010
sensor: suhu, cahaya,
suara, tekanan
MCU hanya memahami angka biner
ADC mengubah analog → digital; DAC

Dunia analog
DAC /
PWM
…
aktuator: kecerahan,
kecepatan, suara
→ perlu konversi di kedua arah
atau PWM mengubah digital → analog

Cara kerja ADC

Slide 61: Cara kerja ADC
Gambar: slide 61 dari materi PDF
Teks pada slide

Sampling: tegangan diukur pada selang
waktu tetap
Kuantisasi: nilai dibulatkan ke salah satu
n
dari 2 level
Pengkodean: level dinyatakan sebagai
bilangan biner n bit
Selisih nilai asli dan hasil = error kuantisasi
(≤ ½ LSB)
Contoh pada gambar: 3 bit = 8 level

tegangan
111
110
101
100
011
010
001
000
waktu
● sampel nilai asli ■ hasil kuantisasi (3 bit = 8 level)
Garis biru: sinyal analog asli

Resolusi dan rumus ADC

Slide 62: Resolusi dan rumus ADC
Gambar: slide 62 dari materi PDF
Teks pada slide

n
Resolusi: n bit → 2 level
n
LSB = V / 2
ref
Contoh: ADC 10 bit, V = 5 V → LSB = 5 / 1024
ref
n
Nilai digital = V / V × 2 (dibulatkan ke bawah)
in ref
Nyquist: laju sampling harus > 2 × frekuensi
Arduino Uno: 10 bit (0–1023); STM32 umumnya
CONTOH HITUNG
V_in = 2,5 V, V_ref = 5 V, 10 bit → nilai ≈ 2,5 / 5 × 1024 = 512

≈ 4,88 mV
tertinggi sinyal
12 bit (0–4095)

ADC jenis SAR (pencarian biner)

Slide 63: ADC jenis SAR (pencarian biner)
Gambar: slide 63 dari materi PDF
Teks pada slide

SAR (Successive Approximation) adalah
tipe ADC paling umum di MCU
Menebak bit dari MSB ke LSB,
dibandingkan dengan keluaran DAC internal
n bit → hanya n perbandingan per konversi
Waktu konversi ≈ puluhan µs (Arduino Uno
≈ 100 µs)
Jenis lain: flash (sangat cepat),
sigma-delta (resolusi tinggi, lambat)

Vin Register SAR
Komparator
(sample) (logika tebak biner)
DAC
Contoh: 4 bit, Vref = 5 V, Vin = 3,4 V
Langkah Tebakan V_DAC Vin ≥ V_DAC? Bit
1 1000 2,500 V Ya 1
2 1100 3,750 V Tidak 0
3 1010 3,125 V Ya 1
4 1011 3,438 V Tidak 0
Hanya 4 perbandingan untuk 4 bit (pencarian biner)
Hasil = 1010₂ = 10 → 3,125 V (1 LSB = 5/16 = 0,3125 V)

Membaca sensor analog

Slide 64: Membaca sensor analog
Gambar: slide 64 dari materi PDF
Teks pada slide

Banyak sensor mengubah besaran fisik
menjadi hambatan (LDR, termistor)
Pembagi tegangan mengubah hambatan
menjadi tegangan
V = V × R / (R + R )
out cc 2 1 2
Pilih R ≈ hambatan sensor pada titik kerja
1
tengah
Sensor lain langsung keluar tegangan:
LM35 (10 mV/°C), potensiometer

+5 V
R1 = 10 kΩ
pin ADC
Vout
LDR
= Vcc × R2 / (R1+R2)
(R2)
Terang: R2 ≈ 1 kΩ → Vout ≈ 0,45 V → ADC ≈ 93
Gelap: R2 ≈ 100 kΩ → Vout ≈ 4,55 V → ADC ≈ 930
(ADC 10 bit: nilai = Vout / 5 V × 1024)
Pembagi tegangan mengubah hambatan → tegangan

DAC: keluaran analog

Slide 65: DAC: keluaran analog
Gambar: slide 65 dari materi PDF
Teks pada slide

DAC mengubah kode digital menjadi
tegangan analog
n
V = V × kode / 2
out ref
R-2R ladder: hanya memakai dua nilai
resistor
Beberapa MCU punya DAC internal
(STM32, ESP32: 8 bit, 2 kanal)
Arduino Uno tidak punya DAC → pakai
PWM + filter RC

DAC tangga R-2R, 3 bit
Vout R R
2R 2R 2R 2R
B2 B1 B0
Vref / 0 V Vref / 0 V Vref / 0 V
Vout = Vref × (B2·4 + B1·2 + B0·1) / 8
Contoh: B2B1B0 = 101₂ = 5 → 5 V × 5/8 = 3,125 V
Hanya butuh dua nilai resistor (R dan 2R)

PWM: "analog" dari sinyal digital

Slide 66: PWM: "analog" dari sinyal digital
Gambar: slide 66 dari materi PDF
Teks pada slide

PWM (Pulse Width Modulation): sinyal kotak
dengan lebar pulsa yang diatur
Duty cycle = t / T × 100 %
ON
Tegangan rata-rata = duty × V
cc
Frekuensi tetap (≈ 490 Hz atau 980 Hz di
Arduino Uno); lebar pulsa yang diubah
analogWrite(pin, 0–255) → duty
0–100 %

periode T
25%
1,25 V
50% 2,5 V
3,75 V
75%
Garis oranye = tegangan rata-rata (Vcc = 5 V)
duty cycle = t_ON / T × 100%

Aplikasi PWM: LED, motor, dan servo

Slide 67: Aplikasi PWM: LED, motor, dan servo
Gambar: slide 67 dari materi PDF
Teks pada slide

Dimming LED: duty rendah = redup, tinggi
= terang
Kecepatan motor DC: duty menentukan
tegangan rata-rata
Servo hobi: periode 20 ms; lebar pulsa 1–2
ms menentukan sudut
Contoh: 1 ms ≈ 0°, 1,5 ms ≈ 90°, 2 ms ≈
180°
Pustaka Servo.h mengatur pewaktuan
secara otomatis

periode 20 ms (50 Hz)
1,0 ms
0°
1,5 ms
90°
2,0 ms
180°
Lebar pulsa menentukan sudut servo

Aktuator dan driver

Slide 68: Aktuator dan driver
Gambar: slide 68 dari materi PDF
Teks pada slide

Pin MCU lemah (≈ 20 mA): tidak boleh
langsung menggerakkan motor atau relay
Transistor / MOSFET berfungsi sebagai
saklar daya
Dioda flyback untuk beban induktif (motor,
relay, solenoid)
H-bridge (L298N, L293D, TB6612) untuk
membalik arah putar motor
Daya motor dari sumber terpisah; GND
harus disatukan

V motor
M dioda
flyback
C
B
D9 (PWM) 1 kΩ
MCU
E
Pin MCU hanya sanggup ± 20 mA, motor butuh 100–1000 mA
Transistor = saklar: arus kecil di basis mengatur arus besar
Dioda flyback meredam lonjakan tegangan saat motor dimatikan
Motor arah dua: gunakan H-bridge (L298N, L293D, TB6612)

Contoh: LDR mengatur kecerahan LED

Slide 69: Contoh: LDR mengatur kecerahan LED
Gambar: slide 69 dari materi PDF
Teks pada slide
const int LDR = A0; // sensor cahaya (pembagi tegangan)
const int LED = 9; // pin PWM
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
int cahaya = analogRead(LDR); // 0..1023
int duty = map(cahaya, 0, 1023, 0, 255); // gelap -> LED
analogWrite(LED, duty); // PWM 0..255
delay(20);
}

LDR ke GND, R tetap ke 5 V →
makin gelap, V makin naik
out
map() menskalakan 0–1023 ke
0–255
Hasilnya: lampu otomatis yang makin
terang saat gelap
terang
Rata-ratakan beberapa sampel untuk
mengurangi noise

Rangkuman Pertemuan 6

  1. ADC: sampling + kuantisasi; LSB = V_ref / 2^n.
  2. ADC SAR memakai pencarian biner: n perbandingan untuk n bit.
  3. Sensor resistif dibaca lewat pembagi tegangan.
  4. PWM: duty cycle mengatur tegangan rata-rata; servo memakai pulsa 1–2 ms per 20 ms.
  5. Beban besar butuh driver (transistor/MOSFET, H-bridge) dan dioda flyback.

Kata kunci: ADC · LSB · SAR · DAC · PWM · duty cycle · H-bridge

Pertemuan 7: Review dan Latihan Soal

🎯 Tujuan Pembelajaran CPMK-1 · 2
  • Merangkum konsep Pertemuan 1–6
  • Berlatih soal konsep dan hitungan
  • Mempersiapkan UTS

Peta konsep Pertemuan 1–6

Slide 72: Peta konsep Pertemuan 1–6
Gambar: slide 72 dari materi PDF
Teks pada slide

P1–P2 Dasar & arsitektur P3 Platform
definisi, ciri, contoh Arduino · ESP32 ·
MPU vs MCU, Harvard toolchain & flashing
register, memori program Blink
SISTEM
TERTANAM
P5 Interrupt & timer P6 Analog
polling vs interrupt ADC, resolusi, LSB
ISR, vektor, edge DAC & PWM
prescaler, OCR sensor, motor, servo
Gunakan peta ini untuk memeriksa bagian

P4 GPIO & C
STM32 input / output digital
pull-up, debounce
operasi bit register
P7 Review
rumus penting
latihan soal
persiapan UTS
mana yang sudah dan belum dikuasai

Contekan rumus dan angka penting

TopikRumus / faktaContoh
Resistor LEDR = (V − V ) / I s f(5 − 2) / 0,01 = 300 Ω
Frekuensi timerf = f / prescaler timer clk16 MHz / 64 = 250 kHz
Nilai OCROCR = f / (prescaler × f) − 1 clk16e6 / (64 × 1000) − 1 = 249
LSB ADCn V / 2 ref5 V / 1024 ≈ 4,88 mV
PWMduty = t / T; V = duty × V ON avg cc25 % × 5 V = 1,25 V
Pembagi teganganV = V · R / (R + R ) out cc 2 1 25 × 100k / 110k ≈ 4,55 V
Operasi bitset |= · clear &= ~ · toggle ^=PORTB |= (1 << 5)

Latihan soal 1: konsep dasar

Slide 74: Latihan soal 1: konsep dasar
Gambar: slide 74 dari materi PDF
Teks pada slide

Ciri yang paling membedakan sistem tertanam dari komputer
1
a. Memakai prosesor
b. Dirancang untuk fungsi khusus dengan sumber daya terbatas
c. Memiliki memori
d. Dapat terhubung ke internet
Pernyataan yang benar tentang mikrokontroler:
2
a. Hanya berisi CPU
b. Berisi CPU, memori, dan periferal dalam satu chip
c. Selalu menjalankan Linux
d. Tidak dapat diprogram ulang
Arsitektur Harvard dicirikan oleh...
3
a. Satu memori dan satu bus
b. Memori program dan data terpisah dengan bus terpisah
c. Tidak memakai register
d. Tidak memakai clock

serba guna adalah...

Latihan soal 2: arsitektur dan platform

Slide 75: Latihan soal 2: arsitektur dan platform
Gambar: slide 75 dari materi PDF
Teks pada slide

Register yang menyimpan alamat instruksi berikutnya
1
a. SP
b. PC
c. ALU
d. Flag
Urutan toolchain yang benar:
2
a. linker → compiler → assembler → flasher
b. compiler → assembler → linker → flasher
c. flasher → compiler → linker
d. assembler → flasher → compiler
Memori yang menyimpan firmware dan isinya tetap setelah
3
a. SRAM
b. Flash
c. Register CPU
d. Stack

adalah...
daya mati:

Latihan soal 3: GPIO, interrupt, timer

Slide 76: Latihan soal 3: GPIO, interrupt, timer
Gambar: slide 76 dari materi PDF
Teks pada slide

LED merah (V_f = 2 V) dihubungkan ke pin 3,3 V dengan
1
a. 130 Ω
b. 330 Ω
c. 1 kΩ
d. 13 Ω
Tombol dengan pull-up internal ke GND. Saat ditekan,
2
a. HIGH
b. LOW
c. Floating
d. Tidak terdefinisi
f_clk = 8 MHz, prescaler 8, target 1 ms (mode CTC). Nilai
3
a. 99
b. 999
c. 1000
d. 7999

arus 10 mA. Nilai R yang diperlukan ≈ ...
pin terbaca...
OCR = ...

Latihan soal 4: ADC dan PWM

Slide 77: Latihan soal 4: ADC dan PWM
Gambar: slide 77 dari materi PDF
Teks pada slide

ADC 12 bit dengan V_ref = 3,3 V memiliki 1 LSB ≈ ...
1
a. 0,81 mV
b. 3,3 mV
c. 8,05 mV
d. 1,61 mV
PWM dengan duty cycle 40 % pada tegangan 5 V menghasilkan
2
a. 1 V
b. 2 V
c. 3 V
d. 4 V
Mengapa motor tidak boleh langsung dihubungkan ke
3
a. Motor membutuhkan arus lebih besar daripada kemampuan
b. Pin MCU tidak punya tegangan
c. Motor hanya bekerja dengan AC
d. Pin MCU hanya untuk input

tegangan rata-rata...
pin MCU?
pin

Kunci jawaban dan pembahasan singkat

Slide 78: Kunci jawaban dan pembahasan singkat
Gambar: slide 78 dari materi PDF
Teks pada slide

Soal 1: 1-b · 2-b · 3-b
Soal 2: 1-b (PC) · 2-b (compiler → assembler
Soal 3: 1-a: R = (3,3 − 2) / 0,01 = 130 Ω · 2-b:
hitungan → OCR = 999
Soal 4: 1-a: 3,3 V / 4096 ≈ 0,81 mV · 2-b: 0,4 ×

→ linker → flasher) · 3-b (Flash)
aktif-LOW · 3-b: 8 MHz / 8 = 1 MHz → 1000
5 V = 2 V · 3-a

Pertemuan 8: Ujian Tengah Semester (UTS)

🎯 Tujuan Pembelajaran CPMK-1 · 2
  • Cakupan: Pertemuan 1–7
  • Konsep, hitungan, dan analisis kode singkat

Cakupan, format, dan tips UTS

Slide 80: Cakupan, format, dan tips UTS
Gambar: slide 80 dari materi PDF
Teks pada slide

Cakupan: Pertemuan 1–7 (dasar, arsitektur,
Format (sesuaikan dengan pengumuman dosen):
dan analisis kode singkat
Persiapan: ulangi latihan soal Pertemuan 7
Strategi: tulis satuan dengan jelas (Ω, mA, MHz)
Cek ulang: operasi bit, prescaler/OCR, dan
paling sering
Waktu, bobot, dan aturan ujian mengikuti pengumuman resmi dosen pengampu.

platform, GPIO, interrupt/timer, ADC/PWM)
pilihan ganda, isian singkat, hitungan,
dan contekan rumus (bila diizinkan)
pada setiap hitungan
resolusi ADC adalah sumber salah yang

Pertemuan 9: Komunikasi Serial: UART

🎯 Tujuan Pembelajaran CPMK-3
  • Membedakan komunikasi serial dan paralel
  • Menjelaskan format frame dan baud rate UART
  • Memakai Serial untuk komunikasi dan debugging

Serial vs paralel

Slide 82: Serial vs paralel
Gambar: slide 82 dari materi PDF
Teks pada slide

Paralel: banyak bit sekaligus
D0
D1
D2
D3
A B
D4
D5
D6
D7
8 kabel data + kontrol
→ cepat tetapi boros pin dan kabel
Serial memakai sedikit kabel, sehingga lebih praktis

Serial: bit satu per satu
arah data
1 0 1 1 0 0 1 0
A B
1–2 kabel data (+ GND)
→ hemat pin, jarak lebih jauh
untuk jarak yang lebih jauh dan menghemat pin

Pengkabelan UART

Slide 83: Pengkabelan UART
Gambar: slide 83 dari materi PDF
Teks pada slide

UART = Universal Asynchronous
Receiver/Transmitter
Dua jalur data: TX (kirim) dan RX (terima)
Sambungan silang: TX perangkat A ke RX
perangkat B, dan sebaliknya
GND harus disatukan
Asinkron: tidak ada jalur clock; kedua sisi
sepakat pada baud rate

Kabel disilang: TX milik A masuk ke RX milik B
MCU A MCU B
TX → RX
TX TX
RX RX
TX → RX
GND GND
GND bersama
Asinkron: tidak ada kabel clock
kedua sisi harus sepakat soal baud rate & format frame
tegangan logika harus sama (3,3 V atau 5 V)

Frame UART

Slide 84: Frame UART
Gambar: slide 84 dari materi PDF
Teks pada slide

Satu frame UART (contoh: karakter
idle START D0 D1 D2 D3 D4
8 bit data, LSB dikirim lebih
1 0 1 0 0 0 0
"A" = 0x41 = 0100 0001₂ →
Parity genap: jumlah bit 1 pada data
1 bit = 1 / baud = 104
Jalur diam = HIGH; start bit (LOW), 8 data

"A", 8E1)
D5 D6 D7 P STOP idle
dulu
0 1 0 0 1 1
urutan kirim: 1 0 0 0 0 0 1 0
= 2 (genap) → bit P = 0 (opsional)
µs pada 9600 baud
bit LSB lebih dulu, [parity], stop bit (HIGH)

Baud rate dan kecepatan transfer

Baud rateWaktu per bitByte per detik (8N1)
9.600104 µs≈ 960
57.60017,4 µs≈ 5.760
115.2008,68 µs≈ 11.520
1.000.0001 µs≈ 100.000

Format 8N1 = 8 data bit, tanpa parity, 1 stop bit → 10 bit per byte (1 start + 8 data + 1 stop). Throughput = baud / 10.

UART di Arduino: Serial

Slide 86: UART di Arduino: Serial
Gambar: slide 86 dari materi PDF
Teks pada slide
void setup() {
Serial.begin(9600); // baud rate harus sama di kedua
}
void loop() {
if (Serial.available() > 0) { // ada data masuk?
char c = Serial.read();
if (c == '1') digitalWrite(13, HIGH);
if (c == '0') digitalWrite(13, LOW);
Serial.print("Terima: ");
Serial.println(c);
}
}

Serial.begin() menetapkan baud
rate
sisi
Serial.available() jumlah byte
di buffer
Serial.read() mengambil 1 byte
Buffer terima Arduino 64 byte

UART untuk debugging

Slide 87: UART untuk debugging
Gambar: slide 87 dari materi PDF
Teks pada slide

Serial.print() = "printf" ala sistem
tertanam
Tampilkan nilai sensor, status, dan pesan
galat di Serial Monitor
Baud rate Serial Monitor harus sama
dengan program
Cetak berlebihan memperlambat program
dan membuat buffer penuh
Hapus atau nonaktifkan log pada firmware
produksi

TX · RX · GND
PC
USB-TTL USB
MCU CP2102 / CH340 Suhu: 27.5
FT232 Suhu: 27.6
Suhu: 27.4
Serial Monitor
Cara menguji komunikasi serial
Serial Monitor cetak nilai variabel, perintah dari PC
Logic analyzer lihat bit TX/RX & ukur baud rate
Loopback sambung TX ke RX, kirim, lalu baca kembali
Setelan umum 9600 / 115200 baud, 8N1

Level tegangan dan standar

StandarLevelCatatan
UART TTL0 V / 3,3 V atau 5 VLangsung antar-MCU atau ke modul (GPS, Bluetooth)
RS-232±3 s.d. ±15 V (logika terbalik)Butuh pengubah level (MAX232) bila ke MCU
RS-485Diferensial, 2 kabelJarak jauh (hingga ±1 km), banyak node, industri
USB-serialChip CH340/CP2102/FTDIMenghubungkan TTL ke USB PC

Jangan sambungkan RS-232 langsung ke pin MCU: tegangannya dapat merusak chip.

Rangkuman Pertemuan 9

  1. UART: serial asinkron dengan TX/RX dan GND bersama; baud rate harus cocok.
  2. Frame 8N1: start (LOW), 8 data bit LSB dulu, stop (HIGH) → 10 bit per byte.
  3. Throughput ≈ baud / 10 byte per detik.
  4. Serial di Arduino: begin, available, read, print.
  5. Waspadai level tegangan: TTL, RS-232, RS-485 tidak saling kompatibel langsung.

Kata kunci: UART · baud rate · frame · 8N1 · TX/RX · RS-232

Pertemuan 10: Komunikasi Serial: SPI dan I2C

🎯 Tujuan Pembelajaran CPMK-3
  • Menjelaskan SPI: 4 kabel, mode, dan pergeseran data
  • Menjelaskan I2C: alamat, start/stop, ACK
  • Memilih protokol yang tepat

SPI: pengkabelan

Slide 91: SPI: pengkabelan
Gambar: slide 91 dari materi PDF
Teks pada slide

SPI = Serial Peripheral Interface, sinkron,
full-duplex
Empat jalur: SCLK, MOSI, MISO, CS/SS
Satu master mengatur clock; slave dipilih
lewat CS (aktif-LOW)
Tiap slave tambahan = satu pin CS
tambahan
Kecepatan tinggi: beberapa hingga puluhan
MHz

SPI: 3 jalur bersama + 1 CS per slave
SCK
SCK
MOSI
Slave 1
MOSI MISO
MISO CS
CS0
MASTER SCK
CS1
(MCU) MOSI
Slave 2
MISO
CS2
CS
SCK
MOSI
Slave 3
MISO
CS
Hanya slave dengan CS = LOW yang menjawab

SPI: pewaktuan dan mode

Slide 92: SPI: pewaktuan dan mode
Gambar: slide 92 dari materi PDF
Teks pada slide

Data dikirim bersamaan dengan clock:
MOSI dan MISO
CPOL: level clock saat diam; CPHA: tepi
mana yang dipakai sampling
Empat mode SPI (0–3); master dan slave
harus memakai mode yang sama
Mode 0 (CPOL=0, CPHA=0) paling umum
CS diturunkan sebelum dan dinaikkan
sesudah transaksi

bit 7 6 5 4 3 2 1 0
CS
SCK
MOSI
MISO
Mode 0 (CPOL = 0, CPHA = 0): SCK idle LOW
data dibaca di tepi naik, diubah di tepi turun; MSB lebih dulu

SPI: register geser

Slide 93: SPI: register geser
Gambar: slide 93 dari materi PDF
Teks pada slide

Master dan slave punya register geser
yang tersambung melingkar
Setiap clock: satu bit keluar dari master dan
satu bit masuk
Setelah 8 clock, isi kedua register bertukar
Karenanya membaca dan menulis terjadi
sekaligus

Register geser MASTER
1 0 1 1 0 0 1 0
MSB LSB
MOSI
MISO
SCK × 8 pulsa
Register geser SLAVE
0 1 1 0 1 0 0 1
MSB LSB
Tiap pulsa SCK menggeser kedua register 1 bit
Setelah 8 pulsa, isi master dan slave sudah bertukar
= full-duplex: kirim dan terima bersamaan

SPI di Arduino

Slide 94: SPI di Arduino
Gambar: slide 94 dari materi PDF
Teks pada slide
#include <SPI.h>
const int CS = 10;
void setup() {
pinMode(CS, OUTPUT);
digitalWrite(CS, HIGH); // slave tidak dipilih
SPI.begin();
}
byte bacaRegister(byte alamat) {
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
digitalWrite(CS, LOW); // pilih slave
SPI.transfer(alamat | 0x80); // kirim alamat (bit 7
byte nilai = SPI.transfer(0x00); // clock-kan data keluar
digitalWrite(CS, HIGH);
SPI.endTransaction();
return nilai;
}

SPISettings: kecepatan, urutan
bit, mode
Konvensi bit-7 = baca bergantung
pada chip (lihat datasheet)
Contoh perangkat: SD card, display
TFT, ADC, IMU
= baca)

I2C: bus dua kabel

Slide 95: I2C: bus dua kabel
Gambar: slide 95 dari materi PDF
Teks pada slide

I2C = Inter-Integrated Circuit: sinkron,
half-duplex
Dua jalur: SDA (data) dan SCL (clock)
Banyak perangkat pada satu bus,
masing-masing punya alamat 7 bit
Jalur open-drain → perlu resistor pull-up
(≈ 4,7 kΩ)
Kecepatan standar: 100 kHz; Fast: 400 kHz

+VCC
Satu bus dipakai banyak perangkat
4,7 kΩ
Master Sensor OLED RTC
(MCU) 0x76 0x3C 0x68
SCL (clock)
SDA (data)
Open-drain: perangkat hanya menarik garis ke GND
resistor pull-up mengembalikannya ke HIGH
Tiap perangkat punya alamat 7 bit yang unik
Kecepatan umum: 100 kHz (standar), 400 kHz (fast)

I2C: kondisi START, STOP, dan sampling

Slide 96: I2C: kondisi START, STOP, dan sampling
Gambar: slide 96 dari materi PDF
Teks pada slide

START A6 A5 A4 A3 A2 A1
SCL
SDA turun
saat SCL HIGH
SDA
0 1 1 1 1 0
Alamat 0x3C (OLED) = 0111100₂ · slave menarik
Data hanya boleh berubah saat SCL
START = SDA turun saat SCL HIGH; STOP = SDA

A0 R/W ACK STOP
SDA naik
saat SCL HIGH
0 0 = W 0
SDA ke LOW pada bit ke-9 sebagai ACK
LOW; dibaca saat SCL HIGH
naik saat SCL HIGH; data stabil saat SCL HIGH

I2C: format frame

Slide 97: I2C: format frame
Gambar: slide 97 dari materi PDF
Teks pada slide

TULIS register sensor
S Alamat 7 bit + W A Alamat register A Data
BACA register sensor
S Alamat + W A Alamat reg A Sr Alamat +
dikirim master dikirim slave S = START · Sr = repeated START
START → alamat 7 bit + R/W → ACK

A P
R A Data NA P
· P = STOP · A = ACK · NA = NACK
→ data → ACK → … → STOP

I2C di Arduino: membaca sensor

Slide 98: I2C di Arduino: membaca sensor
Gambar: slide 98 dari materi PDF
Teks pada slide
#include <Wire.h>
const byte ALAMAT = 0x48; // contoh: sensor suhu TMP102
void setup() {
Wire.begin();
Serial.begin(9600);
}
void loop() {
Wire.beginTransmission(ALAMAT);
Wire.write(0x00); // pilih register
Wire.endTransmission();
Wire.requestFrom(ALAMAT, (byte)2); // minta 2 byte
if (Wire.available() == 2) {
int raw = (Wire.read() << 8) | Wire.read();
Serial.println(raw >> 4); // nilai mentah
}
delay(1000);
}

Alamat dan register: lihat datasheet
Wire = pustaka I2C Arduino
Pin Uno: SDA = A4, SCL = A5
Tak ada respons? Cek alamat (I2C
scanner) dan pull-up
suhu

UART vs SPI vs I2C

AspekUARTSPII2C
Jumlah kabel2 (TX, RX)4 + 1 per slave2
ClockTidak ada (asinkron)Ya, dari masterYa, dari master
Kecepatan umum≤ 1 MbpsHingga puluhan Mbps100 / 400 kbps (hingga MHz)
Jumlah perangkat1 lawan 1Banyak (CS terpisah)Banyak (alamat, ≈ 100+)
DuplexFullFullHalf
Cocok untukModul GPS, debug, BluetoothSD card, layar, memori flashSensor, RTC, EEPROM

Rangkuman Pertemuan 10

  1. SPI: SCLK/MOSI/MISO/CS, cepat, full-duplex; setiap slave butuh pin CS sendiri.
  2. Mode SPI ditentukan CPOL dan CPHA; harus sama di master dan slave.
  3. I2C: SDA/SCL, alamat 7 bit, open-drain dengan pull-up, START/STOP/ACK.
  4. Pilih protokol berdasarkan kecepatan, jumlah kabel/pin, dan jumlah perangkat.

Kata kunci: SPI · CPOL/CPHA · I2C · alamat · ACK · pull-up

Pertemuan 11: Real-Time dan Pengantar RTOS

🎯 Tujuan Pembelajaran CPMK-4
  • Menjelaskan sistem real-time, deadline, latency, dan jitter
  • Membandingkan super loop, foreground/background, dan RTOS
  • Menjelaskan alasan memakai RTOS

Apa itu sistem real-time?

Slide 102: Apa itu sistem real-time?
Gambar: slide 102 dari materi PDF
Teks pada slide

Kebenaran hasil bergantung pada nilai dan
waktu keluarannya
Real-time ≠ cepat: yang penting adalah
dapat diprediksi (deterministik)
Deadline: batas waktu respons yang harus
dipenuhi
Hasil benar tetapi terlambat dapat sama
buruknya dengan hasil salah

Real-time = benar secara logika DAN tepat waktu
nilai
HARD
lewat deadline = kegagalan fatal
airbag, rem ABS, pacu jantung
deadline waktu
nilai
FIRM
hasil terlambat tak berguna,
sistem tetap jalan
pemrosesan frame kamera industri
deadline waktu
nilai
SOFT
kualitas menurun bertahap jika
terlambat
streaming video, UI layar sentuh
deadline waktu

Latency dan jitter

Slide 103: Latency dan jitter
Gambar: slide 103 dari materi PDF
Teks pada slide

Respons terhadap event
event mulai
berespons
latency waktu eksekusi (WCET)
Tugas periodik dan jitter
periode T
ideal
aktual
Latency: jeda dari event sampai respons. Jitter: variasi

DEADLINE
selesai
slack
jitter = selisih waktu
aktual terhadap ideal
latency dari satu kejadian ke kejadian lain

Hard, firm, dan soft real-time

JenisAkibat melewatkan deadlineContoh
HardKegagalan fatal / bahaya keselamatanAirbag, rem ABS, pacu jantung, kontrol penerbangan
FirmHasil tidak berguna, tetapi sistem tetap amanInspeksi kamera di lini produksi
SoftKualitas menurun secara bertahapPemutar video/audio, antarmuka layar sentuh

Arsitektur 1: super loop

Slide 105: Arsitektur 1: super loop
Gambar: slide 105 dari materi PDF
Teks pada slide

Semua tugas dipanggil berurutan dalam
satu while(1)
Sederhana, murah, tanpa OS
Waktu respons = jumlah waktu semua
tugas → sulit diprediksi
delay() atau tugas lambat menghambat
semuanya
Cocok untuk sistem kecil dengan sedikit
tugas

Baca sensor
Tampilkan data while(1) Proses / logika
"super loop"
Update output
Kelemahan:
satu langkah lambat (mis. delay(500)) menunda semua langkah lain
waktu respons = lama satu putaran loop penuh

Arsitektur 2: foreground/background

Slide 106: Arsitektur 2: foreground/background
Gambar: slide 106 dari materi PDF
Teks pada slide

Background: super loop untuk pekerjaan
biasa
Foreground: ISR menangani event kritis
segera
Respons kritis cepat; tetapi tugas
background masih tidak terjamin waktunya
ISR dan loop berbagi data lewat flag/buffer
(volatile)

Foreground / background
ISR
ISR ISR ISR
(foreground)
main loop
tugas A tugas B tugas C ...
(background)
waktu
ISR: respons cepat terhadap event (interupsi)
ISR hanya mengisi flag / buffer; kerja berat di main loop
Lebih responsif daripada super loop biasa,
tetapi main loop tetap tanpa prioritas & penjadwal

Arsitektur 3: RTOS

Slide 107: Arsitektur 3: RTOS
Gambar: slide 107 dari materi PDF
Teks pada slide

RTOS (Real-Time Operating System)
membagi pekerjaan menjadi beberapa task
Scheduler memilih task berdasarkan
prioritas secara deterministik
Kode lebih modular; menambah fitur tak
merusak pewaktuan tugas lain
Harga: memori (RAM/Flash) dan sedikit
overhead CPU
Layanan: task, antrean, semaphore, mutex,
timer

Arsitektur sistem berbasis RTOS
Task 1 Task 2 Task 3
baca sensor komunikasi tampilan
KERNEL RTOS
Penjadwal Tick timer
(scheduler) & delay
Antrean, semaphore, Manajemen
mutex (IPC) memori
PERANGKAT KERAS
SysTick
CPU Interupsi Periferal
timer

RTOS yang umum dipakai

RTOSCiriDipakai pada
FreeRTOSSumber terbuka, kecil, sangat luas dipakaiESP32, STM32, banyak MCU; bagian dari AWS
ZephyrModular, dukungan perangkat luas, terbukaIoT dan perangkat bertenaga baterai
ThreadX / Azure RTOSTerbukti, waktu sangat deterministikPerangkat industri dan medis
RTX / CMSIS-RTOSAPI standar untuk Cortex-MProyek ARM Cortex-M

Praktikum memakai FreeRTOS karena tersedia di ESP32 dan STM32.

Rangkuman Pertemuan 11

  1. Sistem real-time: kebenaran ditentukan oleh nilai dan waktu; yang dituntut adalah kepastian.
  2. Hard, firm, soft ditentukan oleh akibat deadline terlewat.
  3. Latency = jeda respons; jitter = variasi latency.
  4. Arsitektur: super loop → foreground/background → RTOS.
  5. RTOS memberi struktur multitugas yang dapat diprediksi dengan biaya memori.

Kata kunci: real-time · deadline · latency · jitter · super loop · RTOS

Pertemuan 12: RTOS: Task dan Scheduling

🎯 Tujuan Pembelajaran CPMK-4
  • Menjelaskan task, TCB, dan status task
  • Menjelaskan context switch dan algoritma scheduling
  • Membuat task dengan FreeRTOS

Task dan TCB

Slide 111: Task dan TCB
Gambar: slide 111 dari materi PDF
Teks pada slide

Task = potongan program yang berjalan
seolah-olah sendirian, biasanya berupa
fungsi dengan while(1)
Tiap task punya stack sendiri dan prioritas
TCB (Task Control Block): data pengelola —
status, prioritas, SP tersimpan
Scheduler memilih task mana yang
memakai CPU

Daftar task (TCB) Stack di SRAM
Task Status Prio
T1 Running 3
T2 Ready 2
T3 Blocked 1
TCB = Task Control Block:
nama, status, prioritas,
stack pointer, ...
Stack Stack Stack
T1 T2 T3
Tiap task punya stack sendiri untuk variabel lokal
dan menyimpan register saat context switch

Status task

Slide 112: Status task
Gambar: slide 112 dari materi PDF
Teks pada slide

Running: sedang dieksekusi CPU (hanya
satu pada MCU 1-inti)
Ready: siap, menunggu giliran CPU
Blocked: menunggu event (delay,
semaphore, queue)
Suspended: dihentikan sementara secara
eksplisit
Task yang menunggu sebaiknya Blocked,
bukan sibuk-looping

Siklus hidup sebuah task
dijadwalkan
Ready Running
preempt / yield
menunggu
suspend resume delay, queue,
semaphore
event / timeout
Suspended Blocked
Hanya SATU task Running pada CPU 1 inti;
task Blocked tidak memakai waktu CPU

Context switch

Slide 113: Context switch
Gambar: slide 113 dari materi PDF
Teks pada slide

Berpindah dari task A ke B: simpan register
A, muat register B
Disimpan di stack tiap task (SP tersimpan di
TCB)
Dipicu oleh tick timer atau event (mis.
semaphore diberikan)
Punya overhead (mikrodetik); terlalu sering
→ boros

Stack Task A Stack Task B
scheduler memilih B
2
1
simpan
PC CPU PC
(register) 3
LR LR
muat
R4–R11 R4–R11
R0–R3 R0–R3
Context switch: simpan konteks task lama,
muat konteks task baru (butuh puluhan–ratusan siklus)

Preemptive priority scheduling

Slide 114: Preemptive priority scheduling
Gambar: slide 114 dari materi PDF
Teks pada slide

Penjadwal preemptive berbasis prioritas: task
Tinggi (3)
rilis
Sedang (2) Sedang
rilis
Rendah (1) Rendah
rilis
0 1 2 3 4 5
Task berprioritas lebih tinggi langsung menyela

prioritas lebih tinggi langsung merebut CPU
Tinggi
siap Sedang
siap (ditunda) Rendah
6 7 8 9 10 11 waktu
(preempt) task yang lebih rendah begitu siap

Round-robin dan time slicing

Slide 115: Round-robin dan time slicing
Gambar: slide 115 dari materi PDF
Teks pada slide

Task berprioritas sama bergiliran,
masing-masing mendapat time slice
Satu slice biasanya = satu atau beberapa
tick (mis. 1 ms)
Adil, tetapi tidak memberi jaminan waktu
antarprioritas berbeda
FreeRTOS: aktifkan dengan
configUSE_TIME_SLICING

time slice
Task A A A A A
Task B B B B B
Task C C C C C
0 2 4 6 8 10 12 tick
Prioritas sama: bergiliran tiap tick (mis. 1 ms)

FreeRTOS: dua task

Slide 116: FreeRTOS: dua task
Gambar: slide 116 dari materi PDF
Teks pada slide
#include <Arduino_FreeRTOS.h>
void TaskBlink(void *pv) {
pinMode(13, OUTPUT);
for (;;) { // task tidak boleh return
digitalWrite(13, !digitalRead(13));
vTaskDelay(pdMS_TO_TICKS(500)); // Blocked 500 ms
}
}
void TaskSerial(void *pv) {
for (;;) {
Serial.println("hidup");
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
void setup() {
Serial.begin(9600);
xTaskCreate(TaskBlink, "Blink", 128, NULL, 1, NULL);
xTaskCreate(TaskSerial, "Serial", 128, NULL, 2, NULL);
// scheduler dijalankan otomatis (Arduino) / vTaskStartScheduler()
}
void loop() {}

xTaskCreate(fungsi, nama,
stack, param, prioritas,
handle)
Angka prioritas besar = lebih tinggi
(FreeRTOS)
vTaskDelay membuat task
Blocked, tidak membuang CPU

Ukuran stack

Slide 117: Ukuran stack
Gambar: slide 117 dari materi PDF
Teks pada slide

Setiap task butuh stack untuk variabel lokal,
alamat balik, dan konteks
Terlalu kecil → stack overflow (data rusak,
crash)
Terlalu besar → memboroskan RAM yang
terbatas
Ukur memakai
uxTaskGetStackHighWaterMark()
Hindari array besar di variabel lokal task

Pemakaian stack tiap task (256 word)
meluap!
100%
85%
35%
T1 T2 T3
Garis putus-putus = high-water mark (pemakaian puncak)

Algoritma scheduling

AlgoritmaPrinsipCatatan
Fixed-priority preemptivePrioritas tertinggi yang siap selalu berjalanPaling umum di RTOS (FreeRTOS, Zephyr)
Round-robinGiliran dengan time sliceSering dipadu dengan prioritas
Rate Monotonic (RMS)Periode lebih pendek → prioritas lebih tinggiPrioritas statis; batas utilisasi CPU ≈ 69 % (untuk n besar)
Earliest Deadline FirstDeadline terdekat diutamakanDinamis; utilisasi hingga 100 %

Rangkuman Pertemuan 12

  1. Task = unit eksekusi dengan stack dan prioritas; TCB menyimpan datanya.
  2. Status: Running, Ready, Blocked, Suspended.
  3. Context switch menyimpan/memuat konteks CPU; scheduler mengatur siapa jalan.
  4. Preemptive priority adalah yang paling umum; round-robin untuk prioritas sama.
  5. vTaskDelay membuat task Blocked; sediakan stack secukupnya.

Kata kunci: task · TCB · scheduler · preemption · context switch · stack

Pertemuan 13: RTOS: Semaphore, Mutex, dan Queue

🎯 Tujuan Pembelajaran CPMK-4
  • Menjelaskan race condition dan critical section
  • Memakai semaphore, mutex, dan queue
  • Mengenali dan mengatasi priority inversion

Race condition dan critical section

Slide 121: Race condition dan critical section
Gambar: slide 121 dari materi PDF
Teks pada slide

Dua task mengakses data bersama tanpa
pengaturan → hasil bergantung pada urutan
eksekusi
Contoh: counter++ bukan operasi atom
(baca–ubah–tulis)
Critical section: bagian kode yang hanya
boleh dijalankan satu pihak sekaligus
Solusi: mutex, semaphore, atau
menonaktifkan interupsi sebentar

Dua task menaikkan variabel bersama: counter = 5
Task A Task B
LOAD R ← counter
1
(R = 5)
LOAD R ← counter
2
(R = 5)
R = R + 1 → 6
3
STORE counter = 6
R = R + 1 → 6 4
STORE counter = 6 5
Hasil: counter = 6, seharusnya 7!
satu pembaruan hilang akibat interleaving (race condition)

Binary semaphore

Slide 122: Binary semaphore
Gambar: slide 122 dari materi PDF
Teks pada slide

Bernilai 0 atau 1: sinyal antar-task atau dari
ISR ke task
xSemaphoreGive() memberi sinyal;
xSemaphoreTake() menunggu (Blocked)
Pola umum: ISR → semaphore → task
pemroses (deferred interrupt handling)
ISR memakai versi ...FromISR()

Task pemroses ISR / event
Take(sem)
BLOCKED
(menunggu) event terjadi!
Give(sem)
sinyal
READY → RUNNING
Semaphore biner = bendera sinyal
proses event
ISR singkat, kerja berat di task

Counting semaphore

Slide 123: Counting semaphore
Gambar: slide 123 dari materi PDF
Teks pada slide

Menghitung sumber daya atau event yang
tersedia
Give menambah, Take mengurangi; Take
saat 0 → Blocked
Contoh: kolam 3 buffer, atau menghitung
event yang cepat

Semaphore penghitung (jumlah sumber daya = 3)
count = 3
R1 R2 R3
Task A Take → dapat R1
Task B Take → dapat R2
Task C Take → dapat R3
Task D Take → BLOCKED
Give → count naik; Task D yang menunggu pun lanjut

Mutex melindungi sumber daya

Slide 124: Mutex melindungi sumber daya
Gambar: slide 124 dari materi PDF
Teks pada slide
SemaphoreHandle_t mutexSerial;
void tulis(const char *pesan) {
if (xSemaphoreTake(mutexSerial, pdMS_TO_TICKS(100)) == pdTRUE)
Serial.println(pesan); // critical section
xSemaphoreGive(mutexSerial); // selalu dikembalikan
}
}
void setup() {
mutexSerial = xSemaphoreCreateMutex();
// ... buat task yang memanggil tulis()
}

Mutex = semaphore dengan
kepemilikan: yang Take harus yang
Give
{
Dipakai untuk mutual exclusion
Selalu pasangkan Take dengan Give
Beri timeout, jangan menunggu
selamanya

Priority inversion

Slide 125: Priority inversion
Gambar: slide 125 dari materi PDF
Teks pada slide

Inversi prioritas: Tinggi terhambat
Rendah memegang mutex (garis ungu), tetapi
Tinggi blocked:
rilis
Sedang Sedang
rilis
Rendah siap (kalah dari
rilis mutex dipegang Rendah
0 1 2 3 4 5
Task H (tinggi) menunggu L yang memegang mutex, tetapi

oleh Sedang
Sedang menyela Rendah
menunggu mutex Tinggi
Sedang)
6 7 8 9 10 11 waktu
L disela M (menengah) → H tertunda tak terbatas

Solusi: priority inheritance

Slide 126: Solusi: priority inheritance
Gambar: slide 126 dari materi PDF
Teks pada slide

Priority inheritance: Rendah "meminjam"
Rendah segera selesai dan melepas mutex,
Tinggi blocked
rilis
Sedang siap
rilis
Rendah prio naik
rilis
0 1 2 3 4 5
L dinaikkan sementara ke prioritas H selama memegang

prioritas Tinggi
Tinggi hanya menunggu singkat
Tinggi
Sedang
6 7 8 9 10 11 waktu
mutex, sehingga M tidak dapat menyela

Queue: pertukaran data antar-task

Slide 127: Queue: pertukaran data antar-task
Gambar: slide 127 dari materi PDF
Teks pada slide

Queue = antrean FIFO berukuran tetap
yang aman antar-task
xQueueSend() dan xQueueReceive()
(Blocked bila kosong/penuh)
Menyalin data (by copy) → pengirim bebas
memakai variabelnya lagi
Pola producer–consumer: task sensor
mengirim, task tampilan menerima

Antrean (queue) FIFO
Task Sensor Task Display
(producer) ISR (event) (consumer)
buffer 5 slot
21.5 21.7 22.0
Receive
Send
Queue penuh Queue kosong
pengirim BLOCKED penerima BLOCKED
sampai ada ruang sampai ada data
Data disalin ke queue: aman tanpa variabel global
komunikasi antar-task & dari ISR

Queue: sensor → tampilan

Slide 128: Queue: sensor → tampilan
Gambar: slide 128 dari materi PDF
Teks pada slide
QueueHandle_t antreanSuhu;
void TaskSensor(void *pv) {
for (;;) {
int suhu = analogRead(A0);
xQueueSend(antreanSuhu, &suhu, portMAX_DELAY);
vTaskDelay(pdMS_TO_TICKS(200));
}
}
void TaskTampil(void *pv) {
int nilai;
for (;;) {
if (xQueueReceive(antreanSuhu, &nilai, portMAX_DELAY) == pdTRUE)
Serial.println(nilai);
}
}
void setup() {
Serial.begin(9600);
antreanSuhu = xQueueCreate(8, sizeof(int)); // 8 elemen
xTaskCreate(TaskSensor, "Sensor", 128, NULL, 2, NULL);
xTaskCreate(TaskTampil, "Tampil", 128, NULL, 1, NULL);
}
void loop() {}
Hindari variabel global bersama tanpa pelindung; antrean memberi sinkronisasi

dan transfer data sekaligus.

Rangkuman Pertemuan 13

  1. Race condition terjadi saat data bersama diakses tanpa perlindungan.
  2. Binary semaphore: sinyal; counting semaphore: hitung sumber daya; mutex: mutual exclusion dengan kepemilikan.
  3. Priority inversion diatasi dengan priority inheritance.
  4. Queue memindahkan data antar-task dengan aman (producer–consumer).

Kata kunci: race condition · semaphore · mutex · priority inversion · queue

Pertemuan 14: Manajemen Daya, Keandalan, dan Debugging

🎯 Tujuan Pembelajaran CPMK-4 · 5
  • Menerapkan teknik hemat daya
  • Memakai watchdog dan desain catu daya yang andal
  • Menggunakan alat dan metode debugging

Manajemen daya

Slide 131: Manajemen daya
Gambar: slide 131 dari materi PDF
Teks pada slide

Daya dinamis ≈ C·V²·f: turunkan clock dan
tegangan
Mode tidur (sleep/deep sleep): CPU
berhenti, bangun lewat interupsi atau timer
Matikan periferal dan pin yang tidak dipakai
Kerjakan cepat lalu tidur (race to sleep)
Daya tidur dapat ≈ 1000× lebih kecil
daripada saat aktif

Arus tipikal tiap mode (skala log)
Aktif + radio
Aktif (CPU)
Idle / sleep
Deep sleep
Hibernasi
1 µA 10 µA 100 µA 1 mA 10 mA 100 mA
Contoh orde besaran — nilai nyata tergantung chip
Selisih deep sleep vs aktif bisa ribuan kali lipat

Duty cycle dan umur baterai

Slide 132: Duty cycle dan umur baterai
Gambar: slide 132 dari materi PDF
Teks pada slide

Rata-rata arus = (I × t + I × t )
aktif aktif tidur tidur
/ T
Contoh: 20 mA aktif 10 ms per 1 s, 10 µA
tidur → rata-rata ≈ 0,21 mA
Umur baterai ≈ kapasitas / arus rata-rata
(2000 mAh / 0,21 mA ≈ 9.500 jam ≈ 13
bulan)
Perhitungan teoretis: nyata lebih pendek
(self-discharge, regulator)

arus
T = 10 s
100 ms
20 mA
10 µA
waktu
I_rata-rata = (I_aktif·t_aktif + I_sleep·t_sleep) / T
= (20 mA × 0,1 s + 0,01 mA × 9,9 s) / 10 s
≈ 0,21 mA
Umur baterai = kapasitas / I_rata-rata
2000 mAh / 0,21 mA ≈ 9500 jam ≈ 400 hari
Tidur lebih lama → baterai jauh lebih awet

Watchdog timer

Slide 133: Watchdog timer
Gambar: slide 133 dari materi PDF
Teks pada slide

Watchdog = timer yang me-reset MCU bila
tidak "diberi makan" tepat waktu
Program yang sehat memanggil
wdt_reset() secara berkala
Jika program hang/loop tak berujung →
reset otomatis
Atur timeout lebih panjang dari siklus
terpanjang program
Jangan memberi makan watchdog dari ISR
saja (menutupi hang)

Normal: program "menendang" (kick) watchdog
timeout
Gangguan: program hang → tidak ada kick
RESET!
program hang
Counter watchdog berjalan terus; program sehat menyetelnya ulang

Catu daya yang stabil

Slide 134: Catu daya yang stabil
Gambar: slide 134 dari materi PDF
Teks pada slide

Lonjakan arus menyebabkan noise pada
VCC → reset acak
Kapasitor decoupling 100 nF dekat setiap
pin VCC chip
Tambahkan kapasitor besar (10–100 µF) di
jalur catu
Brown-out detector mereset MCU saat
tegangan terlalu rendah
Gunakan jalur GND yang pendek dan lebar

Kapasitor decoupling di dekat pin daya
+3,3 V
VDD
10 µF 100 nF
MCU
(bulk) (dekat pin)
GND
GND
Kapasitor menyediakan arus sesaat saat MCU berpindah-pindah
sehingga tegangan tidak "goyang" (noise, reset tak terduga)
Letakkan 100 nF sedekat mungkin dengan setiap pasang VDD–GND
Tambahkan kapasitor bulk 10 µF di dekat regulator

Teknik debugging

Slide 135: Teknik debugging
Gambar: slide 135 dari materi PDF
Teks pada slide

Serial print / LED: cepat, tetapi mengubah
pewaktuan
Debugger SWD/JTAG: breakpoint, step,
lihat register dan memori
Logic analyzer dan osiloskop: amati sinyal
UART/SPI/I2C
Multimeter: cek tegangan dan kontinuitas
Strategi: reproduksi → isolasi → hipotesis →
uji satu perubahan setiap kali

Alat debugging: dari sederhana ke lengkap
1 LED / toggle GPIO tanda "kode sampai sini"
2 printf / Serial cetak nilai variabel ke PC
3 Logic analyzer lihat bit digital: UART, SPI, I2C
4 Osiloskop bentuk gelombang analog, noise, timing
5 Debugger SWD/JTAG breakpoint, step, baca register & memori
makin lengkap = makin banyak detail (dan biasanya makin mahal)

Model V: verifikasi dan validasi

Slide 136: Model V: verifikasi dan validasi
Gambar: slide 136 dari materi PDF
Teks pada slide

Sisi kiri: kebutuhan → arsitektur → desain
modul → kode
Sisi kanan: uji unit → uji integrasi → uji
sistem → uji penerimaan
Setiap tahap desain punya tahap uji
pasangannya
Verifikasi: dibangun dengan benar?
Validasi: membangun hal yang benar?

Model-V: tiap tahap desain punya pengujian
Kebutuhan Uji penerimaan
Desain sistem Uji sistem
Desain modul Uji integrasi
Implementasi Uji unit
Kiri: dari kebutuhan ke kode · Kanan: verifikasi balik
garis putus-putus: tahap yang saling memverifikasi

Siklus pengembangan sistem tertanam

Slide 137: Siklus pengembangan sistem tertanam
Gambar: slide 137 dari materi PDF
Teks pada slide

Siklus pengembangan
1 Kebutuhan 2 Spesifikasi 3 Desain
apa yang harus daya, waktu, pilih MCU,
dilakukan? biaya, antarmuka arsitektur HW/SW
umpan balik: temuan pengujian kembali ke desain / implementasi
Pemeliharaan: perbaikan bug, pembaruan fitur,
Iteratif: spesifikasi → desain → implementasi →

sistem tertanam
4 Implementasi 5 Pengujian 6 Rilis / OTA
rangkaian + unit, integrasi, produksi &
firmware sistem update firmware
dan keamanan sepanjang umur produk
uji → perbaiki; dokumentasikan di setiap tahap

Rangkuman Pertemuan 14

  1. Hemat daya: turunkan clock, matikan periferal, gunakan mode tidur, dan duty cycle rendah.
  2. Watchdog memulihkan sistem yang hang; decoupling dan brown-out menjaga kestabilan catu.
  3. Debugging sistematis: serial, debugger, logic analyzer, osiloskop.
  4. Model V menghubungkan setiap tahap desain dengan tahap pengujiannya.

Kata kunci: sleep · watchdog · decoupling · debugger · model V

Pertemuan 15: Presentasi Proyek Akhir

🎯 Tujuan Pembelajaran CPMK-5
  • Merancang prototipe sistem tertanam berkelompok
  • Mempresentasikan desain, hasil uji, dan analisis

Contoh ide proyek

Slide 140: Contoh ide proyek
Gambar: slide 140 dari materi PDF
Teks pada slide

Stasiun cuaca mini Penyiram tanaman
BME280 (suhu, kelembapan, tekanan) sensor kelembapan tanah
OLED + kirim data lewat Wi-Fi pompa mini + relay +
Menggabungkan: GPIO · timer · ADC/PWM · I2C/UART Menggabungkan: GPIO · timer
Parkir pintar Robot line follower
sensor ultrasonik per slot sensor IR + driver motor
lampu hijau/merah + penghitung kontrol PWM (opsional
Menggabungkan: GPIO · timer · ADC/PWM · I2C/UART Menggabungkan: GPIO · timer
Pilih ide yang memakai minimal: sensor, aktuator,

otomatis Alarm keamanan pintu
sensor magnet / PIR
timer buzzer + notifikasi
· ADC/PWM · I2C/UART Menggabungkan: GPIO · timer · ADC/PWM · I2C/UART
Pengontrol suhu ruangan
sensor suhu + kipas/heater
PID) histeresis atau PID, layar LCD
· ADC/PWM · I2C/UART Menggabungkan: GPIO · timer · ADC/PWM · I2C/UART
komunikasi serial, dan (opsional) RTOS

Arsitektur proyek contoh

Slide 141: Arsitektur proyek contoh
Gambar: slide 141 dari materi PDF
Teks pada slide

Contoh arsitektur: node
ESP32 + FreeRTOS
MASUKAN
BME280
(I2C)
Task Sensor Task
(1 detik) (OLED)
LDR
(ADC)
Tombol
Queue data sensor · Mutex
(interrupt)
deep sleep di antara
Daya: baterai Li-ion + regulator
Tunjukkan blok perangkat keras, tugas

pemantau lingkungan
KELUARAN
OLED
(I2C)
Display Task Komunikasi
(Wi-Fi / MQTT)
Wi-Fi → MQTT
Dashboard
layar · Watchdog LED status
pengukuran
3,3 V + kapasitor decoupling
perangkat lunak, dan aliran data

Rubrik penilaian proyek (usulan)

KomponenBobotIndikator
Desain & arsitektur25 %Diagram blok, skematik, alasan pemilihan komponen
Implementasi30 %Fungsi berjalan; memakai GPIO/ADC/timer/komunikasi/RTOS
Pengujian & analisis20 %Data uji, pengukuran, penanganan galat
Presentasi & demo15 %Alur jelas, demo langsung, tanya jawab
Dokumentasi & kerja tim10 %Laporan, kode terkomentari, pembagian tugas

Rubrik dapat diubah sesuai ketentuan dosen pengampu.

Struktur presentasi (10–15 menit)

Slide 143: Struktur presentasi (10–15 menit)
Gambar: slide 143 dari materi PDF
Teks pada slide

Masalah & tujuan proyek
Desain: diagram blok, skematik, pemilihan komponen
Implementasi: diagram alir/task, potongan kode
Hasil uji: tabel/grafik, bukti pengukuran
Demo langsung dan kendala yang dihadapi
Kesimpulan serta pengembangan lanjutan

kunci

Daftar periksa sebelum demo

Slide 144: Daftar periksa sebelum demo
Gambar: slide 144 dari materi PDF
Teks pada slide

Catu daya cadangan dan kabel sudah dicoba
Firmware final sudah di-flash dan dicadangkan
Rangkaian rapi, diberi label, tidak ada kabel
Skenario demo dilatih; siapkan video cadangan
Setiap anggota paham seluruh sistem
Kode tersimpan di repositori (Git) dengan README

longgar
singkat

Pertemuan 16: Ujian Akhir Semester (UAS)

🎯 Tujuan Pembelajaran CPMK-3 · 4 · 5
  • Cakupan: terutama Pertemuan 9–15
  • Konsep, hitungan, dan analisis kode

Peta jalan setelah mata kuliah ini

Slide 146: Peta jalan setelah mata kuliah ini
Gambar: slide 146 dari materi PDF
Teks pada slide

Jalur belajar lanjutan
Nirkabel
DMA & daya rendah
Dasar (kuliah ini)
BLE, Wi-Fi, LoRa,
MQTT, protokol IoT
transfer data tanpa CPU,
mode sleep, energi
GPIO, interrupt, timer,
ADC/PWM, UART/SPI/I2C,
RTOS dasar
Lanjutkan ke IoT, kontrol, robotika,

Edge AI / FPGA
Keamanan & OTA
Embedded Linux
TinyML, akselerator,
desain hardware
secure boot, enkripsi,
update firmware jarak jauh
Raspberry Pi, Yocto,
device driver
FPGA/SoC, atau embedded Linux

Cakupan dan persiapan UAS

Slide 147: Cakupan dan persiapan UAS
Gambar: slide 147 dari materi PDF
Teks pada slide

Cakupan: UART, SPI, I2C, real-time, RTOS
daya, watchdog, debugging, proyek
Latihan: hitung baud/throughput, gambar frame
Kode: baca potongan FreeRTOS dan temukan
Konsep: bandingkan UART/SPI/I2C; super loop
Tips: tulis satuan, gambar diagram waktu bila
Waktu, bobot, dan aturan ujian mengikuti pengumuman resmi dosen pengampu.

(task, scheduling, semaphore, mutex, queue),
UART/I2C, analisis priority inversion
kesalahan (mis. lupa Give, stack kecil)
vs RTOS; hard vs soft real-time
membantu

Glosarium singkat

IstilahArti
ADC / DACPengubah analog→digital / digital→analog
GPIOPin masukan/keluaran serbaguna
ISRRutin layanan interupsi
PWMModulasi lebar pulsa; mengatur daya rata-rata
UART / SPI / I2CProtokol komunikasi serial: asinkron / 4 kabel sinkron / 2 kabel beralamat
RTOSSistem operasi real-time: task, scheduler, sinkronisasi
MutexPenguncian dengan kepemilikan untuk critical section
WatchdogTimer pemulih yang mereset sistem yang macet
FirmwarePerangkat lunak yang tersimpan di memori MCU

Daftar pustaka (usulan)

Slide 149: Daftar pustaka (usulan)
Gambar: slide 149 dari materi PDF
Teks pada slide

Wolf, W. Computers as Components: Principles
Morgan Kaufmann.
Barr, M. & Massa, A. Programming Embedded
Valvano, J. Embedded Systems: Real-Time
Barry, R. Mastering the FreeRTOS Real Time
Datasheet ATmega328P, ESP32, STM32; dokumentasi
Periksa edisi terbaru dan ketersediaan di perpustakaan kampus; sesuaikan

of Embedded Computing System Design.
Systems. O'Reilly.
Interfacing to ARM Cortex-M Microcontrollers.
Kernel (freertos.org).
Arduino (arduino.cc).
dengan daftar pustaka pada RPS.

Definisi istilah

Disimpan di browser ini. Klik istilah yang ditandai untuk mengubah atau menghapus penjelasan.