Pelatihan AVR

15 Maret 2011

BURUAN!! pelatihan mikrokontroler telah dibuka

Assalamu'alaykum wr wb

ini ada info tentang pelatihan mikrokontroler AVR nih, ayo ikutan! kuota terbatas
"Microprocessor and Interfacing Laboratory" Reserach Present


"Pelatihan Mikrokontroler AVR"
Pelatihan 1 : Hardware
Pelatihan 2 : Program dan Aplikasi Mikrokontroler (Segera menyusul)

...Tiket : Rp 200.000,- untuk pelatihan 1

Fasilitas :
- Ilmu Insya Allah bermanfaat
- Modul
- CD
- Kit Pelatihan
- Snack + Lunch
- Sertifikat & TAK

Kuota terbatas..
Segera daftar yaa..:D


Wassalamu'alaykum wr wb
Fardhady HK Hanggara

14 Maret 2011

designing quiz lamp circuit

Assalamu'alaykum wr wb

bismillahirrohmanirrohim...
ill try to write down this article using english, altough my english is rather bad, hehe

i was thinking, how can i have quiz lamp that use to science competition occasionally. if i mere make some circuit that work if i press the button and lamp will light on, im sure that very easy. but the problems is what if the participants press the button approaching at same time. then the fastest one will get the light on.
and the others won't get their lamp light on until the fastest one release his button.

then i thought that i can use microcontroller, i sure will be easy but it will be price arm and length (haha). minimum system is expensive for this mini project. then i thought to using basic logic gate to redesign it. wow impressive, i can do it!

ok  this is my design, im using OR gate to design the circuit, it sure harder that design using microcontroller.


im design for 5 participants, in this case i just have to use 5 logic gate ICs. using 74LS32N for the OR logic gate. LM7805 to give 5 volts regulated voltage. and some capacitor for removing the ripple from rectifiers.

this is circuit for the button (larged scale)
this design same as push button, the button connected to the terminal as shown as header 2 above. when it pressed, it will be send 0 volt (logic 0). and when it released it will be send 5 volt (logic 1). in other words this is the active low design.

for actuator, relays are use to activating the lamp and bell (optional). i assume that bell and lamp use home voltage 220VAC 50Hz. and use relays that operate at 5 volt.

how it works?
1. assume that initial voltage is 5 volt for the button. so output from the OR logic gates  will be "1". and when it passes the NOT gate, it will become "0". then initial stages of each circuits is  "0" (remember that OR gate always produces "1" is one or more of its input is "1").
2. when one of them pressed, then the button circuit will be produces logic "0". noticed that all of OR logic inputs will be "0". and output from the NOT gate will be "1" .
3. while one of them produces "1". the others circuit will be locked into "0" condition. it means during the first contestant pressed until he released the others can't press it and light won't be turned on.
4. to control the lamp and bell, logic 0 will be send. why use logic "0"? i guess current from the gate is relatively small and needed other source to activated it. how i have logic "0", is the output logic when it active is "1"? its easy! just get them before it enters the NOT gate.

it easy to design right?
please correct me i wrong, if it about the design or the english, hehe


Wassalamu'alaykum wr wb
Fardhady HK Hanggara


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.