Pelatihan AVR

14 Maret 2011

Mengenal dan Menganalisis Relay

Assalamu'alaykum wr wb

karena banyak yang menanyakan tentang relay, maka kali ini saya akan mencoba menjelaskan tentang relay. khususnya tentang relay SPDT dan DPDT. pertama saya akan jelaskan apa itu relay. relay adalah komponen atau alat yang berfungsi sebagai switch untuk on/off yang dikontrol oleh arus.

seperti gambar relay diatas, pada relay biasanya digunakan kumparan/coil sebagai media untuk mengontrol switch. bagaimana bisa? ya ketika kumparan dialiri arus, maka pada kumparan dihasilkan medan magnet yang akan menarik plat konduktor yang berfungsi sebagai switch sehingga berpindah titik yang lain, sebagai ilustrasi diatas, kumparan terletak diantara kaki 4-5. sedangkan plat yang dimaksud adalah pada kaki 1 yang akan "berpindah" dari plat 2 ke 3 dan sebaliknya.

ada beberapa jenis relay, namun saat ini saya akan membahas hanya 2 jenis, yaitu relay SPDT dan DPDT

1. Relay SPDT (Single Pole Dual Throw)
prinsip kerja dari relay ini yaitu: pada AB terdapat kumparan sebagai driver. ketika AB belum dilewati arus, maka terminal CE akan tersambung, dan ketika AB dilewati arus maka plat C akan berpindah sehingga terminal CD akan tersambung.

2. Relay DPDT (Dual Pole Dual Throw)
prinsip kerja dari relay ini yaitu: pada AB terdapat kumparan sebagai driver. ketika AB belum dilewati arus, maka terminal CE dan FG akan tersambung, dan ketika AB dilewati arus maka plat C dan F akan berpindah sehingga terminal CD dan FH akan tersambung. jadi ketika driver AB dilewati arus plat yang berpindah ada 2 yaitu C dan F.

3. Relay SPST (Single Pole Single Throw)
prinsip kerja dari relay ini yaitu: pada AB terdapat kumparan sebagai driver. ketika AB belum dilewati arus, maka circuit akan bersifat open cicuit (plat C tidak tersambung), dan ketika AB dilewati arus maka plat C akan berpindah sehingga terminal CD akan tersambung (closed circuit).

4. Relay DPST (Dual Pole Single Throw)
 prinsip kerja dari relay ini yaitu: pada AB terdapat kumparan sebagai driver. ketika AB belum dilewati arus, maka circuit akan bersifat open cicuit (plat C dan E tidak tersambung), dan ketika AB dilewati arus maka plat C dan E akan berpindah sehingga terminal CD dan EF akan tersambung (closed circuit).

nah itu beberapa jenis relay yang sering digunakan dipasaran. tidak ada relay yang lebih bagus, yang terpenting tau kapan dan bagaimana cara menggunakan relay tersebut sehingga efektif dan efisien.

oya, relay juga dibedakan menurut tegangan operasinya. (tegangan minimum untuk men-drive kumparan sehingga plat dapat berpindah) ada yang 5V dan 12V

beberapa fungsi lain dari relay yaitu digunakan untuk memisahkan Ground antara ground driver dan ground driven (yang di kontrol). hal ini dimaksudkan untuk mencegah efek dari arus balik rangkaian karena beban yang dialami. hal ini sering terjadi pada rangkaian motor.
namun karena penggunaannya masih bersifat mekanik karena menggunakan kumparan dan plat, maka responnya sedikit lambat, namun jika masih digunakan dalam periode milidetik, relay masih dapat diandalkan.

mungkin itu dulu tentang relay, kalo ada yang mau ditambahkan sok di komen aja dibawah.


wassalamu'alaykum wr wb
Fardhady HK Hanggara


11 Maret 2011

Texas Instruments Digital Signal Processor (TI DSP)

Assalamu'alaykum wr. wb.

sebelum melangkah lebih lanjut, mungkin saya jelasin dulu apa itu DSP. berbeda dengan DSP yang berati digital signal processing yang lebih kepada pemrosesan sinyal digital atu lebih kepada cara proses suatu sinyal digital. nah kalo DSP yang akan dibahas yaitu Digital Signal Processor yang berarti processor yang dirancang khusus untuk pemrosesan sinyal digital.

lalu apa bedanya DSP dengan prosesor umum seperti Intel, AMD, ataupun Power PC?
jika prosesor secara umum memang didesain untuk Multi Purpose Tasking dan memang tidak dikhususkan untuk suatu proses tertentu seperti prosesor yang ada di motherboard yang dikhususkan untuk transfer data, prosesor di VGA card untuk graphik dan lainnya.

