Pelatihan AVR

17 Maret 2011

Code Composer Studio (ccs) v3.3 pada TMS320C6455


Assalamu'alaykum wr wb
kali ini saya akan menjelaskan tentang software composer dan compiler yang digunakan untuk membuat program yang dapat dijalankan pada DSK6455. bagi yang belum mengetahui tentang TMS320C6455 atau yang sering disebut dengan DSK6455 dapat dibaca disini

Pemrosesan sinyal digital dilakukan pada TMS320C6455 DSK. Pada DSK (Development Starter Kits) ini sudah termasuk berbagai macam modul dari DDR2 memory, JTAG (Joint Test Action Group), AIC23, power supply, C6455 core, CPLD, Ethernet, dan modul lainnya.

Untuk perancangan program dilakukan menggunakan Code Composer studio v3.3. Code composer studio v3.3 (CCS) menggunakan bahasa C# sebagai media untuk memprogramnya. Dalam DSK C6455 mempunyai beberapa library yaitu:
·         DSK6455
Mempunyai berbagai macam tools untuk mengakses fitur-fitur DSK6455 seperti AIC23, McBSP
·         BSL (Board System Library)
Memuat fitur-fitur yang dibawa oleh board system.
·         CSL (Chip System Library)
Memuat fitur-fitur yang dibawa oleh core C6455, meliputi: interrupt, McBSP, PLL, Ethernet, GPIO, SRIO, dan lainnya
 ·         DSPLIB
Memuat fitur-fitur yang dapat menjalankan perintah-perintah untuk pengolahan sinyal digital dalam hal ini lebih kepada sinyal suara.
·         IMGLIB
Memuat fitur-fitur yang lebih berat kepada pengolahan gambar.

 
Icon CCS v3.3

 Tampilan Pada Saat Pembuatan Program Untuk DSKC6455

Untuk pengaktifan TMS320C6455 DSK pertama kali, kondisi kabel USB untuk JTAG harus dipasang terlebih dahulu sebelum kabel power dipasang. Setelah kabel power dipasang maka devais akan melakukan POST (Power On Self Test) dengan melakukan booting dan juga melakukan pengecekan pada modul-modul di luar sistem core C6455. Pengecekan dapat dilakukan juga dengan menggunakan DSK6455 Diagnostic Utility v3.3.

 Icon DSK6455 Diagnostic Utility v3.3

Untuk dapat melakukan pembuatan program yang dapat dijalankan pada DSK perlu dibuat project untuk membundlenya jadi satu. Agar satu file dapat berhubungan dengan file yang lain maka perlu disertakan file yang berfungsi untuk linker yang berformat ‘cmd’.

 Project Pada Code Composer Studio v3.3


Wassalamu'alaykum wr wb
Fardhady Himawan KH

16 Maret 2011

Motor Driver Circuit and analysis

Assalamu'alaykum wr wb

this time I'd like to share you about motor driver circuit. what is motor driver? motor driver is circuit that can driving a motor using simple control signal. a motor needs high current or high voltage. because of that, we need a motor driver circuit to make a bridge between microcontroller and motor.



in this circuit, the circuit is design to control motor direction (clockwise or counter clockwise) and PWM (pulse width modulation) to manipulate motor speed. it uses optoisolator (IC 4N25), power N-MOSFET (IRFZ44N), and relay 12v DPDT (dual pole dual throw. read here).

now I will explain how its works, control signal from microcontroller uses 5 volt TTL is too high to operates a optocoupler. as shown in optocoupler diagram above, pin 1 and pin 2 are connected to LED so we need a resistor to maintain lower voltage, because LED needs supply between 2-3.5 volts. if microcontroller uses 3.3 volts (low voltage CPU) then we don't need additional resistor.
 these LED functionally as base in BJT (bipolar junction transistor), when current flows from base to emitter, it will trigger current flows from collector to emitter. noted that, we use optocoupler to separate microcontroller  ground from motor ground. it prevent from backward current from motor while it loaded.



while LED on, current is flows from collector to emitter, with 12 v difference between collector and emitter. this will be enough voltage to control MOSFET's Gate to make current flows from drain to source. this MOSFET will be function as second switch. and to maintain the higher current to faced the next stages.

when it passed MOSFET, the logic "1" is 12 volts and logic "0" is 0 volts. this voltage is use to control the relay.

ok, I need your full attention in this part.

when the DIR is "1", there no current in relay's coil and the current will flows to negative direction. because positive  motor connected to PWM and negative motor connected to supply 12 volts.

when the DIR is "0", there no current in relay's coil and the current will flows to positive direction. because negative  motor connected to PWM and positive motor connected to supply 12 volts.

to more relay explanation, click here



wassalamu'alaykum wr wb
Fardhady HK Hanggara


15 Maret 2011

potongan kecil hati sang kakek

Assalamu'alaykum wr wb
aku teringat cerita seorang teman, tapi lupa siapa yang menceritakan dan kapan cerita diceritakan,, hihi

alkisah disebuah negara yang makmur, dimana semua orang melihat sesuatu dari hati orang lain. karena memang dinegara itu hati seseorang benar-benar dapat terlihat jelas dari luar. sehingga seorang dianggap cantik ataupun tampan semua dilihat dari hatinya.

