Anda di halaman 1dari 7

CONTOH SOAL UAS PBM JUNI 2016

SOAL 1. Interrupt.
a. Berikan penjelasan ringkas tentang interupsi termasuk istilah yang
biasa digunakan, yaitu Interrupt Request, Interrupt Vector,
Interrupt Service Routine dan Interrupt Enable.
IRQ = Interrupt Request, pemicu interupsi
IV = Interrupt Vector, pengarah interupsi ke ISR
ISR = Interrupt Service Routine, kumpulan instruksi untuk melayani
interupsi.
IE = Interrupt Enable, untuk mengaktifkan interupsi.
IP = Interrupt Priority, utk menentukan, siapa yg prioritasnya
lebih utama.

b. Sebutkan 3 dari 26 interupsi yang disediakan ATmega328, berikan


keterangan ringkas.
Timer/Counter 2 Compare Match A
Timer/Counter 2 Compare Match B
Timer/Counter 2 Overflow

c. Tuliskan beberapa instruksi untuk enable dan setting interrupt


Timer1 Compare Match B, pada Arduino Sketch IDE.
TCCR1A = 0;TCCR1B = 0;
TCCR1A = (1<<WGM11);
TCCR1B = (1<<CS10);
TIMSK1 = (1<<OCIE1B);
sei();

d. Tuliskan contoh setting dan penulisan Interrupt Service Routine


untuk menguabah variable yg nilainya berkisar 5 sampai 95 dan
menuliskan ke LCD, setiap Timer2 Compare Match B.

Setting :
TCCR2A = 0;TCCR2B = 0;
TCCR2A = (1<<WGM21);
TCCR2B = (1<<CS20);
TIMSK2 = (1<<OCIE2B);
sei();
ISR :
ISR(TIMER2_COMPB_vect) {
angka += 5; if(angka>95) angka=5;
lcd.setCursor(0, 0);
lcd.print(angka);
}

1
SOAL 2. Timer / Counter.
a. Sebutkan perbedaan utama antara Timer dan Counter serta
berikan masing-masing 1 contoh sederhana penggunaannya,
tidak harus elektronik.
Counter = angka berdetak. Timer = Counter yang berdetak teratur.
Contoh counter : Tasbeh, Pencacah di pintu boarding.
Contoh Timer : Jam dinding, stop watch, waker.
b. Sebutkan perbedaan utama antara Timer dan Counter dalam
ATmega328.
Timer berdetak karena internal clock (= frekuansi kristal).
Counter berdetak karena external clock via pin T0, pin nomor 4
pada Arduino atau T1, pin nomor 5 pada Arduino.
c. Sebutkan 3 Timer/Counter dalam Atmega328 serta beberapa
register yang terkait erat dengan setting dan operasinya.
TCNT0, TCCR0A, TCCR0B, OCR0A, OCR0B, TIMSK0,
TCNT1, TCCR1A, TCCR1B, OCR1A, OCR1B, TIMSK1,
TCNT2, TCCR2A, TCCR2B, OCR2A, OCR2B, TIMSK2,
d. Tuliskan beberapa instruksi untuk setting TCNT1 berdetak
sebagai Timer dengan prescaler 64.
TCCR1B |= (1<<CS11) | (1<<CS10);
e. Tuliskan beberapa instruksi untuk menghasilkan sinyal periodik
dari pin 8, dengan duty cycle 40% dan periode 3.2 ms.
void setup() {
TCCR2A=0;TCCR2B=0;
TCCR2A |= (1<<WGM21);
TCCR2B |= (1<<CS22) |(1<<CS22);
TIMSK2 |= (1<<OCIE2A);
fase=1;OCR2A=80;
sei();}
ISR(TIMER2_COMPA_vect){
switch (fase) {case 1: fase = 2; OCR2A = 120;
digitalWrite(8, LOW); break;
case 2: fase = 1; OCR2A = 80;
digitalWrite(8, HIGH); break; }}