DSP didesain khusus untuk operasi SOP (Sum Of Product). jadi jenis operasi SOP itu merupakan operasi perkalian di dalam penjumlahan (nah lho...). atau bisa dikatakan prosesor ini didesain khusus untuk pemrosesan array karena biasanya sinyal berbentuk array. misalnya sinyal suara merupakan array 1 dimensi dan gambar merupakan array 2 diminesi. bagi yang belum mengerti tentang SOP, biasanya operasi SOP dapat ditulis seperti ini :

SOP array 1 dimensi :

SOP array 2 dimensi :

SOP array 3 dimensi :
nah itulah perbedaan mendasar pada jenis prosesor ini dengan prosesor pada umumnya.

kemudian lebih mendasar lagi akan saya jelaskan DSP yang berasal dari texas instruments atau yang sering juga disebut dengan seri TMS. pada prosesor ini memiliki arsitektur khusus yang disebut dengan velociTI. dengan arsitektur ini didesain prosesor bisa mempunyai fitur superscalar yang dapat memproses instruksi hingga 8 kali. hal ini dikarenakan prosesor ini mempunyai 8 ALU (arithmetic logic unit) yang digunakan sebagai media penghitung. dengan kata lain prosesor ini dapat menjalankan 8 instruksi sekaligus dalam 1 clock.

masih bingung? saya ambil contoh prosesor tipe TMS320C6455 (baca disini)memliki 8 ALU dengan clock sebesar 1.2 GHz. dengan kata lain prosesor ini memiliki dapat menjalankan 8 x 1.2 GHz instruksi dalam 1 detik atau nama kerennya 9.6 GIPS (Giga Instructions per Second).

oya prosesor tipe ini menggunakan dasar arsitektur Harvard lho, nanti saya jelasin deh pa itu Harvard architecture. dengan kemapuan dapat mengakses JTAG untuk simulasi dan analisis dan juga sistem pengaksesan memory yaitu Little Endian dan Big Endian. penasaran? lihat posting selanjutnya. :)


Wassalamu'alaykum wr wb
fardhady HK Hanggara


algorima matching

Assalamu'alaykum wr wb

beberapa saat yang lalu saya mengerjakan proyek tentang sistem embedded mikrokontroller yang menharuskan saya memasang database didalamnya (baca) setelah berhasil menaruh database diadalamnya, kemudian terbesit pertanyaan : dengan kecepatan mikro yang hanya 16 MIPS (mega instruction per seconds) bagaimana bisa mengolah data sebanyak 500 data dengan cepat. permasalahan selanjutnya ialah, database diletakkan di memeory yang lambat namun besar. kalo dipakai algoritma standar yang mancocokkan satu per satu, maka pasti perlu beberapa detik hanya untuk mencocokkan kata mana yang cocok belum lagi proses lainnya yang juga diperlukan.

ketika saya iseng-iseng bertanya ke dosen saya, "pake algoritma yang biasa saja far", saya langsung terdiam, wah masa belum ada algoritma khusus nih? sebagai informasi, saya memang kuliah di kampus IT, tapi jurusan telekomunikasi, jadi untuk programming saya ngerti tapi kalo sampai algoritma yang mendalam saya kebanyakan belum pernah mendalami.

kemudian iseng iseng saya memikirkan bagaimana saya membuat semua proses jauh lebih singkat, tiba tiba terbesit, bagaimana dengan menggunakan string table? tabel yang dimaksud bukan tabel yang berisi string, tapi tabel yang memuat index string yang masuk ke kategori tertentu, memang dalam beberapa alortinma matching biasanya beberapa data sudah dikelompokkan ke dalam kategori tertentu, namun kalo yang saya lakukan sih tidak, karena sistem yang dibuat merupakan sistem yang embedded jadinya untuk me-rearrange data agak sedikit sulit, karena harus mereset lagi semua data dalam mikro yaitu dengan re"flash"ing program atau kata lainnya install ulang program.

singkatnya seperti ini algoritmanya:
- jika baris datanya ada sejumlah N, maka perlu tabel 1xN untuk menyimpan index
- isi tabel 1xN dengan angka default 0-(N-1) yang menunjukkan default elemen dari database

- kemudian perhatikan yang terpenting, jika persebaran dan karakteristik datanya jika data yang mau di cari bersifat terurut seperti no ID atau NIM, maka carilah mulat dari karakter paling belakang, tapi kalo data yang dicari bersifat random  dan memilki panjang yang berbeda seperti nama maka pencarian dapat dimulai dari karakter yang paling depan.

- pencarian dilakukan dengan mencocokkan karakter demi karakter, namun pencocokan dilakukan secara vertikal dan bukan horzantal secara umum, hal ini dilakukan agar lebih cepat. jika ditemukan karakter yang sesuai maka hal yang dilakukan adalah mengupdate tabel yang tadinya masih terurut dengan index string yang cocok "sementara" dengan string yang akan dicari
- cari sampai isi index tabel bersisa satu

