Senin, 19 April 2010

Panel Surya Atap Rumah

.
Depan












Belakang

















Mikrokontroller AVR












Servo X, Y, dan Sensor Cahaya LDR










Sabtu, 17 April 2010

Wireless Medical Ring

.
Server n Client








Server








Client









Interface Laptop








Data pada Terminal CoViAVR








Sensor SHT11, HeartBeat, Button Call

Jumat, 16 April 2010

Video : Softdrink Seller via SMS

.
Cekibroot.........



Buat video-nya saja berulang ulang dan ulang.....
Cape sendiri...
;)

Senin, 05 April 2010

EEPROM : Mengakses EEPROM AVR

.
Mikrokontroller AVR telah memiliki EEPROM internal yang dapat diakses langsung dengan mudah seperti halnya mengakses variabel nilai. Dengan fitur EEPROM ini perancang tidak perlu menambahkan eksternal EEPROM dan juga tidak perlu repot-repot membuat fungsi untuk mengakses EEPROM tersebut.

EEPROM pada CoViAVR
Mengakses dan mengaktifkan EEPROM pada CoViAVR semudah membuat dan memberikan nilai pada variabel global. Silahkan baca help CoViAVR tentang Accessing the EEPROM.
Penggunaan EEPROM harus menggunakan global variabel dan ditambahkan kata eeprom atau _eeprom. Pemberian nama dan nilai semudah pemberian nilai pada variabel lainnya.





Indikator digunakan dan terpakainya EEPROM pada AVR yaitu ketika dicompile akan tampak seperti gambar berikut :
Beberapa catatan mengenai EEPROM pada avr yaitu :
  • Total EEPROM pada ATmega8535 adalah 512 Byte EEPROM.
  • EEPROM AVR menggunakan ukuran data terkecil yaitu 16 bit atau 2 Byte sehingga total EEPROM yang bisa digunakan pada CoViAVR adalah 512 / 2 = 256.
  • Secara otomatis alamat EEPROM akan dimulai dari 0x0000 dan untuk menentukan alamat EEPROM sesuai keinginan programmer yaitu menggunakan tanda @.
  • misalnya : eeprom unsigned int nilai @0x2C;
Mengakses EEPROM
Potongan coding disamping adalah mengakses serial RTC kemudian data jam, menit, detik, tanggal, bulan, dan tahun disimpan di EEPROM AVR. Aplikasi ini digunakan untuk aplikasi scheduling controller atau alat pengendali berdasarkan jadual dan kalender yang ditentukan.

Ketika chip mikrokontroller AVR di program (didownload) maka saat itu pula seluruh EEPROM diprogram dan diberikan nilai sesuai dengan nilai yang diprogram pada global variabel, dalam hal ini EEPROM jam, menit, detik bernilai 0, tanggal = 1, bulan = 1, dan tahun = 10 (0x0A);
Hal inilah yang menyebabkan jika anda memprogram kembali chip mikrokontroller maka nilai EEPROM di reset sehingga seolah-olah nilai EEPROM tidak berubah atau tidak tersimpan.

Silahkan baca posting EEPROM selanjutnya.
Semoga manfaat ;)

Sabtu, 03 April 2010

Data Type pada CoViAVR

.
Pada posting : Matematika pd Bilangan Pecahan (float)
Saya membahas mengenai error pada hasil perhitungan, dan ketika membuka-buka Help CoViAVR tentang Data Types dan Type Conversions terdapat informasi yang menunjukkan penyebab terjadinya error pada pemrosesan 2 buah bilangan yang berbeda tipe.
Kali ini akan saya coba bahas.

Data Types
Gambar tersebut memberikan informasi mengenai tipe data, penulisan tipe data, range tipe data, dan ukurannya / Size (Bits).
Jika menggunakan program pada komputer seperti Delphi, Visual C, Visual Studio, Visual Basic, dll, penggunaan tipe data kurang begitu diperhatikan karena komputer memiliki prosessor yang cepat dan RAM yang besar.

Tetapi untuk mikrokontroller penggunaan tipe data (sangat) penting karena mempengaruhi beberapa hal antara lain : kecepatan eksekusi mikrokontroller, penggunaan RAM / Data Stack Size, Kapasitas memori program, dan hasil pada perhitungan.

Type Data
Type data penulisannya harus sesuai agar range nilai yang digunakan sesuai dengan perancangan, penulisan tipe data seperti pada gambar diatas. Jika tipe data char ditulis tanpa menggunakan unsigned (tidak tanda) atau signed (bertanda) maka secara otomatis compiler akan membuatnya menjadi unsigned sesuai dengan konfigurasi default-nya.

Pada tipe bit, bool, _Bool menyatakan suatu keadaan yang bernilai true (1 / high) atau false (0 /low) tetapi ukuran bit hanya 1 bit sedangkan ukuran bool dan _Bool 1 byte (8 bit). Oleh sebab itu harus mengetahui kapan menggunakan bit dan kapan menggunakan bool/_Bool.
Contohnya yaitu ketika bit digunakan saat mengakses 1 buah pin mikrokontroller dan bool digunakan ketika menggunakan 1 buah RAM (1 byte) sebagai memori menyimpan nilai true atau false (karena ram / stack pointer minimal 1 byte).

Size (bits)
Size (bits) berpengaruh pada beberapa hal yaitu (yang kuketahui) :
  1. Besarnya memori program, RAM, data stack size, dan EEPROM (jika digunakan). Oleh sebab itu untuk menghemat memori gunakan tipe data yang tepat.
  2. Kecepatan eksekusi mikrokontroller. Berkaitan dengan point 1 semakin besar Size-nya semakin lama waktu eksekusinya.
  3. Kesalahan pada proses aritmatika data atau perpindahan data.
Untuk point 3 silahkan lihat pada help CVAVR tentang Type Conversion. Dijelaskan bahwa pada Project|Configure|C Compiler|Code Generation|Promote char to int tidak di centang, karena konfigurasi ini di rancang untuk AVR dengan CPU 16 dan 32 bit, tidak disarankan untuk AVR dengan CPU 8 bit seperti ATmega8535. Jika dicentang maka setiap variabel dengan size 8 bit akan dikonversi menjadi 16 bit sehingga berpengaruh pada penggunaan memori dan memperlambat kecepatan CPU AVR.

Contoh untuk aritmatika :
unsigned char a=30;
unsigned char b=128;
unsigned int c;

c=a*b; // hasilnya salah
c=(unsigned int) a*b; // hasil tipe unsigned char dikonversi menjadi unsigned int.

Met Mencoba. ;)

Topik yang Populer