TUGAS UTS
SISTEM EMBEDDED
PENERAPAN RTOS AVRILOS PADA PENJADWALAN PENYALAAN LED
Oleh :
1. AgusApriantoro 1110121003 2. Dodik Romanto 1110121008
DosenPengampu :
Akhmad Hendriawan, S.T., M.T.
PROGRAM STUDI DIPLOMA 4
TEKNIK ELEKTRONIKA
DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
1
BAB I
PENDAHULUAN
A. TUJUAN
Dengan melakukan pengerjaan project berupa “PENERAPAN RTOS AVRILOS PADA PENJADWALAN PENYALAAN LED” menggunakan AVRILOS, mahasiswa diharapkan mampu:
1. Memahami prinsip kerja secara mendasar dari sebuah system dengan RTOS
2. Menjalankan dan memahami System berbasis RTOS yang telah dikembangkan oleh pihak lain pada AVR
3. Mengerti struktur dan jenis penjadwalan serta fungsi-fungsi pada RTOS yg dipilih 4. Mengaplikasikan pada berupa penjadwalan penyalaan LED.
B. LANDASANTEORI
Dalam proses pengerjaan project ini, berikut adalah beberapa teori penunjang yang penulis gunakan :
1. RTOS
RTOS atau kepanjangan dari Real-Time Operating System merupakan sebuah sistem operasi real-time yang dimaksudkan untuk melayani data real-time proses aplikasi, biasanya tanpa penundaan buffering. Persyaratan waktu pemrosesan (termasuk keterlambatan OS) diukur dalam sepersepuluh detik atau lebih pendek.
Karakteristik utama dari sebuah RTOS adalah tingkat konsistensi mengenai jumlah waktu yang dibutuhkan untuk menerima dan menyelesaikan tugas sebuah aplikasi; variabilitas adalah jitter. Sebuah sistem operasi real-time keras memiliki jitter kurang dari sistem operasi lembut real-time. Tujuan utama desain tidak throughput yang tinggi, melainkan jaminan dari kategori kinerja lembut atau keras. RTOS yang biasanya atau umumnya dapat memenuhi tenggang waktu adalah lembut real-time OS, tetapi jika dapat memenuhi tenggat waktu deterministik itu adalah real-time OS keras.
RTOS memiliki algoritma yang canggih untuk penjadwalan. Fleksibilitas scheduler memungkinkan lebih luas, komputer-sistem orkestrasi prioritas proses, tapi real-time OS lebih sering didedikasikan untuk satu set sempit aplikasi. Faktor utama dalam real-time OS adalah latency interrupt minimal dan minimal switching thread latency; real-time OS bernilai lebih untuk seberapa cepat atau seberapa diduga dapat merespon daripada jumlah pekerjaan itu dapat melakukan dalam jangka waktu tertentu.
Algoritma yang umum digunakan pada RTOS adalah: Cooperative scheduling
2 Fixed priority pre-emptive scheduling, an implementation of preemptive time slicing
Fixed-Priority Scheduling with Deferred Preemption Fixed-Priority Non-preemptive Scheduling
Critical section preemptive scheduling Static time scheduling
Earliest Deadline First approach
Stochastic digraphs with multi-threaded graph traversal 2. AVRILOS
Sistem Embedded sederhana Operating System Framework yang memungkinkan pesatnya perkembangan membangun aplikasi untuk keluarga AVR tetapi dapat porting ke arsitektur lain cukup mudah. Sistem multitasking Round-Robin Co-operative.
Mendukung:
a. UART, SysTick Timer, ADC, SPI, EEPROM, PWM.
b. Juga mendukung: Xilinx FPGA konfigurasi, antarmuka FPGA SSI, smart card reader dll
c. Diuji secara parsial (modul yang berbeda dalam setiap kasus) pada ATMega163 / 16/32/323/8.
d. Selain itu dapat digunakan mengkonversi bitstream FPGA ke C table disediakan.
3 a. Struktur direktori
Ada dua bagian utama dari direktori, yaitu Hardware (HW) dan Software(SW)
[1] Direktori hardware berisi tentang hardware yang direkomendasikan oleh pembuat, baik skematik dan PCB file, kemudian juga dengan penerapan AVRILOS pada FPGA
[2] Direktori software terdiri dari direktori penyusun terkait chip yang digunakan. Beberapa direktori pendukung lainnya yang mempunyai tujian khusus yaitu
i. build.dep ii. build.err iii. build.obj iv. build.lst
v. build.rom
Direktori root pada makefile.
Direktori Config (direktori pendukung makefile, konfigurasi harware, dan perihtah compiler), dan direktori Source code yang berisi
i. Applic, merupakan file utama yang berisi Kernel.c yang berisi progam penjadwalan.
ii. peripheint, Periperial internal dari microcontroller, seperti Timer, Uart.
iii. perpheext, Periperial eksternal dari luar mikrokontroller berupa smartcard, LPC flash, dan peralatan SPI.
4 v. debug, digunakan untuk memonitor proses debug, sehingga
debugging menjadi lebih mudah, fitur ini dapat dimatikan agar penggunaan memori menjadi hemat.
vi. include, berisi global definition dan pengaturan device yang akan terhubung dengan OS ini.
Deskripsi kernel
Kernel.c kode inisialisasi dan loop utama. Selama maka startup Kernel mengeksekusi berbagai inisialisasi setiap modul / periperial . Progam inisialisasi di bagi menjadi bagian bagian tertentu sehingga progam menjadi modular dan mudah untuk di modifikasi.
Scheduler menggunakan penjadwalan round-robin. Setiap cek tugas harus dipicu dari beberapa flag seperti timer SysTick (Dalam periphint / Timer0.c) :
Cek untuk melihat bahwa timer interrupt telah ditandai b_SysTick (Bit) di v_SysStat(Variable), jika tidak ada hanya keluar. Jika ya menjalankan semua fungsi yang ada. Kasus lain akan menguji apakah ada data baru dalam port serial (sepertiapplic / serial / SerApp.c) atau tidak.
Jadi untuk membuat tugas baru (aplikasi, perangkat dll) taks baru tidak harus memblokir sistem atau menunggu terlalu lama. Khususnya pelaksanaan penundaan semua fungsi tidak boleh melebihi waktu SysTick. Jika tidak ada alternatif:, antara meningkatkan interval Systick atau mengurangi pemblokiran waktu.
Deskipsi modul
Ada beberapa modul, yaitu Systick, UART, Debugger dan module yang lain, namun yang akan dibahas hanya modul Systick.
5 Sesuai definisi aktivasi bit dinyatakan dalam meliputi / settings.h:
Waktu tick dapat dirubah sesuai kebutuhan, sedangkan jika menginkan Timer lain dapat menambahkan hingga 4 timrt yaitu
Satuan dalam mS, contoh 10mS
Timer diatas mempuyai waktu 10mS , untuk mengecek apakah sudah 10mS menggunakan intruksi
A. PERALATAN
Pada prosses pengerjaan project ini, penulis menggunkan beberapa alat dan bahan sebagai berikut:
1. Minimum System Atmel ATMega 16 2. I/O LED dan Tombol
3. Power Supply 4. Downloader USB 5. PC dengan software 6. Command Promp
B. RANGKAIAN MIKROKONTROLER
Dari prosses kajian pustaka yang telah dilakukan, Chip yang digunakan dengan dasar
penugasan. Berikut adalah gambar observasi ini:
Gambar
BAB II
PEMBAHASAN
Pada prosses pengerjaan project ini, penulis menggunkan beberapa alat dan bahan sebagai berikut:
Minimum System Atmel ATMega 16 dan Tombol
Power Supply
USB-sASP
PC dengan software text editor (Sublime, Notepad++, Notepad) Command Promp
RANGKAIAN MIKROKONTROLER
Dari prosses kajian pustaka yang telah dilakukan, maka dilakukukan pemilihan Chip yang digunakan dengan dasar minimum requirementdan spesifikasi/syarat
. Berikut adalah gambar skematik dan Hardware yang digunakan untuk
Gambar 2.1 Skematik Hardware ATMega16
6 Pada prosses pengerjaan project ini, penulis menggunkan beberapa alat dan
text editor (Sublime, Notepad++, Notepad)
Gambar 2.4 Hardware ATMEGA 16 (tampak atas)
Gambar 2.5 Hardware ATMEGA 16 (tampak samping) Gambar 2.2 PCB Hardware ATMega16
Gambar 2.3 Extend Board I/O 3 LED
Gambar 2.4 Hardware ATMEGA 16 (tampak atas)
Gambar 2.5 Hardware ATMEGA 16 (tampak samping)
7 Gambar 2.4 Hardware ATMEGA 16 (tampak atas)
8 C. PEMROGAMAN
Persoalan yaitu
Menyalakan LED 1 setiap 1 detik, mati 1 detik Menyalakan LED 2 setiap 2 detik, mati 2 detik Jika Tombol ditekan LED 3 menyala 4 detik 1. Melakukan pemilihan chip pada direktori
\config\hw.in
#put the name of the target mcu here (at90s8515, at90s8535, attiny22, atmega603 etc.)
# MCU = at90s8515
2. Melakukan harware untuk jalur pemrogaman menggunakan USB ASP \config\env.in
###### define some variables based on the AVR base path in $(AVR) #######
AVRCC = avr-gcc
AVRAS = avr-gcc -x assembler-with-cpp
RM = rm -f AVRPROG = avreal32.exe AVRPROGSP = avrdude.exe PROGPORT = COM3 PROGDEV = usbasp
###### output format can be srec, ihex (avrobj is always created) ####### FORMAT = ihex
####################### default compiler flags ########################## CPFLAGS = -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)
$(CDEFS)
####################### default assembler flags ######################### ASFLAGS = -Wa,-gstabs
########################## default linker flags ######################### LDFLAGS = -Wl,-Map=$(TRG).map,--cref
3. Inisialisai I/0 dan Sytick yang akan diguanakan pada \src\applic\apllic.c
#define LED1 PA3
#define LED2 PA4 #define LED3 PA5 #define TOMBOL1 PB1
9 #define LED1toogle PORTA^=(1<<LED1)
#define LED2On PORTA&=~(1<<LED2) #define LED2toogle PORTA^=(1<<LED2) #define LED3On PORTA&=~(1<<LED3) #define LED3Off PORTA|=(1<<LED3)
#define LAMATICK 200;
#define c_MYLEDTIMER_ID 0 /* Could be any SW timer up to (c_MAXSWTIMERS-1), defined in src/includes/ifc_time.h */ // Application Inititialization called before Kernel main loop void f_Init_Applic(void)
{
// initialize I/O (Your function/code) DDRA=0xff;
PORTA=0xff; DDRB=0x00; PORTB=0xff;
// Set SW Timer to your delay (500ms)
v_SwTimer_mS[c_MYLEDTIMER_ID] = LAMATICK;
// LED Off (Your function/code) }
Progam untuk penjadewalan penyalaan LED 1 dan 2
// Function called by the main kernel loop (task) // Should not block
// This process runs on every Application Tick // Use this for timed event handling
unsigned char hitung=0, hitung2=0,flagBTombol1=0; void f_Applic_Tick(void)
{
// Timer Expired? // Aktif setelah 1 detik
10 LED2toogle;
hitung=0; }
if(hitung2==1) {
LED3Off;
flagBTombol1=0; }
}
Progam untuk penyalaan LED 3 dengan tombol 1
// Function called by the main kernel loop (task) // Should not block
// This process runs continuously on the main loop // Use this if you need no wait time on each run void f_Applic_Cont(void)
{
if (!(PINB&(1<<TOMBOL1))) {
if(flagBTombol1==0) {
hitung2=5; flagBTombol1=1; }
}
11 Untuk download progam menggunakan command promt yaitu sebagai berikut:
1. Masuk direktory dari makefile
2. Ketik make list untuk melihat instruksi yang ada
3. Ketik make clean untuk membersihkan file last build
12 4. Ketik make all untuk mengcompile
13
BAB III
PENUTUP
A. Analisa
Dari seluruh rangkaian proses pada project ini penulismendapatkanbeberapa analisa diantaranya adalahsebagai berikut:
1. RTOS atau kepanjangan dari Real-Time Operating System merupakan sebuah sistem operasi real-timeyang dimaksudkan untuk melayani data real-time proses aplikasi, biasanya tanpa penundaan buffering. System RTOS juga dapat dijalankan pada Mikrokontroller keluarga Cortex maupun AVR dengan prinsip kerja seperti interrupt timer. Program ditulis dan dijalankan dalam dalam masing-masing threads yang diberi nama oleh programmer yang seolah-olah seluruh thread tersebut bekerja secara bersaaman namun sebenarnya bergantian atau seperti mengeksekusi program secara melompat-lompat antar threads dengan waktu yang sangat cepat.
2. AVRILOS merupakan jenis RTOS yang sangat sederhana yang cara kerjanya mudah untuk dipahami, sehingga ATmega 16 dengan memory yang sedikit sudah dapat digunakan untuk menjalankan RTOS ini.
3. Pada penjadwan penyalaan LED tidak menggunakan progam blocking sehingga seolah olah progam berjalan secara pararel
4. Pada penekanan tombol di gunakan taks sendiri yang sudah disediakan oleh AVRILOS
B. Kesimpulan
Dari seluruh rangkain prosses pada project ini, penulis menarik beberapa kesimpulan diantaranya adalah sebagai berikut:
1. System RTOS juga dapat bekerja pada mikrokontroller keluarga AT Mega
2. Prinsip kerja RTOS adalah seakan-akan seluruh taks/threads bekerja secara bersamaan namun sebenarnya bergantian antar taks dengan waktu yang singkat
14 LAMPIRAN 1
1. Script progam pada\src\applic\apllic.c
/***************************************************************************
Project: AVRILOS
Title: Example Lock Application Author: Ilias Alexopoulos
Version: 2.10
Last updated: 05-Nov-2011
Target: AT90S8535/ATMEGA
File: applic.c
* Support E-mail: * avrilos@ilialex.gr *
* license: See license.txt on root directory (CDDL) *
*
* V2.00, 28-Oct-2010, Initial published version
* V2.10, 05-Nov-2011, Split main calls to two functions, one run on every application tick,
* The other runs continously. This provides
flexibility on how we need
* To control things for specific applications.
* DESCRIPTION
* Empty Demo Application
***************************************************************************/
#define LED1On PORTA&=~(1<<LED1) #define LED1toogle PORTA^=(1<<LED1) #define LED2On PORTA&=~(1<<LED2) #define LED2toogle PORTA^=(1<<LED2) #define LED3On PORTA&=~(1<<LED3) #define LED3Off PORTA|=(1<<LED3) #define LAMATICK 200;
#define c_MYLEDTIMER_ID 0 /* Could be any SW timer up to (c_MAXSWTIMERS-1), defined in src/includes/ifc_time.h */
// Application Inititialization called before Kernel main loop void f_Init_Applic(void)
{
// initialize I/O (Your function/code) DDRA=0xff;
PORTA=0xff; DDRB=0x00; PORTB=0xff;
// Set SW Timer to your delay (500ms)
15 // LED Off (Your function/code)
}
// Function called by the main kernel loop (task) // Should not block
// This process runs on every Application Tick // Use this for timed event handling
unsigned char hitung=0, hitung2=0,flagBTombol1=0; void f_Applic_Tick(void)
{
// Timer Expired? // Aktif setelah 1 detik
if (v_SwTimer_mS[c_MYLEDTIMER_ID] == 0 ) {
// Function called by the main kernel loop (task) // Should not block
// This process runs continuously on the main loop // Use this if you need no wait time on each run void f_Applic_Cont(void)
{
16 DAFTAR PUSTAKA
[1] http://sourceforge.net/projects/avrilos/ diakses pada 1 Desember 2015
[2] http://avrilos.sourceforge.net/ diakses pada 1 Desember 2015