keunggulan:
- jika dibandingkan dengan sistem pencarian konvensional dengan algoritma horizontal misal dengan rata-rata panjang string yang di cari misalnya L dan banyak data keseluruhan N,. dan misal data yang akan dicari terletak pada elemen paling bawah, maka dengan algoritma konvensional maka diperlukan LxN pencocokan karakter. sedangkan jika menggunakan algoritma ini maka pencocokan karakter bisa di reduksi hingga 2xN bahkan lebih sedikit tergantung dengan persebaran data. maka jika data yang akan di cari semakin random dan tingkat keragaman data semakin tinggi, maka kecepatan pencarian data akan semakin cepat pula.


Wassalamu'alaykum wr wb
Fardhady Himawan KH


10 Maret 2011

membuat database pada mikrokontroller

Assalamu'alaykum wr wb

sekarang saya akan membahas bagaimana membuat database sederhana pada mikrokontroller.
ada beberapa cirikhas yang sering terjadi pada mikrokontroller yaitu
- biasanya ukuran SRAM (static RAM) hanya seperdelapan dari ukuran memory Flash
- ukuran memory flash hanya berkisar 1-128 KByte
- dapat disimpulkan bahwa ukuran SRAM hanya berkisar 128 Byte - 2 KByte

hal inilah yang sering manjadi kendala ketika membuat database pada mikrokontroller. memory SRAM yang kecil dan memory flash yang lambat. hal ini juga belum diperhitungkan mengenai penggunaan ruang untuk program memory pada kedua memory tersebut, sehingga ruang yang dapat digunakan menyusut sangat kecil.
namun sebelum melangkah lebih jauh, ada beberapa dasar yang perlu diketahui baik menggunakan bahasa assembly maupun bahasa C pada pemrogramannya.



1. database diletakkan di SRAM
   keunggulannya : lebih cepat
   kekurangannya : ruang penyimpanan relatif sangat kecil
  misal data yang akan ditaruh yaitu ABCDEFh
  * pada bahasa assembly
    LDI YL, 45
    LDI YH, 07
    LDI R16,0xAB
    ST Y+,R16
    LDI R16,0xCD

    ST Y+,R16

    LDI R16,0xEF

   ST Y+,R16
  *pada bahasa C
    - bentuk array of char
     char data[3] ={0xAB,0xCD,0xEF};
    - bentuk string
     char *data = {"dfg"};

2. database diletakkan di memory flash
   keunggulannya : ruang lebih besar
   kekurangan : kecepatan lebih lambat
  misal data yang akan ditaruh yaitu ABCDEFh
  * pada bahasa assembly
    - bentuk array of char
    LDI ZL, 45
    LDI ZH, F7
    LDI R0,0xAB
    STM Z+,R16
    LDI R0,0xCD

    STM Z+,R16
    LDI R0,0xEF

    STM Z+,R16
   - bentuk string
   .db data 0xAB,0xCD,0xEF,0
  *pada bahasa C
    - bentuk array of char
     char flash data[3] ={0xAB,0xCD,0xEF};
    - bentuk string
     char flash *data = {"dfg"};


nah biar ga bingung, saya jelasin pake bahasa C aja ya, soalnya kalo pake bahasa assembly agak banyak, kalo requestnya banyak nanti saya akan buatkan menggunakan bahasa assembly pada posting tersendiri

cara paling mudah menuliskan database yaitu seperti ini:
pada contoh ini saya akan membuat tabel 4x8 dengan kriteria seperti ini : syarat setiap elemen database harus memiliki panjang karakter yang sama.

NIMNAMAPASSID
111070008FARD  1234561234567890123456
611070002KEREN 1234562345678901234567
114070003  AKU  1234563456789012345678
115070067AMPUN 1234564567890123456789
111080008FARD1 1234565678901234567890
611080456WAWAH 1234566789012345678901
114080056DUNG  1234567890123456789012
115080023TUING 1234568902345678901234

char  kolom[4]={0,10,18,25};
char flash *database [8]={
"111070008# FARD #123456#1234567890123456#",
"611070002# KEREN #123456#2345678901234567#",
"114070003#  AKU  #123456#3456789012345678#",
"115070067# AMPUN #123456#4567890123456789#",
"111080008# FARD1 #123456#5678901234567890#",
"611080456# WAWAH #123456#6789012345678901#",
"114080056# DUNG  #123456#7890123456789012#",
"115080023# TUING #123456#8902345678901234#"};


 pada contoh diatas database saya letakkan di flash memory terlihat pada kolom pertama saya memberi batas panjang karakter 9 karakter, kolom kedua 7 karakter, kolom ketiga 6 karakter, kolom keempat 16 karakter
cara mengakses baris pertama kolom pertama menggunakan *database[0]
cara mengakses baris ketiga kolom keempat menggunakan *(database[2]+25)
cara mengakses baris kedua kolom ketiga tinggal menggunakan *(database[1]+18)

