Posted by: daygoku02 | October 31, 2008

International Graduate Program University of Tokyo

The International Graduate Program for non-Japanese students was launched in 1999, offering advanced professional training leading to the degrees of Master of Engineering and Doctor of Engineering. Students will have the unique opportunity of taking a degree from the University of Tokyo with lectures and research conducted completely in English. Applicants who have exceptional academic records will be awarded Monbu-Kagakusho scholarship for the whole period of graduate program.

The program is formed by the following 6 departments out of 19 departments in the School of Engineering, the University of Tokyo.

Mechanical Engineering

Mechanical Engineering

Engineering Synthesis

Electrical Engineering and Information Systems

Electrical Engineering and Information Systems

Materials Engineering

Materials Engineering

Aeronautics and Astronautics

Aeronautics and Astronautics

Chemical System Engineering

Chemical System Engineering

for more information available on http://www.mem.t.u-tokyo.ac.jp/

Dany..

Posted by: daygoku02 | October 30, 2008

Konsep Harta

Taukah temen,,di jaman yang lagi edan ini banyak diantara kita (penulis juga) berusaha sekeras tenaga untuk mendapatkan harta yang melimpah,duit yang banyak..diakui ato tidak tanpa harta kita bagai mobil yang kehabisan bensin,,jujur dikatakan kita memang membutuhkan itu semua..salah besar jika ada sebagian orang yang mengatakan harta tidaklah begitu penting..dalam ajaran agama yang penulis yakini mengajarkan untuk kaya,bukan menjadi miskin..karna miskin dekat dengan kekufuran dan perlu temen tau tangan diatas lebih baik daripada tangan dibawah..

Persoalannya sekarang jika kita sudah mempunyai harta yang melimpah kita lupa sebenarnya harta itu dari siapa dan mesti dibelanjakan kemana, kita menganggap itu semua hasil kerja keras kita dan itu mutlak menjadi milik kita..kita belanjakan ya semau kita,harta-harta gua ya semau gua dong …

Teman salah besar jika bermindset seperti diatas, kita perlu ingat bahwa harta yang kita miliki sekarang itu benarkah merupakan harta kita?atau harta milik orang lain yang dititipkan kepada kita?berbahagialah orang yang menganggap harta yang dimiliki sekarang merupakan titipan dan sewaktu-waktu akan diambil oleh sang pemilik harta tersebut…jika kita berfikir harta itu mutlak milik kita,,kita akan stress dan jadi gila jika sewaktu-waktu harta tersebut meninggalkan kita..banyak kasus yang terjadi dimasyarakat gara-gara hal seperti itu…

So guys..kita wajib mencari harta sebanyak-banyaknya tapi jangan lupa bahwa itu hanya sebuah titipan…jika diambil oleh pemiliknya ya diberikan dong,namanya juga titipan..contoh real adalah jika ada pengemis datang ke kita,sebenarnya ia ingin mengampil hartanya yang dititipkan ke kita…ingat tangan diatas lebih baik dari pada tangan dibawah…

Dany

Posted by: daygoku02 | October 30, 2008

FTP upload dengan delphi

Bagi temen2 yang suka jaringan tentunya sudah paham apa itu FTP..kita disini tidak membahas apa itu FTP tapi akan kita bahas bagaimana membuat program FTP upload dengan delphi..dan perlu diketahui banyak program upload FTP misalnya WinSCP2..tapi apa salahnya kalo kita buat sendiri…nah langsung saja..yang perlu sipersipakan adalah komponen delphi untuk koneksi ke FTP..komponen ini disebut Ftp2Activex yang dapat didownload gratis di http://www.example-code.com…setelah diinstall ke delphi maka akan muncul pada tab activeX seperti gambar berikut …

nah..kemudian kita bikin formnya..sedehana saja,seperti gambar beriku ini..tulis listing dibawah ini,saat tombol BitBtn1 di clik..

procedure TForm1.Button1Click(Sender: TObject);
var
ftp: TChilkatFtp2;
success: Integer;
localFilename: String;
remoteFilename: String;