dinegara itu terdapat seorang pemuda dengan hati yang sangat indah, begitu bersih, warna yang indah, bentuk yang sempurna dan juga masih berfungsi sangat baik. seluruh orang di negara itu sangat mengagumi pemuda itu. dan mereka berlomba lomba untuk sering mengunjungi pemuda itu hanya untuk sekedar menyapa ataupun melihat hatinya. ya seperti layaknya orang yang memiliki kelebihan, pemuda itu sangat bangga memiliki hati yang begitu sempurna. ia sering menunjukkan betapa sempurnanya hati miliknya itu. dan tak ada satupun warga di negara itu yang cemburu ataupun dengki melihat pemuda itu. semua melihatnya takjub dan menganggapnya sebagai mukjizat tuhan kepadanya.

suatu hari ketika pemuda itu sedang berjalan-jalan sekedar mencari angin segar. tak ajal setiap orang yang dilewatinya selalu memuji hati miliknya. tiba-tiba tak sengaja ia melihat sesuatu yang ganjil, ia melihat seorang kakek tua yang renta, tapi bukan fisik kakek itu yang menjadi perhatian sang pemuda. namun ia sangat heran melihat hati sang kakek. hati sang kakek terdapat banyak tambalan, banyak lubang, bahkan antara tambalan satu dan lainnya tak jarang warna dan bentuk tambalannya berbeda dengan warna asli hati sang kakek. apa yang gerangan terjadi? pikir sang pemuda. pemuda itu begitu penasaran.

kemudian didekatilah sang kakek tua yang renta itu. bahkan sebelum sang pemuda menyapa sang kakek, kakek itu terlebih dahulu tersenyum padanya. kemudian dibalasnya senyuman sang kakek. namun perhatian sang pemuda masih pada hati sang kakek. ia emncoba melihatnya dekat... dan lebih dekat... lebih dekat lagi...

hingga sang kakek berkata "sentuhlah nak"

pemuda itu terkejut, tanpa berkata sepatah katapun ia memberanikan diri untuk menyentuh hati itu dengan perlahan.

setelah berhasil menyentuhnya dan melihat dengan dekat hati kakek itu, kemudian dia memberanikan diri untuk bertanya.
"apa yang tejadi dengan hatimu kek? apakah gerangan yang terjadi hingga bentuknya seperti itu?" tanya sang pemuda dengan terheran-heran


sang kakek tersenyum, "duduklah, jika kamu tertarik untuk mendengar cerita kakek"
pemuda itu kemudian duduk disamping kakek itu.
"mungkin kamu merasa terheran mengapa banyak lubang dan tambalan dihati ini, bahkan ada yang tambalannya kekecilan, ada yang pas, bahkan ada juga yang kekecilan" sang kakek menghela nafas.

"hati ini saya dapat ketika saya mencoba mengambil sepotong kecil hati ini dan memberikannya kepada orang yang berarti dan orang yang baik kepada saya. terkadang orang tersebut membalasnya dengan memberikan potongan hatinya, ada yang memberikan lebih besar dari apa yang saya berikan, tak jarang juga ada yang memberikan potongan hati yang lebih kecil. hingga muncullah tambalan-tambalan pada hati ini, ada yang kebesaran dan ada yang kekecilan." sang kakek kembali menghela nafas

"lalu bagimana dengan lubang itu?" sang pemuda tak sabar

"ya, terkadang apa yang kita berikan ke orang lain tidak mendapatkan balasan dari orang itu. dan saya tidak terlalu mempermasalahkan hal itu, karena bagi saya, ketika saya sudah memberikan hati kepada orang yang berarti bagi saya dan juga kepada orang yang sudah berbaik hati pada saya. itu sudah menjadi hal yang terindah bagi saya. tidak terlalu penting apakah nanti orang itu membalas dengan memberikan potongan hatinya atau tidak"

pemuda itu kemudian terdiam, dan melihat hati yang dimilikinya. tersadar bahwa ia tak pernah sedikitpun memberikan potongan kecil hatinya kepada orang lain. seakan akan kekaguman dirinya akan kesempurnaan hatinya luluh lantak saat itu juga.
"terima kasih kek, " kata pemuda itu sambil mengambil potongan hatinya dan berusaha menempatkannya pada lubang di hati sang kakek. kemudian sang kakek tersenyum dan membalas memberikan potongan hatinya.

hati pemuda itu kini tak lagi sesempurna seperti sebelumnya, karena kini ia memiliki tambalan dari sang kakek. namun ketidaksempurnaan ini membuat dirinya lebih berarti di banding kesempurnaan yang tidak berarti. ia melangkah dengan bangga menuju rumahnya.

"terkadang ketidaksempurnaan yang berarti itu lebih berharga daripada kesempurnaan yang tidak berarti"


"terkadang aku melihat kesempurnaan dalam ketidaksempurnaan, dan aku lebih nyaman seperti itu dibanding melihat ketidaksempurnaan dalam kesemprnaan"

wassalamualaykum wr wb
Fardhady Himawan KH

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