untuk mengakses kolom pertama tambahkan 0, kolom kedua 10, kolom ketiga 18, kolom keempat 25
untuk mengakses baris pertama hanya lakukan pengaksesan pada array saja. hal ini dikarenakan peletakan database berdasarkan array of string. dan berhatikan database[i] artinya variabel tersebut menyimpan alamat dari string yang diletakkan pada baris [i+1].
 jika ingin mengakases data pada kolom ke i dan baris ke j dapat dilakukan menggunakan
*(database[j-1]+kolom[i-1])

mungkin sekian yang dapat saya sampaikan
kalo ada saran, silahkan dikomen saja
thx


Wassalamu'alaykum wr wb
Fardhady HK Hanggara


bahasa AT Command untuk pengiriman SMS

assalamu'alaykum wr wb

kali ini saya mau sharing penggunaan bahasa AT command buat interface mikrokontroler Atmega8 dengan hape jenis siemens C55. namun harus kedua jenis gadget itu, untuk mikrokontroler bisa apa saja asalkan mempunyai fitur USART (Universal Synchronous Asynchronous Receiver Transmitter) dan juga hp apapun yang mendukung AT Command dan juga punya interface USART. kalo hpnya pake interface lain seperti I2C dan SPI, maka mikrokontrolernya juga harus mempunyai interface itu, yang penting bisa komunikasi.




pertama saya tunjukin konfigurasi PIN pada Siemens C55

Untuk koneksi dengan mikrokontroler atau PC yang dipake cuma 3 pin aja, yaitu TX, RX dan GND. Ini configurasi pin c35 karena USART hanya perlu 3 pin untuk komunikasi:

Pin Description SX1 pinout
1 Vbatt, Power Charging
2 Gnd Gnd
3 TX TX (usb D+ in xx65, SX1)
4 RX RX (usb D- in xx65, SX1)
5 CTS CTS, Data Line For Accesory
6 RTS RTS, Data Line For Accesor
7 DCD DCD, Clockline For Accesory
8 AUDIO P AUDIO L
9 - AUDIO GND
10 AUDIO N AUDIO R
11 GND MIC GND (EXT MIC.)
12 EPP EPP 1 (EXT MIC.)

sedangkan konfigurasi pin Atmega8

karena C55 yang saya gunakan baterenya sudah tidak dapat bertahan lama maka saya membuat interface tembahan, yaitu segaligus mencharge agar dapat bertahan lama.

agar terlihat lebih bagus, saya membuatnya menggunakan kabel USB dengan konfigurasi seperti ini

uC Atmega8                              USB                     Siemens C55
VCC                                      1(merah)                    1 VCC
RX (PortD.0)                         2 (putih)                     3 TX
TX (PortD.1)                         3 (hijau)                     4 RX
GND                                     4 (hitam)                    2 GND


oiya, saya lupa sesuatu, level tegangan pada mikro yaitu TTL 5volt tapi level tegangan C55 TTL 3.3v. sebenarnya perlu diberi resistor dan juga dioda zener yang dihubungkan ke ground dan VCC agar arusnya tidak berlebihan, tapi selama saya mencoba, juga ga apa apa kalo ga pake itu. nah kalo udah lewat kabel data yang dikasi dari pabrik untuk ke komputer itu biasanya sama kabel datanya udah diubah ke level tegangan RS232 dan biasanya konverternya terletak di konektor DB9 karena didalemnya sudah ada IC MAX232. nah kalo ingin tetap menggunakan level tegangan TTL ya jangan pake konektor DB9 jadi langsung aja dihubungin ke mikro. pastikan juga nikro juga menggunakan level tegangan TTL. jadi intinya kalo satu pake TTL semuanya pake TTL dan juga kalo satu pake RS232 yang lain juga harus RS232.

nah sekarang baru kita beranjak ke instruksinya

baudrate umum yang digunakan adalah 9600 baud (ada yang bilang baud=bps, tapi sebenarnya baud adalah kecepatan simbol bukan byte. tapi karena disini 1 simbol sama dengan 1bit. ya bolehlah)

kalo inisialisasi USART dan pengiriman data USART saya anggap sudah bisa ya, hehe

nah, ada yang perlu diperlu diperhatikan dalam penggunaan bahasa AT Command. oya format penulisan pada AT Command juga sering disebut PDU (Packet Description Unit) yang menggunakan encoding 7bit. hal ini digunakan semata mata untuk memperkecil jumlah data yang ditransmitkan sehingga pesan yang dapat kirimkan lebih banyak. atau istilah lainnya pesan dikompres dalam 7 bit.