begin
ftp := TChilkatFtp2.Create(Self);

//  Any string unlocks the component for the 1st 30-days.
success := ftp.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(ftp.LastErrorText);

  end;

ftp.Hostname := 'aegis'; //Server
ftp.Username := '****';
ftp.Password := '****';

//  The default data transfer mode is "Active" as opposed to "Passive".

//  Connect and login to the FTP server.
success := ftp.Connect();
if (success <> 1) then
  begin
    ShowMessage(ftp.LastErrorText);

  end;

//  Change to the remote directory where the file will be uploaded.
success := ftp.ChangeRemoteDir('/public_html'); //directori dimana file akan di upload
if (success <> 1) then
  begin
    ShowMessage(ftp.LastErrorText);

  end;

//  Upload a file.
localFilename := 'F:\project\WebcamDelphi\foto.gif';
remoteFilename := 'foto.gif';

success := ftp.PutFile(localFilename,remoteFilename);
if (success <> 1) then
  begin
    ShowMessage(ftp.LastErrorText);

  end;

ftp.Disconnect();

ShowMessage('File Uploaded!');
end;

Pada program diatas server yang digunakan adalah aegis, folder penyimpanan di
public_html dan file yang disimpan bernama foto.gif

Jika file sukses di upload akan muncul pesan seperti gambar dibawah
Semua sourcaode tadi ada di http://www.example-code.com...cuman ada perubahan di server
 dan direktori penyimpanan beseta file yang disimpan...
OK...have a nice day :) 

Dany ....Belajar dan terus belajar...
Posted by: daygoku02 | October 30, 2008

Master and Doctoral Course on Osaka University

Application form

A Master’s & Doctoral Course for Foreign Students Sponsored by Japanese Government Scholarship

Application for enrollment in October 2009

Master’s and Doctoral Courses for Non-Sponsored Students

Application for enrollment in April or October 2009

What is the “Engineering Science 21st Century” ?…

The objectives and missions:

The Graduate School of Engineering Science, Osaka University aims to acquire a good international reputation through increased involvement in the exchange of students and/or researchers and in joint research projects.

For this objective, the Graduate School of Engineering Science has decided to offer a new interdisciplinary course of “Engineering Science 21st Century” in which all the lectures, as well as all the instructions and supervision in research-related activities and seminars, are taught in English, so that the students are not required to learn Japanese to join this course. In the course, globally recognized and highly qualified graduates are expected to be educated under the guiding principle of the Graduate School of Engineering Science, which Strives to Integrate Science and Technology.

For any matters concerning admission, please contact to the Graduates Section below by e-mail. In this case, you would be advised to write titles of emails, Application form for Master’s / Doctoral course, so that we cannot accidentally delete your e-mails.

Graduates Section

Graduate School of Engineering Science, Osaka University
1-3, Machikaneyama, Toyonaka, Osaka 560-8531 JAPAN

Fax: +81-6-6850-6151
Tel: +81-6-6850-6146
E-mail address: KISOKOU-D@star.jim.osaka-u.ac.jp

Posted by: daygoku02 | October 30, 2008

PC Camera : Video Capture Delphi

Sistem pangawasan ato monitoring objek visual seperti pengawasan ruangan, pengawasan lalu lintas akan lebih interaktif jika bisa melihat langsung objek yang diamati. Pada tulisan kali akan dibahas bagaimana membuat sistem monitoring dengan delphi. sistem monitoring tentunya tak lepas dari kamera, kali ini menggunakan PC Camera buatan itech..untuk komponen delphi yang bisa mengcapture gambar dari webcam digunakan DSPCK 2.3.4. Komponen ini bisa didownload di www.progdigy.com..dalam project ini menggunakan delphi7. setelah komponen di install akan muncul gambar sepeti dibawah..

Komponen yang diperlukan adalah Filter, FilterGraph, SampleGrabber, VideoWindow.adapaun form yang akan dibuat dapat dilihat pada gambar dibawah…

Listing program untuk mendeteksi adanya koneksi dengan webcam sebagai berikut:

apabila terdapat koneksi, maka akan ditampilkan di combobox1.nah langkah berikutnya adalah menampilkan video ke videowindow,,adapun programnya sebagai berikut..

nah setelah semuanya selesai..execute program dengan menekan F9..dan klik item yang ada di combobox1 akan muncullah video seperti dibawah ini..

untuk melakukan camputer gambar,digunakan fasilitas timer…dalam project ini caputer dilakukan setiap 5 secon…listing untuk caputure adalah sebagai berikut..

nah dah jadi projectnya….gampang kan…kalo mau usaha dan belajar tak mudah putus asa pasti bisa…oh ya jangan lupa menambahkan listing dibawah ini..linting ini digunakan saat aplikasi ditutup, yaitu free buffer komponent DSPACK..

Ok dah Finish sampe disini…Ketemu lagi di artikel yang lain…

Dany…Belajar dan terus belajar :)

Posted by: daygoku02 | September 4, 2008

About Gauge on J2ME

Sering kali kita temui pada saat kita mengirim SMS terlihat sebuah form progres atau saat kita menginstal sebuah aplikasi..form tersebut biasa kita sebut dengan Gauge..dalam J2ME ada dua macam gauge yaitu interactive dan non interactive. Untuk interactive gauge user dapat mengubah nilai. gauge ini seperti slide bar, biasanya digunakan pada setting volume. gauge ini terdiri dari nili minimun dan maksimum dan nilai sekarang. parameter dari gauge ini terdiri dari nama, kondisi gauge must be true untuk interactive gauge, nilai maximum dan nilai sekarang. berikut ini interactive gauge dengan nilai maksimum 5 dan nilai sekarang 3:

Gauge gauge = new Gauge(”Interactive”, true, 5, 3);

Adapun Noninteractive gauge biasanya digunakan untuk menunjukkan sesuatu yang membutuhkan waktu yang lama, misalnya proses install aplikasi, pengiriman sms dll. kamu dapat menentukan nilai maksimum dan mengganti nilai sekarang dari program aplikasi yang kamu buat atau kamu dapat menggunakan salah satu dari 2 macam noninteractive gauge. adapun 2 macam tersebut adalah sebagai berikut:

Continuous : menunjukkan suatu animasi yang menandakan suatu aplikasi sedang bekerja, misalnya kirim sms atau koneksi internet. untuk membuat continuous noninteractive gauge menggunakan INDEFINITE untuk nilai maksimum dan COUNTINUOUS_RUNNING untuk nilai saat ini. berikut contoh programnya:

Gauge cgauge = new cgauge(”Non-I Countinuous”, false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);

incremental : cara kerja incremental gauge hampir sama dengan gauge yang lain, tapi aplikasi yang kamu buat mesti mengupdate setiap kali posisi gauge mau dipindah.

Gauge igauge = new igauge(”Non-I Incremental”, false, Gauge.INDEFINITE, Gauge.INCREMENTAL_UPDATING);

untuk membuat incremental gauge berubah, set nilai untuk INCREMENTAL_UPDATING dengan cara

ig.setValue(Gauge.INCREMENTAL_UPDATING);

akhirnya kamu juga dapat mensetting noninteractive indefinite gauge untuk menampilkan kondisi ilde dengan menset nilai salah satu dari CONTINUOUS_IDLE atau INCREMENTAL_IDLE.

Posted by: daygoku02 | September 2, 2008

About LISTS on J2ME

Sering kita jumpai dalam aplikasi handphone yang menampilkan menu berupa list baik itu yang radio buttons atau check box..ada 3 macam list yang akan dibahas yaitu:
1. Exclusive –> hanya satu item yang dipilih, ditunjukkan dalam radio buttom.
2. Multiple –>boleh memilih lebih dari satu item, ditunjukkan dalam checkboxes.
3. Implicit –> seperti Exclusive list, tapi list ini seperti menu dan cara penanganannya pun berbeda.
Untuk membuat sebuah list ada dua komponen yaitu nama list dan tipe list yang akan dibuat. Adapun programnya sebagai berikut:

List entreeList = new List(”Select an entree”, List.EXCLUSIVE);

untuk menambahkan item list ada dua komponen yaitu nama item dan gambar (optional). jika gambar tidak ada maka cukup dengan menuliskan null, tapi nama item harus ada

entreeList.append(”Item1″, null);

berikut ini contoh programnya:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.io.IOException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
* @author Gama
*/
public class ListMidlet extends MIDlet implements CommandListener{
private static final String kEntree = “Entree”;
private static final String kTopping = “Topping”;
private static final String kExit = “Exit”;
private Display mDisplay;
private List mMainList, mEntreeList, mToppingList;
private Command mOkCommand;
public void startApp() {
if (mMainList == null){
mMainList = new List(”Create”, List.IMPLICIT);
Image entreeImage = null;
Image toppingImage = null;
Image exitImage = null;
try{
entreeImage = Image.createImage(”/day.png”);
toppingImage = Image.createImage(”/day.png”);
exitImage = Image.createImage(”/day.png”);
}
catch (java.io.IOException ioe){}
catch (Exception e){}
mMainList.append(kEntree, entreeImage);
mMainList.append(kTopping, toppingImage);
mMainList.append(kExit, exitImage);
mMainList.setCommandListener(this);
mOkCommand = new Command(”Ok”, Command.OK, 0);

mEntreeList = new List(”Select Entree”, List.EXCLUSIVE);
mEntreeList.append(”Test1″,null);
mEntreeList.append(”Test2″,null);
mEntreeList.append(”Test3″,null);
mEntreeList.append(”Test4″,null);
mEntreeList.addCommand(mOkCommand);
mEntreeList.setCommandListener(this);

mToppingList = new List(”Topping”, List.MULTIPLE);
mToppingList.append(”Choose1″,null);
mToppingList.append(”Choose2″,null);
mToppingList.append(”Choose3″,null);
mToppingList.append(”Choose4″,null);
mToppingList.addCommand(mOkCommand);
mToppingList.setCommandListener(this);

mDisplay = Display.getDisplay(this);

}
mDisplay.setCurrent(mMainList);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable d){
if (c == List.SELECT_COMMAND && d == mMainList){
int actionIndex = mMainList.getSelectedIndex();
if (actionIndex<0)return;
String action = mMainList.getString(actionIndex);
if (action.equals(kExit)){
destroyApp(true);
notifyDestroyed();
}
else if (action.equals(kEntree)){
mDisplay.setCurrent(mEntreeList);
}
else if (action.equals(kTopping)){
mDisplay.setCurrent(mToppingList);
}
}
else if (c == mOkCommand){
mDisplay.setCurrent(mMainList);
}
}
}

untuk file gambar yang terdapat di program
entreeImage = Image.createImage(”/day.png”);
toppingImage = Image.createImage(”/day.png”);
exitImage = Image.createImage(”/day.png”)
gambar di taruh di folder source Packages pada project yang dibuat. Tampilan program seperti gambar di bawah:

Awanday…
Belajar dan Belajar..

Posted by: daygoku02 | September 2, 2008

AVR Comparator Programming

Salah satu komponen yang paling menarik dalam dunia elektronika adalah komparator. Komparator berfungsi untuk membandingkan dua nilai dengan menghasilkan satu buah output. output yang dihasilkan hanya ada dua kemungkinan yaitu Vmax dan Vmin. Komponen utama dari komparator adalah OpAmp. Biasanya komparator digunakan dalam dunia sensor yang akan di interface kan dengan mikrokontroller. Dalam perkembangan Mikrokontroller sekarang ini telah banyak ditemukan mikrokontroller yang built in dengan komparator, so kita tidak perlu repot-repot lagi membuat rangkain komparator. Dalam tulisan kali ini akan diambil contoh mikrokontroller seri ATMega8 dari jenis AVR yang sudah built in comparator. Program dibuat dengan bahasa C menggunakan compiler WinAVR dengan editor AVRStudio 4 SP 4. Lets Go….
Adapaun ilustrasi dari contoh program adalah sebagai berikut:
Input positif dari comparator (OpAmp) dihubungkan dengan voltage regulator 1.23V dengan mensetting bit ACGB pada register ACSR. sedangkan input negatif dari comparator (OpAmp) dihubungkan dengan tegangan luar (dipakai potensio meter–> pembagi tegangan) melalui pin ADC3 via multiplexer. sebagai indikator digunakn LED yang terhubung dengan PORTD0. Jika besarnya tegangan input negatif dibawah input positif maka led akan padam,sebaliknya jika tegangan input negatif lebih besar dari input positif maka led akan nyala. Nyala padam LED diatur pada saat terjadi interupt comparator dalam rutine ANA_COMP_vect.Berikut ini contoh programnya:

#include
#include
#define AINpin PA3
#define LED PD0
void Init(){
DDRA&=~(1<<AINpin);//as input
PORTA&=~(1<<AINpin);//no Pull-up
DDRD|=(1<<LED); //Led pin as output
PORTD|=(1<<LED);//Initally LED is OFF
SFIOR|=(1<<ACME);//enable multiplexer
ADCSRA&=~(1<<ADEN);//make sure ADC is OFF
ADMUX|=(0<<MUX2)|(1<<MUX1)|(1<<MUX0); //select ADC3 as negative AIN
ACSR|=(0<<ACD)|(1<<ACBG)|(1<<ACIE)| (0<<ACIC)| (0<<ACIS1)|(0<<ACIS0);
sei();//enable global interrupts
}
// Interrupt handler for ANA_COMP_vect
ISR(ANA_COMP_vect) {
if bit_is_clear(ACSR, ACO)
PORTD&=~(1<<LED);//LED is ON
else PORTD|=(1<<LED);//LED is OFF
}
// Main program
int main(void) {
Init();
while(1) {
}
}

Awanday
Belajar dan Belajar..

Posted by: daygoku02 | September 1, 2008

USART AVR

USART atau yang lebih dikenal dengan Universal Syncronous and Asyncronous Receiver Transmitter sangat handal dan berguna dalam berbagai project yang berhubungan dengan interface PC, misalnya program monitoring suhu ruangan menggunakan delphi, dan lain-lain. USART di ATMega8 memiliki beberapa fitur yaitu:
* Full Duplex Operation with Independent Serial Receive and Transmit Registers);
* Asynchronous or Synchronous Operation;
* Master or Slave Clocked Synchronous Operation;
* High Resolution Baud Rate Generator;
* Data OverRun Detection;
* Framing Error Detection;
* Supports Serial Frames with 5, 6, 7, 8, or 9 Databits and 1 or 2 Stop Bits;
* Odd or Even Parity Generation and Parity Check Supported by Hardware;
* Multi-processor Communication Mode;
* Double Speed Asynchronous Communication Mode;
* Noise Filtering Includes False Start Bit Detection and Digital Low Pass Filter;
* Three Separate Interrupts on TX Complete, TX Data Register Empty and RX Complete;
USART dipisahkan menjadi 3 bagian yaitu clock generator, Transmit, dan Receive. Mari kita bahas satu persatu:
1. Clock Generator
Clock generator tergantung pada mode data transfer, terdapat empat mode clock generator yang berbeda,yaitu:
* normal asynchronous;
* double speed asynchronous;
* Master synchronous;
* Slave synchronous.
Kebanyakan yang digunakan adalah asynchronous internal clock generator. Register Baud Rate (UBBR) digunakan dimana nilai yang diberikan untuk down counter. Setiap kali nilai down-counter mendekati nol, maka sebuah clock dibangkitkan. Kamu dapat menghitung berapa nilai UBRR yang akan kamu tulis tergantung dari baudrate yang kamu inginkan dan kecepatan dari MCU clock. Nilai UBBR dapat dihitung menggunakan formula: BAUD = fck/(16(UBBR+1)). Formula ini digunakan untuk Asynchronous normal mode jika menggunakan mode double speed maka formula yang digunakan adalah BAUD = fck/(8(UBBR+1)). Untuk lebih jelasnya mengenai double speed bisa dilihat sendiri di datasheet AVR :)
Misalkan digunakan kecepatan MCU = 8 MHz dan baudrate yang diinginkan 9600, setelah dihitung menggunakan rumus diatas diperoleh nilai UBBR = 51.083333333, kita bulatkan UBBR = 51. Dengan nilai UBBR =51, maka nilai aktual boudrate adalah 9615, jika dibagi dengan 9600 diperoleh 1.0016 dan karena itu errornya adalah 0.16 %. Dengan error tersebut USART masih dapat bekerja tetapi tidak sempurna. Oleh karena itu biasanya digunakan kristal 7.3728 MHz sehingga akan memberikan nilai UBBR = 47 dan no error. Table yang menunnukkan variasi clock/baud dapat kamu temukan di datasheet AVR. Untuk mode Synchronous dan clock external melalui pin XCK dapat dilihat di datasheet :)