2
SOAL 3. Aplikasi Interrupt Timer.
a. Gambarkan sketsa rangkaian pengukur kecepatan angular yang
terdiri dari Arduino Uno, sensor rotary encoder dan LCD.

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3

4
GND 5
6

7
8
9
10
11
12
13
14
RS

D4
D5
D6
D7
E
11 ENA

5 enc
13 RS

10 D5
9 D4

6 D7

4 D6
12 E

3
2
1
0
+5v +24V
PB5/SCK

PB0/ICP1/CLKO

PD4/T0/XCK
AREF

TX PD1/TXD
RX PD0/RXD
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A

PD7/AIN1
~ PD6/AIN0
PD5/T1

~ PD3/INT1
PD2/INT0
PB4/MISO

U3
~

9 4
DIGITAL (~PWM)
5
IN1 VCC VS +88.8
7 2
IN2 OUT1
10
IN3
12 3
IN4 OUT2
ATMEGA328P-PU
ENA 6
1121
ENA
11 13
ENB OUT3
1 14
SENSA OUT4 enc
microcontrolandos.blogspot.com 15
PC4/ADC4/SDA

SENSB GND
PC5/ADC5/SCL

ANALOG IN
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3

R1 8 L298
RESET

10R
A0
A1
A2
A3
A4
A5

b. Tentukan Time Window (T) dan jumlah pulsa tiap putaran (N)
agar alat ukur tsb memiliki resolusi 5 rpm.
n = (60.P)/(T.N)
Agar (n = 5P) untuk resolusi 5 rpm, maka T.N = 12
Jika T = 80 ms, maka N = 150
c. Tuliskan kalkulasi sederhana untuk menggunakan TCNT0 sebagai
penghasil Time Window yang ditentukan pada soal 3b.
Agar diperoleh T = 80 ms, maka prescaler = 1024,
kristal 16 MHz, jumlah detak = OCR0A = 250.
T = 5 slot x 250 x 1024 x 1/16Mega = 5 x 250 x 64µs = 80 ms.
d. Tuliskan Interrupt Service Routine untuk mengukur kecepatan
angular dan menampilkannya secara berkala pada LCD.
ISR(TIMER0_COMPA_vect){
slot += 1;
if(slot == 25) TCNT1=0;
if(slot == 30) {
TIMSK0 &= ~(1<<OCIE0A); // disable timer 0A compare interrupt
velo = TCNT1;
velo = velo*5;
itoa(velo,tulisan,10); // convert int to decimal string
lcd.setCursor(4, 1); // fifth column second row
lcd.print(tulisan);
slot = 0;
TIMSK0 |= (1<<OCIE0A); // enable timer 0A compare interrupt
}}
e. Tuliskan contoh ISR untuk menghasilkan sinyal PWM,
menggunakan Timer/Counter 2.
ISR(TIMER2_COMPA_vect) {
switch (fase) {case 1: fase = 2; OCR2A = 200 - 2*PW;
digitalWrite(11, LOW); break;
case 2: fase = 1; OCR2A = 2*PW;
digitalWrite(11, HIGH); break; }}

3
LAMPIRAN
SETTING & USING PORT
PORTC = untuk set / reset pin, 1 = set atau 5 volt. Jika PORTC1 = 1 saat
DDRC1 = 0 atau input, berarti pull up resistor untuk pin ini aktif.
Jika Bit PUD=1 pada register SFIOR, maka seluruh bit pada seluruh port
akan disable pull up.
DDRC = untuk direction, 1 = output, 0=input
PINC = untuk baca pin, 1 = 5 volt, 0 = nol volt

ATmega328Timer Setting

OCIE = Output Compare Interrupt Enable,


TOIE = Timer Overflow Interrupt Enable.

4
5
6
SETTING & USING INTERRUPT

Anda mungkin juga menyukai