1. no service center
maka datanya:
* panjang pasangan angka (lihat berapa panjang nomer service center kemudian dibagi 2 dan ditambah 1)
* format nasional :81 (kalo nulisnya dalam format 08xxx), kalo format internasional : 91 (format nulisnya 628xxx)
* nomer telp dengan dibalik antara high nibble dan low nibble (ingat semua huruf dalam hexadesimal sehingga ditulis dalam format nibble) jika tersisa satu diakhir nomer maka beri hexa "F" pada high nibblenya
misal nomer 0812345678 (nasional), 62812345678 (internasional)
format nasional: panjang 5pasang +1= 06
format nasional :81
no telp yang dibalik: 8021436587
jadi PDU service center 06818021436587
nah kalo format internasional PDUnya menjadi 07912618325476f8 (coba renungkan mengapa)

2. sms 01 (default)

3. default gateway 00

4. no tujuan
hampir sama dengan service center, hanya ada sedikit perbedaan
format datanya:
* banyaknya angka (bukan pasangan angka) ditambah 2
*format nasional :81, format internasional :91
*nomer yang ditulis terbalik antara high nibble dan low nibble (sama seperti sebelumnya)
misal:
nasional :081357924680, internasional : 6281357924680
untuk format nasional:
banyaknya angka : 12+2=14(desi)=0e(hexa)
format nasional :81
nomer yang dibalik :803175296408
jadi PDUnya: 0e81803175296408
kalo format internasionalnya : 0f91261853974286f0 (coba renungkan lagi)

5. form : sms 00, fax 01, pager 02. jadi pake 01 aja untuk sms

6. encoding 7 bit 00, 8 bit 01. karena default PDU 7 bit gunakan 00

7. panjang pesan, ini tinggal hitung berapa karakter yang akan dikirim

8. isi pesan (ini yang rumit)

karena selama ini kita sudah terbiasa menuliskan sesuatu dalam 8 bit. namun pada PDU ini digunakan encoding 7 bit maka perlu dilakukan pengolahan bit terlebih dahulu
coba perhatikan contoh dibawah ini:
  M(4Dh)      I (49h)       K (4Bh)        R (52h)      O (4Fh)
01001101 | 01001001 | 01001011 | 01010010 | 01001111

perhatikan pada semua MSB (Most significant bit) bernilai 0 semua
dan hasil pengolahan encoding ke 7 bit

M (4Dh)                                                                                   | 01001101
I (49h)                                                                       0100100 | 1
K (4Bh)                                                      010010 | 11           |
R (52h)                                     01010 | 010           |               |
O (4Fh)                     0100 | 1111       |                  |               |

hasil                  00000100 | 11111010 | 01010010 | 11100100 | 11001101
                             04h              FAh            52h            E4h          CDh
karena pada bit terakhir belum cukup 8 bit, maka perlu ditambahkan bit dummy yang bernilai 0. terlihat bahwa karakter terakhir memerlukan 4 bit 0 tambahan.
seperti diatas, digunakan operasi OR untuk menghasilkan hasil seperti diatas, namun tunggu dulu, ada yang perlu dilakukan lagi,, ya membaliknya!
data PDU untuk SMS yaitu : CDE452FA04

benar sekali! data perlu dibalik sesuai urutannya kembali

nah sekarang saatnya kita gabungin semua PDU diatas, sehingga untuk nomer service center (0812345678), nomer tujuan (6281357924680), dan isi pesan ("MIKRO"), maka PDUnya

0681802143658701000f91261853974286f0000005CDE452FA04

gimana? mudah bukan (sebenarnya ngga sih :hammer: )
mungkin itu yang baru bisa saya share, kalo ada masukan tinggal dikomen saja di bawah.

thx


wassalamu'alaykum wr wb
Fardhady Himawan KH
(tabel ascii)

gerbang kecil sang kupu-kupu

Assalamu'alaykum Wr. WB
saya punya cerita menarik, semoga membantu dan menggugah...


sudah beberapa hari ini seorang anak menunggu dengan cemas, ia menunggu kepompong kupu-kupu untuk berubah menjadi kupu-kupu. namun ia belum tahu berapa umur kepompong itu, sehingga ia tidak tahu kapan sang kupu-kupu akan keluar dari 'rumah' lamanya itu.

setelah beberapa hari menunggu, akhirnya sang anak mendapati ada pertanda bahwa sang kepompong akan berubah menjadi kupu-kupu. perlahan ia melihat sebuah lubang kecil pada kepompong itu, mata sang anak kemudian berbinar binar menandakan kesenangan hatinya. ia menunggu dan terus menunggu. dalam hatinya, ia bertanya "kenapa lama sekali? ". dalam pengamatannya ia melihat lubang pada kepompong itu sangat kecil, dan ia berpikir mana mungkin sang kupu-kupu dapat keluar dari sana dengan lubang sekecil itu. namun ia tetap bersabar dan tidak ingin melewatkan detik demi detik hingga sang kupu-kupu berhasil keluar dari kepompongnya.