2. USART Transmission
USART dapat melakukan transmit data dengan memberikan logika satu di bit TXEN ayng terdapat dalam register UCSRB. Operasi normal port akan diabaikan oleh USART. Ketika transmit sudah diaktifkan maka pin yang bersangkutan yaitu pinD1 tidak bisa digunakan dalam mode normal. Adapun program pada WinAVR yang menangani USART transmit sebagai berikut:
void USART_SendByte(uint8_t Data)
{
// Wait if a byte is being transmitted
while((UCSRA&(1<<UDRE)) == 0);
// Transmit data
UDR = Data;
}

3. USART Reception
USART Receiver dapat diaktifkan dengan memberikan logika satu pada bit RXEN yang terdapat dalam register UCSRB. Ketika USART receiver diaktifkan maka pin yang bersangkutan tidak bisa dioperasikan sebagai normal mode, pin yang dimaksud adalah pinD0. Berikut ini program WinAVR yang menangani USART Receive:
uint8_t USART_vReceiveByte()
{
// Wait until a byte has been received
while((UCSRA&(1<<RXC)) == 0) ;
// Return received data
return UDR;
}
Sebelum melakukan transfer data, maka ada beberapa hal yang perlu dipersiapkan yaitu baud rate, mode operasi dan format frame data yang akan dikirim. Antara receiver dan transmitter harus mempunyai setting yang sama. Data frame dari USART biasnya dimulai dengan bit START lalu di ikuti dengan data mulai dari 5 data sampai 9 data dan diakhiri dengan bit STOP bisa 1 atau 2 bit. Diantara data dan bit STOP biasanya ditambahkan parity sebanyak 1 bit. Parity berfungsi sebagai error cek dengan pilihan no parity, even, or odd parity.
Berikut ini diberikan contoh program USART:
#include
#include
// Define baud rate
#define USART_BAUD 115200ul
#define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<>8);
UBRRL = (uint8_t)USART_UBBR_VALUE;
// Set frame format to 8 data bits, no parity, 1 stop bit
UCSRC = (0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
// Enable receiver and transmitter
UCSRB = (1<<RXEN)|(1<<TXEN);
}
void USART_vSendByte(uint8_t u8Data)
{
// Wait if a byte is being transmitted
while((UCSRA&(1<<UDRE)) == 0);
// Transmit data
UDR = u8Data;
}
uint8_t USART_vReceiveByte()
{
// Wait until a byte has been received
while((UCSRA&(1<<RXC)) == 0);
// Return received data
return UDR;
}
int main(void)
{
uint8_t u8Data;
// Initialise USART
USART_vInit();
// Send string
USART_vSendByte(’S');
// Repeat indefinitely
for(;;)
{
// Echo received characters
u8Data = USART_vReceiveByte();
USART_vSendByte(u8Data);
}
}

Awanday..
Belajar dan Belajar..

Posted by: daygoku02 | September 1, 2008

Control Timer/Counter0 AVR using WinAVR

Timer merupakan salah satu bagian penting dari embedded system. Timer dapat membuat hidup kamu lebih mudah jika digunakan dengan baik. Pada dasarnya satu hal yang membuat itu baik adalah timer tersebut dapat berjalan sendiri di luar program utama. Kamu tinggal set up timer dan biarkan dia bekerja melakukan tugasnya sementara program utama mengerjakan tugasnya sendiri. Timer pada kenyataanya mudah untuk digunakan. Kita akan memperkenalkan timer yang terpasang di mikrokontroller ATMega8. Pada mikrokontroller AVR yang lain mempunyai model timer yang sama. ATmega8 memiliki 3 timer yaitu timer0 8 bit, timer1 16 bit dan timer2 8 bit. Pada penulisan ini akan dibahas mengenai timer0 8 bit. Timer0 atau yang biasa disebut timer/counter0 memiliki beberapa fitur antara lain:
1. Satu channel counter
2. Generator frekuensi
3. External event counter
4. 10 – bit clock prescaler
Untuk dapat menjalankan timer/counter0 harus dipelajari dulu mengenai register timer/counter0 karena di register itulah tempat setting Timer/Counter0 agar bisa bekerja. Register tersebut terdiri dari TCCR0, TCNT0, TIMSK dan TIFR. Register TCCR0 merupakan tempat setting clock yang intinya agar timer/counter0 bisa bekerja maka register ini jangan sampai diisi dengan 0×00 (dikosongkan). Sumber clock bisa berasal dari internal mulai dari no prescaler sampai 1024 prescaler dan bisa juga dari sumber external. Register TCNT0 merupakan register pencacah setiap ada trigger bisa tepi naik atau tepi turun, tapi kalo sumbernya dari dalam (internal) pencacahan dilakukan pada saat tepi naik. Register ini akan mencacah naik dari 0×00 sampai nilai max 0xFF kemudian di reset kembali lagi ke 0×00. Pada saat overflow yaitu kondisi dari 0xFF ke 0×00 maka bit TOV0 dari register TIFR akan di set 1. Keadaan overflow juga bisa digunakan untuk menjalankan interrupt. Register TIMSK merupakan register tempat setting interrupt timer/counter0 overflow diaktifkan atau tidak. Dengan memberikan logika satu pada bit 0 yaitu bit TOIE0 maka interrupt timer/counter0 aktif dengan catatan global interrupt diaktifkan (terdapat di Status register). Register ini diguankan oleh semua timer/counter yang ada di ATMega8, oleh karena itu pengubahan pada register ini harus hati-hati apabila ketiga timer tersebut digunakan secara bersama-sama. Sedangkan register TIFR (Timer/Counter Interrupt Flag Register) digunakan sebagai penanda apakah sudah terjadi overflow atau compare match. Pada timer/counter0 overflow ditandai dengan logika 1 pada bit 0 (TOV0) pada register ini.
Pada WinAVR untuk menangani proses interrupt telah disediakan header interrupt.h. Berikut ini contoh program sederhana dari timer/counter0 menggunakan WinAVR yang dijalankan menggunakan program AVRStudio 4 SP 4.
#include
#include
#include
#define outp(a, b) b = a
uint8_t led;
/* signal handler for timer interrupt TOV0 */
ISR(TIMER0_OVF_vect) {
led++;
}
int main(void) {
/* use PortB for output (LED) */
outp(0xFF, DDRB);
/*enable timer overflow interrupt*/
outp((1<<TOV0), TIMSK);
/*set timer counter initial value*/
TCNT0=0×00;
/*start timer without presscaler*/
outp((1<<CS00), TCCR0);
/* enable interrupts */
sei();
/*Initial led value*/
led = 0×00;
for (;;) {
/* loop forever timer interupts will
change the led value*/
outp(led, PORTB);
}
}

Program diatas merupakan operasi incremental yang hasilnya dikeluarkan ke portB. Proses Increment berlagsung saat terjadi interrupt overflow.

Awanday
Belajar dan belajar…

Older Posts »

Categories