Minggu, 07 Juli 2013

GET IMAGE FROM OV7670 WITH VARIOUS RESOLUTION

In my last research, I was strugling to get basic image from this camera module OV7670 because I cannot use default VGA image to be processed (stored) in my microcontroller, which is STM32F103RET6. The maximum resolution that the microcontroller can process is QVGA resolution.

Base on implementation guide from Omnivision, you just need to set following registers from your microcontroller.
For QVGA resolution.

{0x0c, 0x0c},
{0x3e, 0x11},
{0x70, 0x3a},
{0x71, 0x35},
{0x72, 0x11},
{0x73, 0xf1},
{0xa2, 0x02},

Selasa, 20 Maret 2012

CARA LOAD PROGRAM PADA STM32L-DISCOVERY VIA ST-LINK PADA KEIL UVISION 4

Ini pertama kalinya saya menggunakan board STM32. Board ini tersedia Central Jaya Plaza untuk teman-teman yang berdomisili di Bandung dengan harga yang terjangkau, yaitu 450rb. Yang pertama saya pikirkan saat membaca user manual board ini bahwa board ini menyediakan port ST-LINK device adalah bahwa kita memerlukan device tambahan untuk dapat melakukan debug pada board ini.

Ternyata setelah konsultasi dengan pak Google, yang kita butuhkan untuk melakukan debug pada board hanyalah sebuah USB cable type A to mini-B. Ini karena pada board ini sudah tertanam ST-LINK debugger itu sendiri.

penampakan skematik board

Untuk memulai mendownload program dengan keil uvision 4, yang harus diperhatikan adalah anda harus terlebih dahulu mengistall mdk 4.21 ke atas.

Rabu, 11 Januari 2012

SETTING CLOCK STM32

Setting PLL

Standar clock eksternal yang disarankan untuk STM32 adalah 8 Mhz, sehingga STM32 bisa diseting pada frekuensi kerja 72 Mhz. Untuk beberapa aplikasi yang mengharuskan power saving, kita dapat menggunakan osilator internal, atau osilator eksternal tapi dibawah 8 Mhz.
Limitation
Jika kita ingin mengubah clock eksternal dari standar 8 Mhz, harus diperhatikan bahwa sumber clock STM32 mempunyai batasan dari min. 4 Mhz sampai maks. 16 Mhz. STM32 juga mempunyai 2 bus internal yang tidak boleh melebihi kecepatan tertentu. Kesalahan ini akan mengakibatkan kerusakan peripheral di dalam ST32 dan hal-hal yang tidak diharapkan lainnya.
  • APB1 (low speed) bus tidak boleh melebihi 36 Mhz
  • APB2 (high speed) bus tidak boleh melebihi 72 Mhz

Sabtu, 24 Desember 2011

TUTORIAL KEIL UNTUK STM32

keil uvision4


tidak fair kalo saya membuat artikel tentang menginstal keil tetapi tidak menjelaskan bagaimana membuat program di keil. karena saya menggunakan STM32, maka saya menulis tentang tutorial keil untuk STM32.
ingat kan waktu kita belajar pemograman pada ATMEGA 8535, kita bias enak belajarnya karena sudah ada buku yang berbahasa Indonesia. sepertinya akan lama kalo kita harus menunggu buku tentang STM32F10x keluar karena STM32 mempunyai banyak sekali peripheral dan aplikasi yang luas. buku-buku yang membahas pemograman pada mcu biasanya berisi register-register pada mcu yang berfungsi untuk setting peripheral dari mcu itu sendiri, penjelasan tentang definisi dan kegunaan dari peripheral, dan masuk ke step-step yang harus dilakukan pada compiler baik dengan statement list dan configuration wizard seperti pada codevision.

PILIHAN BOOTING PADA STM32F10x

kembali tentang mcu canggih ARM CM-3 keluaran ST, STM32F10x. STM32F10x menyediakan 3 opsi booting memory untuk kemudahan penggunanya. opsi booting memory ini dapat dikonfigurasi dari logic pada pin BOOT0 dan BOOT1. opsi booting memory yang diinginkan ini kemudian akan aktiv setelah menekan tombol reset.

tabel konfigurasi

Jumat, 02 Desember 2011

VARIABEL VOLATILE DALAM C

di pemrograman komputer, khususnya di C, C++ dan C#, suatu variabel atau objek yang dideklarasikan dengan keyword volatile biasanya memiliki properti khusus berkaitan dengan optimalisasi dan/atau threading. dalam bahasa umum, keyword volatile ditujukan untuk mencegah (pseudo) compiler dari penerapan optimalisasi apapun pada kode yang mengasumsikan nilai variabel-variabel tidak dapat berubah “oleh mereka sendiri”
definisi aktual dan aplikabel dari keyword volatile seringkali disalah-artikan dalam konteks bahasa C, dan karena C++, C# dan Java  “mewarisi” volatile dari bahasa C, ada perbedaan besar dalam hal semantik dan penggunaan volatile pada masing-masing bahasa pemrogramman tersebut. maka kita akan membahas konteks keyword volatile dalam C.
dalam bahasa C dan C++, variabel volatile merupakan variabel yang nilainya dapat berubah karena faktor eksternal. dari fakta, hanya ada 3 macam faktor eksternal yang dapat mengubah nilai variabel, yaitu:
  • memory-maped io (baca: alamat memory yang dipetakan untuk io, contoh di mcu 8051 pin 0 memiliki alamat 0x80).
  • variabel global yang nilainya berubah karena interrupt service routine.
  • variabel global dalam aplikasi multi-threaded.

Rabu, 30 November 2011

JENIS-JENIS VARIABEL DALAM BAHASA C

dalam menulis program bahasa c, kita pernah mengalami program yang kita buat baru bisa jalan kalo interupt nya didisable, atau task yang satu baru bisa jalan kalo task yang lain didisable. problem-problem seperti ini bisa terjadi karena kesalahan dalam penggunaan jenis variabel.

dalam bahasa c jenis variabel dibedakan menjadi empat macam yaitu variabel otomatis, statis, eksternal, dan register.

1) variabel otomatis

penjelasan:
variabel otomatis adalah variable yang hanya dikenal di dalam suatu blok saja (dalam tanda {…}), baik itu blok pemilihan, pengulangan ataupun fungsi. dikatakan ‘otomatis’ karena variable ini dialokasikan pada saat pendeklarasian dan akan didealokasikan secara otomatis ketika program keluar dari suatu blok. walaupun bersifat opsional, namun untuk mempertegas bahwa variable tersebut sebagai variable otomatis, kita dapat menggunakan kata kunci auto pada saat pendeklarasian.
syntax:
auto tipe_data nama_variabel