namun diperhatikannya kupu-kupu itu tampak sangat kesulitan melewati lubang kecil yang tak kunjung membesar itu. sang anak sangat khawatir jika kupu-kupu itu tidak akan bisa keluar dari kepompong itu. maka iapun berlari kedalam rumah, kemudian diambilnya sebuah gunting kecil yang tajam. tanpa membuang waktu sang anak berinisiatif membukakan lubang bagi sang kupu-kupu. ia berharap sang kupu-kupu dapat keluar dan segera terbang bagai kupu-kupu lainnya.

akhirnya sang kupu-kupu dapat keluar dari kepompongnya!! namun sang anak mendapati kupu-kupu itu gemuk dan sayapnya nampak layu dan tidak mengembang. dan sang anak pun harus mendapati kupu-kupu itu tidak dapat terbang layaknya kupu-kupu lainnya. merasa kecewa, sang anakpun berlalu. dan kupu-kupu itu akhirnya ..... MATI karena ia tidak dapat terbang.

adakah yang salah? ternyata kupu kupu yang kita lihat dengan rasa kagum karena ia sangat indah, cara terbangnya sangat menawan. juga harus melewati salah satu masa tersulitnya yaitu harus melewati lubang kecil yang mungkin terlihat mustahil untuk dilalui. namun ternyata Allah punya kehendak lain akan hal itu. ternyata lubang itulah yang membuat sang kupu-kupu dapat terlihat lebih cantik dan anggun. lubang itulah yang memaksa cairan pada tubuh kupu kupu untuk berpindah tempat dan mengisi ruang-ruang pada sayapnya hingga sayapnya dapat mengembang untuk menopangnya dalam terbangnya. dan juga membuat tubuhnya lebih ramping.


ternyata kupu-kupu juga harus melewati masa-masa tersulit dalam hidupnya agar dapat menjadi indah.bagaimana dengan kita? tentu hal itupun berlaku pada kita. tidak ada hambatan dan rintangan yang tidak "mempercantik" kita semua itu diberikan kepada kita hanya untuk menjadikan kita lebih baik dari sebelumnya. jangan hanya karena rintangan yang terlihat berat lantas kita menyerah. ya, itu semua agar kita menjadi lebih baik, lebih "cantik", juga lebih "anggun".

bagimana dengan sang anak? ya, sang anak harus belajar tentang mempercayai kemampuan seseorang, karena semua akan menjadi lebih baik jika ada sikap saling mempercayai dan juga saling mendidik serta menjaga. bukan berarti kata percaya itu melambangkan sikap cuek, namun kata percaya melambangkan sikap sangat peduli, karena kepercayaan juga menuntut kita untuk mendidik dan juga menjaga.

"karena kita butuh kepercayaan untuk melangkah, kita butuh rintangan untuk berubah. berubah lebih baik"


Wassalamu'alaykum Wr Wb
Fardhady Himawan KH


19 Februari 2011

AIC23 Audio Codec pada DSK6455

pada modul DSK (development starter kit) 6455 terdapat beberapa modul tambahan yang digunakan untuk menjadi fitur tambahan. dan modul yang akan di bahas kali ini adalah mengenai modul audio codec (coder decoder) yang bertipe AIC23 (TLV320AIC23).

pada DSK6455, untuk pengaksesan AIC23 Codec terdapat 2 cara (tergantung pada DSK). biasanya digunakan 2 McBSP (multichannel buffered serial port) yaitu McBSP 0 dan 1. untuk McBSP0 untuk jalur control dan McBSP1 untuk jalur data. namun pada konfigurasi DSK yang lain dapat juga jalur kontrol biasanya digunakan I2C (inter integrated circuit).
untuk mendownload datasheetnya bisa di download disini

unutk pengaksesan dan setting dari AIC23 codec bisa dilakukan pada register kontrol seperti pada gambar di bawah ini

dan jika telah ditentukan nilai pada register di atas, maka nilai tersebut dapat dimasukkan untuk setting codec seperti di bawah ini

DSK6455_AIC23_Config configline = {
    
    
0x001f, // 0 DSK6455_AIC23_LEFTINVOL Left line input channel volume          0x001f, // 1 DSK6455_AIC23_RIGHTINVOL Right line input channel volume
          0x00d8, // 2 DSK6455_AIC23_LEFTHPVOL Left channel headphone volume
          0x00d8, // 3 DSK6455_AIC23_RIGHTHPVOL Right channel headphone volume
          0x0011, // 4 DSK6455_AIC23_ANAPATH Analog audio path control
          0x0001, // 5 DSK6455_AIC23_DIGPATH Digital audio path control
          0x0000, // 6 DSK6455_AIC23_POWERDOWN Power down control
          0x0043, // 7 DSK6455_AIC23_DIGIF Digital audio interface format
          0x00a2, // 8 DSK6455_AIC23_SAMPLERATE Sample rate control
          0x0001 // 9 DSK6455_AIC23_DIGACT Digital interface activation
          };
tipe variabel bentukan yang digunakan yaitu DSK6455_AIC23_Config
karena tipe bentukannya berupa array, maka diperulakan pointer, sehingga ketika menggunakannya digunakan '&'

contoh program pada AIC23

// persiapan variabel
int sampel=512;
Int16 terimakiri[sampel],terimakanan[sampel];
Int16 keluarkiri[sampel],keluarkanan[sampel];
DSK6455_AIC23_CodecHandle hCodecline;
int i; 


/* inisialisasi modul pada DSK6455 */
DSK6455_init();
 

hCodecline = DSK6455_AIC23_openCodec(0, &configline);
/* perhatikan pada penggunaan codec handle diatas, digunakan tanda '&' untuk pointer karena bentuknya array. pada prosedur diatas digunakan opencodec untuk membuka path dan menginisialisasi CODEC*/

while (1)
          {
          for (i=0; i<512;i++) {

                    while (!DSK6455_AIC23_read32(hCodecline,(Uint32 *)&terimakiri[i]));
                    // untuk mengambil data hasil kuantisasi pada AIC23 codec
                    while(!DSK6455_AIC23_write32(hCodecline,keluarkiri[i]));
                    // untuk mengeluarkan data yang akan diubah dalam bentuk analog 
                    while (!DSK6455_AIC23_read32(hCodecline,(Uint32 *)&terimakanan[i]));
                    while(!DSK6455_AIC23_write32(hCodecline,keluarkanan[i])); 
                    // secara default, urutan pengambilan dan pengeluaran data selalu dimulai dari left channel diikuti dengan right channel 
                    }; 
          // proses buffering dan pemindahan buffer 
          for (i=0;i<512;i++) { 
                    keluarkiri[i]=terimakiri[i];  
                    keluarkanan[i]=terimakanan[i]; 
                    }; 
          }


09 Februari 2011

kemana kaki ini harus melangkah?

assalamualaykum wr. wb.

saat ini saya telah menyelesaikan salah satu amanah orang tua untuk menyelesaikan kuliah sarjana di salah satu perguruan tinggi terkenal di bandung. segala upaya telah dicurahkan untuk mewujudkan hal itu, keringat telah bercucuran, air mata tak hentinya menetes, pikiran tak kunjung berhentinya bekerja. bahagia dan senang tentunya, karena dapat meraih apa yang "dulu" hanya mimpi yaitu segera lulus dan dapat melangkah lagi.
namun, sekarang muncul pertanyaan baru. kemanakah saya sekarang?? kemaa kaki ini harus saya tambatkan?? hal ini terus berputar dipikiran ini. berlari kian kemari tak kunjung henti, dan juga saya tak ingin menghentikannya. tentu agar saya cepat melangkah

dahulu saya tak ingin terlalu memusingkannya dan memimpikannya. karena jarang dari mimpi saya dapat terwujud dan semua hanya berakhir sebagai mimpi. karena itulah saya mulai berpikir "inilah realita yang sesungguhnya". dan saya telah belajar tentang hal ini jauh jauh hari sebelumnya. apa yang kita inginkan belum tentu jadi kenyataan. apa yang kita pandang terbaik buat kita belum tentu juga benar-benar baik menurut-Nya. dan ternyata semua itu benar! ketika saya menginginkan sesuatu dan Dia tidak merestuinya, maka di balik itu semua pasti tersimpan sesuatu yang lebih baik. bahkan ketika saya telah terjatuh berulang ulang kali tapi saya tetap percaya hal itu.
karena itulah selama ini saya terkesan "seperti" buih yang terombang ambing dilautan. tanpa tujuan dan juga tanpa manfaat. mengandalkan ombak yang datang silih berganti dari segala arah.
terus terang, saya tidak menginginkan hal tersebut, saya ingin punya pendirian yang kuat dan jelas akan "kemana kaki ini harus melangkah?" seperti teman-teman dan sahabat yang lain. saya malu, sungguh sangat malu. melihat mereka yang berapi api akan mimpi hal ini menjadi tamparan yang sangat keras di hati.
SAYA TIDAK INGIN MENJADI BUIH!! yang hanya bisa terombang ambing kian kemari mengikuti kemana ombak mengehembus.
SAYA JUGA TIDAK INGIN MENJADI KARANG yang hanya bisa diam menanti ombak dan juga melawannya dan ada akhirnya hanya terkikis sedikit demi sedikit karena ombak.
SAYA  HANYA INGIN MENJADI KAPAL yang kuat menahan hempasan ombak dan dapat berjalan kemanapun saya inginkan. punya tujuan dan juga punya keinginan.


17 Mei 2010

ayo belajar TMS320C6455 DSK bareng



wah bukannya berminat menggurui, nah disini kita sharing aja tentang sesuatu yang juga saya pelajarin.. biar ga lupa juga... hehehehe
sekarang di tangan saya ada sebuah modul DSK (development software kit) TMS320C6455

Adalah prosesor DSP (digital signal processing) yang digunakan untuk mensimulasikan dan mengimplementasikan pemrosesan sinyal digital. Biasanya prosesor tipe TMS320CX ini digunakan bersama dengan Development Starter Kit (DSK). Prosesor ini memungkin user dapat mengakses DDR2 RAM (double data rate 2 random access memory). Prosesor yang berbasiskan fixed point ini memiliki clock pencatu hingga 1.2 GHz sehingga memungkinkan untuk menjalankan intruksi yang berat dan panjang.
TMS320C6455 mempunyai beberapa fitur :

  • Performansi tinggi dalam Fixed-Point DSP
  • Kecepatan clock 1.2 GHz
  • 9600 MIPS (mega instruction persecond)
  • 1 clock 8 instruksi
  • AIC23 audio codec
  • Delapan 32-bit instruksi/siklus
  • Megamodule L1/L2 memori
  • 64-Bit memori external antarmuka (EMIFA)Empat 1x Serial RapidIO®
  • 128 MB DDR2 memori
  • 4 MB memori flash
  • I2C serial ROM
  • 32-/16-Bit Host-port Interface (HPI)
  • 10/100/1000 Mb/s Ethernet MAC
  • Dua 64-Bit General Purpose Timers
  • 16 General purpose I/O pins
  • System PLL dan PLL controller
  • JTAG
  • Advanced Event Triggering
  • programable booting
  • expandable

mungkin sekian dulu, tunggu kelanjutannya :)
(soalnya lagi diburu2 nih)



16 April 2008

kita perlu pemimpin yang tangguh

tanpa tarasa nagara kita semakin jauh dari yang namanya kebaikan dan perkembangan yang pesat layaknya negara yang lain. para pemimpin kita makin sibuk dengan kegiatan mereka menghitung seberapa banyak uang akan mereka dapatkan dari proyek yang mereka pegang. mereka lebih senang menandatangani proyek yang mereka tak tahu arah, tujuan serta manfaat nagara ini demi mendapatka dollar.
apa negara kita akan terus begini??
kita perlu pemimpin bertangan besi, pemimpin yang kuat, pemimpin yang tak takut uangnya akan habis, pemimpin yang tak takut akan kekuatan negara lain, pemimpin yang tak berorientasi pada uang saja.
layaknya negara yang maju, pasti di sana ada pemimpin yang hebat, yang kuat, yang mampu memerintah semua orang di negaranya. namun, apa yang dapat kita lihat sekarang tentang pemimpin di indonesia?? pemimpin di indonesia terlalu takut pemerintahannya di jatuhkan oleh orang lain, pemimpin di indonesia terlalu takut ia takkan dipilih lagi pada pemilihan umum atau daerah berikutnya, mereka takut kalau kalau uang mereka pergi, mereka takut kehilangan uang mereka.
lalu bagaimana nasib bangsa kita??
yah tentu saja pasti terabaikan karena pemimpin pemiminnya sibuk ngitung uang yang mereka terima dari proyek proyek yang belum tentu jelas maksud dan tujuannya bagi apa yang mereka pimpin. lalu apa yang dapat mereka lakukan??

pamimpin harus tangguh, jangan takut pada siapapun. pemimpin harus tegas, jangan karena kebutuhan segelintir orang lalu mundur begitu saja dari komitmen awal. selama ini pemimpin di indonesia hanya bisa ngikut dari apa yang dikatakan orang lain.
kita harus meniru dari negara lain yang sudah dapat disiplin dengan peraturan yang dibuatanya dan tidak pernah setengah setengah dengan apa yang sedang dijalaninya.
hukum di indonesia juga harus dibenahi, diperkeras dan diperketat. seperti yang kita dapat lihat di singapura, di sana hukum sab\ngat ketat dan hukumannya juga sangat berat. sehingga warganya harus berpikir dua kali untuk melanggar hukum. mungkin cara ini melanggar HAM, namun apalgai yang harus kita lakukan saat ini adalah memperketat hukum yang berlaku sehingga orang indonesia harus berpikir dua kali untuk melakukannya. kalau bisa hukuman yang ada hanya dua jenis, yaitu hukuman mati dan hukuman seumur hidup. sehingga itu dapat dijadikan momok yang sangat berarti bagi pola pikir orang indonesia. hal ini mungkin akan berdampak pada berkurangnya kriminalis dan juga para koruptor. kalau pola pikir bangsa ini tidak dirubah secepatnya, maka bangsa ini akan terus terpuruk. dan hanya tinggal menunggu waktu sampai nasib bangsa kita seperti negara negara di afrika.
nah, yang dapat kita lakukan saat ini adalah merubah hal hal yang tidak penting dan hanya memperburuk nagara ini dari diri sendiri.

lalu, siapa yang akan menjadi pemimpin yang dapat merubah bangsa ini??
jawabnya TENTU SAJA ANDA!!!