Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label paket belajar. Tampilkan semua postingan
Tampilkan postingan dengan label paket belajar. Tampilkan semua postingan

Rabu, 14 November 2012

Solusi Bug Pemrograman di DT-HIQ AVR/51 USB versi AVRISP MKII menggunakan AVRDUDE

Setelah beberapa kali mengalami komplain yang tidak mengenakkan dari programmer jenis ini, akhirnya di website Innovative Electronics mengeluarkan patch AVRDUDE yang terbukti sangat ampuh.

DT-HiQ _AVR_ USB_ ISP..jpg (350×235)


Beberapa jenis bug yang umumnya terjadi adalah seperti berikut :

- AVR STUDIO 4  :  susahnya programming ATTINY (sering gagal ),  ATmega8515 / 16 gagal pada programming EEPROM

- AVR STUDIO 6 :  tidak terdeteksi

- AVRDUDE :  stk500v2_recv_mk2: error in USB receive


Patch AVRDUDE keluaran Innovative dapat di download di sini


Cara menggunakan AVRDUDE :

1. Install driver Jungo (melalui instalasi avrstudio 4) dan libusb sesuai petunjuk di CD. Libusb dapat didownload disini
2. Hubungkan programmer DT-HiQ AVR USB ke rangkaian target dan PC sebagaimana mestinya
3. Extract file patch AVRDUDE hasil download dimana  terdapat  2 file (avrdude.exe & avrdude.conf)
4. Jika sudah siap maka bisa diberikan perintah berikut melalui command prompt

command prompt dibuka dengan mengetik cmd pada menu start => run  atau  untuk win7 pada kotak search diatas tombol start, kemudian arahkan ke folder dimana file avrdude berada


avrdude.exe -P usb -c avrispmkII -p t2313


t2313 artinya menggunakan attiny2313, jika menggunakan ic yg lain bisa memakai m8 , m16, m8535 dan sebagainya (bisa dibuka di avrdude.conf menggunakan wordpad / text editor). Jika IC dan programmer terhubung benar maka akan tampil seperti berikut :



5. Letakkan file hex dan eep yang akan di program pada folder yang sama dengan AVRDUDE. File hex dan EEP pada AVR STUDIO 4 terletak di folder "default" pada folder tempat menyimpan project.

untuk melakukan programming FLASH digunakan perintah seperti contoh  berikut :


avrdude.exe -P usb -c avrispmkII -p m16 -U flash:w:humitemp3_4out.hex


dimana humitemp3_4out.hex merupakan file flash yang akan didownload. ilustrasi jika sukses sebagai berikut : 



Sedangkan untuk programming EEPROM seperti berikut ini :


avrdude.exe -P usb -c avrispmkII -p m16 -U eeprom:w:humitemp3_4out.eep



Ilustrasinya seperti berikut :






Mudah bukan ? SELAMAT MENCOBA


Share:

Senin, 21 Mei 2012

Catatan Penting Mengenai AVRISP MK-II Programmer


Ada yang khusus dari programer jenis AVRISP MK-2 yg terbaru, dimana instalasi drivernya langsung dari AVR STUDIO 4 versi 4.19 keatas. Jadi Instal AVR STUDIO sampai selesai dulu (sampe ada instalasi jungo usb). Setelah itu baru ditancapkan programmer ke port USB PC dan diberi tegangan supply. Jika instalasi benar, maka LED merah dari programmer akan menyala jika di hubungkan ke PC


(klik biar tambah jelas)


“GUNAKAN CLOCK PROGRAMMING MODE dan TARGET SETING = 6.478 KHz”


Setelah beberapa kali terjadi kesalahan, maka didapatkan kesimpulan bahwa setting dari  programming mode harus kecil saja.



(klik biar tambah jelas)

AVR STUDIO versi 4.19 keatas telah memiliki compiler GCC yg terintegrasi (AVR TOOLCHAIN), tetapi sebaiknya tetap menggunakan  WIN AVR , dengan melakukan perubahan di :

 PROJECT ==> CONFIGURATION OPTIONS ==> CUSTOMS OPTIONS 

dan lakukan seting folder AVR-GCC dan Make seperti gambar diatas.


SELAMAT MENCOBA

Share:

Rabu, 28 September 2011

Text to Bit Converter untuk merancang karakter dot matrix


Jika mengalami kebingungan untuk mendesain karakter dot matrix, saya kasi tools yg mungkin bermaanfaat untuk merubah karakter ke bit.





Mudah-mudahan membantu praktek belajar menulis di dot matrix yang tersedia di paket belajar mikrokontroler
Share:

Minggu, 25 September 2011

Langkah Awal Instalasi DT-HIQ USB AVR ke PC

"Gimana nehh....kok ga detect apa-apa pas dicolokin ? "

SMS seperti ini sering meluncur dari pembeli paket belajar microcontroller dasar sesaat setelah paketnya datang. Kesalah-pahaman seperti ini muncul karena alat tidak mengambil power supply dari port USB melainkan mengambil tegangan dari rangkaian target atau bisa juga hanya menancapkan baterai/tegangan 3 - 5 v ke header pin 2 (+) dan pin 4 (-).




Jika USB-ISP mendapatkan tegangan dari rangkaian atau dari baterai, maka PC akan mendetect hardware baru



Pilih “Locate and Instal driver software” dan arahkan instalasi driver ke DVD installer yg didapat di paketan programmer USB-ISP





Ikuti langkah-langkah sampai USB-ISP terdeteksi oleh PC dan mendapatkan COM PORT tertentu
Dikarenakan software AVR STUDIO hanya mendeteksi port COM terbatas (sampai COM9) maka perlu dilakukan perubahan COM PORT secara manual pada control panel è device manager seperti gambar berikut:


(klik untuk memperbesar)

Klik kanan pada USB ISP Device, kemudian pilih properties, Port setting, Advance dan kemudian pilih com port antara 4-9 ( 1-3 biasanya digunakan oleh PC/Laptop). Jika terdapat keterangan (IN-USE) tidak menjadi masalah asal perangkat yg memiliki com port yg sama sedang tidak terpasang.
Share:

Jumat, 05 Agustus 2011

Bermain Dengan Dot Matrix "LoveHurt"


=== REMAKE 2020 BISA DIBACA DISINI ====





  =======================================================




Siapkan bahan-bahan seperti berikut:





Attiny 2313
Led matrix 7x5
R 10K
Diode 4148
PCB lobang
Header 2x5 buat ISP programmer (optional - Bisa diprogram di Breadboard)
Socket 20 untuk ATtiny, dan soket 14 ( dibelah dua ) buat tempat Led matrix

rangkaiannya seperti ini :




Kemudian komponen dirangkai diatas PCB lobang, ato bisa juga memakai bahan lain( disesuaikan dengan tempat yg mau di pake, misale kotak hadiah , papan tripleks dan lain sebagainya)




letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi



karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja



Untuk kreasi text dalam Led Matrix 7 x 5 , bisa gunakan panduan excel di link ini








Script code dalam Bahasa C /WinAvr seperti berikut:


#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h> 
#include <string.h>
#include <avr/eeprom.h>

//Progmem simpannya di FLASH memory

const char love1[] PROGMEM =
{
0b0011110,
0b0100001,
0b1000010,
0b0100001,
0b0011110

};

const char love2[] PROGMEM =
{
0b0001100,
0b0010010,
0b0100100,
0b0010010,
0b0001100

};

const char L[] PROGMEM ={0x7f, 0x7f, 0x40, 0x40, 0x20}; 
const char O[] PROGMEM ={0x3e, 0x7f, 0x41, 0x41, 0x3e};
const char V[] PROGMEM ={0x3f, 0x7e, 0x40, 0x20, 0x1f};
const char E[] PROGMEM ={0x7f, 0x7f, 0x49, 0x49, 0x41};
const char H[] PROGMEM ={0x7f, 0x7f, 0x08, 0x08, 0x7f};
const char U[] PROGMEM ={0x3f, 0x7f, 0x40, 0x40, 0x3f};
const char R[] PROGMEM ={0x7f, 0x7f, 0x11, 0x29, 0x46};
const char T[] PROGMEM ={0x03, 0x03, 0x7f, 0x03, 0x02};

const char creature[]={0x4e, 0x31, 0x35, 0x31, 0x4e}; //simpan di memory/RAM aja

uint8_t EEMEM tengkorak[5]= {0x1e, 0x75, 0x61, 0x75, 0x1e}; //simpan di EEPROM

uint8_t EEMEM pacman[5]= {0x26, 0x67, 0x67, 0x7f, 0x3e}; //simpan di EEPROM


char dotnya[5],scrolnya[7];



void tulis(uint8_t lama)
{
  uint8_t a,b;

for(a=0 ; a<lama ; a++)
{
 for(b=0 ; b<5 ; b++)   
  
{

PORTB = ~(1<<b) ;
PORTD = dotnya[b];
            _delay_ms(2);

     
}

}



}


void geser(uint8_t lama)
{
  uint8_t a,b;

 for(a=0 ; a<11 ; a++)   
  
{

  if( a<6) 
   { 
 for(b=0 ; b<(5-a) ; b++)  dotnya[b]=0x80;
              for(b=(5-a); b<5 ;b++) dotnya[b]=scrolnya[b-5+a];
 
 tulis(10);
             
             }
  else if (a==6) tulis(lama);

  else 
             {  for(b=0 ; b<11-a ; b++) dotnya[b]=scrolnya[a-5+b];
   for(b=(11-a); b<11 ;b++) dotnya[b]=0x80;  
 
                tulis(10);
              }

          }
 
   
                
     

 
}

void naik (uint8_t lama)

{
{  uint8_t q,step=0;
  
  
  while(step!=16)
   {
if( step <8)
  {   
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] << (7 - step) ; 

           tulis(10);
        } 
   
    else if (step == 8)
  {    
        tulis(lama); 

       }      
else 
  {   
         for(q=0 ; q < 5 ; q++)  dotnya[q] = scrolnya[q] >> (step - 7) ;  
          
  tulis(10);

     step++; 

}    

}




}


int main(void)
{
DDRD = 0b1111111; // untuk baris
DDRB = 0b11111;  // untuk kolom

PORTD =0; // Set all pins low
PORTB =0b11111; //matikan layar
    
    


while(1)
{
// yang ini nulis langsung 
  
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);     

//yang ini pake function geser 

strncpy_P(scrolnya,L,5);
     geser(50);
strncpy_P(scrolnya,O,5);
     geser(50);
strncpy_P(scrolnya,V,5);
     geser(50);
strncpy_P(scrolnya,E,5);
     geser(50);
strncpy_P(scrolnya,H,5);
     geser(50);
strncpy_P(scrolnya,U,5);
     geser(50);
strncpy_P(scrolnya,R,5);
     geser(50);
strncpy_P(scrolnya,T,5);
     geser(50);

//geser ambil dari RAM

strncpy(scrolnya,creature,5);  //tanpa _P karena ambil di RAM
     naik(50);

//ambil dari eeprom ..mengirit..

     eeprom_read_block((void*)&scrolnya,(const void*)&tengkorak, 5); 
naik(50);

     eeprom_read_block((void*)&scrolnya,(const void*)&pacman, 5); 
geser(50);

}

return 0;
}


Script code diatas dibuat dalam mode FLASH, RAM, dan EEPROM, jadi ketika download program ke IC harus memprogram FLASH dulu kemudian dilanjutkan dengan EEPROM.
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep




hasil akhirnya seperti di video berikut :





SELAMAT MENCOBA
Share:

Selasa, 02 Agustus 2011

Jam Sederhana Dengan Attiny 2313

Kali ini kita akan menggunakan 4 buah 7 segment untuk membuat jam sederhana


"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"



Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.

jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control

rangkaiannya seperti berikut :




klik untuk memperbesar gambar

Biasanya untuk display yg agak besar, kita perlu transistor untuk mengatur scanning, tp karena contoh kali ini memakai segment yg kecil maka tidak memerlukan kontrol memakai transistor ( coba pake transistor dijamin nyalanya redup !!)


Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller

source code nya sebagai berikut :

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int jam=0, min=0, detik=0; //variable global untuk menyimpan data2 waktu

void segmen (int angka)

{

switch (angka)
{

case 0 : { PORTB =0b1000000; break ; }
case 1 : { PORTB =0b1111001; break ; }
case 2 : { PORTB =0b0100100; break ; }
case 3 : { PORTB =0b0110000; break ; }
case 4 : { PORTB =0b0011001; break ; }
case 5 : { PORTB =0b0010010; break ; }
case 6 : { PORTB =0b0000010; break ; }
case 7 : { PORTB =0b1111000; break ; }
case 8 : { PORTB =0b0000000; break ; }
case 9 : { PORTB =0b0010000; break ; }
case 10 : { PORTB =0b1111111; break ; } //blank biar ga berbayang
}


}


void clock (void) //fungsi penambah waktu

{

detik ++; //jika fungsi dipanggil maka var detik ditambah

if ( detik == 60) // tambahkan menit jika 60 detik
{ detik=0; //untuk kembali ke 0
min++;
}

if ( min == 60) // tambahkan jam jika 60 menit
{ min = 0; //untuk kembali ke 0
jam++ ;
}

if (jam == 24) jam=0; //untuk kembali ke 0


}



int main(void)

{

int counter=0; //variabel delay
int digit; //variabel digit yang ditampilkan


// Port untuk display 7 segment
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
//port untuk scanning ( PD0-4) dan dot ":" (PD6)
DDRD |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);
//tombol untuk nambah jam/menit
DDRD &= ~(1<<PD4) & ~(1<<PD5) ;

PORTD = (1<<PD6) ; // blink untuk ":"


while(1)

{



counter++ ; //bikin delay nambah terusss

// sesuaikan nilai max counter dengan detik yg pas, tentunya tidak akurat
if(counter == 30) { counter =0 ; clock(); }

// nilai 1/2 dari counter untuk blink ":"
if(counter == 15) PORTD ^=(1<<PD6) ;

else{

segmen(10); // kasi display "mati' agar tidak berbayang

//digit pertama

digit = jam/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 3

segmen(10);
digit = min/10;
PORTD |= (1<<PD2); // 7 segment no3 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 4

segmen(10);
digit = min%10;
PORTD |= (1<<PD3); // 7 segment no4 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);



}

if (bit_is_set(PIND, PIND4)) //tombol nambah jam
{
jam++;
if(jam==24) jam =0;
_delay_ms(100);

}

if (bit_is_set(PIND, PIND5)) //tombol nambah menit
{
min++;
if(min==60) min=0;
_delay_ms(100);

}



}

return 0;

}



jika ingin mengetest/kalibrasi delay detik, ganti salah satu digit untuk menampilkan detik

//digit pertama

digit = detik/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = detik%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);




Bagaimana dengan jam akurat ? disini nih kuncinya ...menggunakan xtal 4Mhz

/* ===================
GUNAKAN XTAL 4MHZ dan 2 buah capacitor 22pf
dan sambungkan seperti gambar di petunjuk awal
di bagian menggunakan xtal dan ubah dusebit

rangkaian tetap sama seperti jam_sederhana
hanya tambahan xtal pada kaki 4 dan 5 serta 
masing kaki xtal dihubungkan ke GND oleh
capacitor 22pf

*/

#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

int jam=0, min=0, detik=0;

void segmen (int angka)

{

  switch (angka)        
          {

case 0 :  { PORTB =0b1000000; break ; }
        case 1 :  { PORTB =0b1111001; break ; }
        case 2 :  { PORTB =0b0100100; break ; }
        case 3 :  { PORTB =0b0110000; break ; }
        case 4 :  { PORTB =0b0011001; break ; }
        case 5 :  { PORTB =0b0010010; break ; }
        case 6 :  { PORTB =0b0000010; break ; }
        case 7 :  { PORTB =0b1111000; break ; }
        case 8 :  { PORTB =0b0000000; break ; }
        case 9 :  { PORTB =0b0010000; break ; }
        case 10 : { PORTB =0b1111111; break ; }  //blank biar ga berbayang
 }


}


ISR(TIMER1_COMPA_vect) 




  detik ++;

  if ( detik == 60)  
     {  detik=0;
   min++;
}  

  if ( min == 60)
      { min = 0;
   jam++ ;   
       }
  
  if (jam == 24) jam=0;
          

}



int main(void)

{

int digit;


   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
   OCR1A  = 62499; //compare the CTC A 
   TCCR1B |= (1 << CS11)|(1 << CS10); // Start timer at Fcpu/64



DDRB  |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
DDRD  |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);

DDRD  &= ~(1<<PD4) & ~(1<<PD5)  ;


sei();


while(1)

{




if(TCNT1 < 31250) PORTD |=(1<<PD6) ; 
else PORTD &=~(1<<PD6) ; 


segmen(10);
digit = jam/10;
PORTD |= (1<<PD0);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1);
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min/10;
PORTD |= (1<<PD2);
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min%10;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);




if (bit_is_set(PIND, PIND4))
   {
     jam++;
if(jam==24) jam =0;
     _delay_ms(100);

   }

if (bit_is_set(PIND, PIND5))
   {
     min++;
if(min==60) min=0;
 _delay_ms(100);

   }



}

return 0;

}











hasilnya dapat dilihat seperti berikut :



Share:

Senin, 01 Agustus 2011

Perkenalan AVR STUDIO

Untuk melakukan programming ke Chip AVR diperlukan software developer dan juga software downloader. Sedangkan untuk Hardware downloader dibahas di posting sebelumnya. Kali ini kita gunakan software komplit buatan atmel (si empunya avr) plus WINAVR untuk coding dalam bahasa C.

Asumsikan bahwa hardware programmer sudah terpasang dan terinstall driver nya dengan benar. Pada contoh dibawah kita gunakan programmer berbasis STK500 dan Chip yg dipakai ATTiny2313.

Buka AVR studio , pastikan WINAVR sudah terinstall sehingga bisa menggunakan bahasa GCC. Pilih NEW PROJECT sehingga muncul halaman pada gambar dan pilih juga folder yang digunakan, sebab semua file akan ditempatkan di folder tersebut



pilih jenis simulator dan IC yang digunakan
standar yg digunakan adalah AVR SIMULATOR dan sesuai IC yang digunakan yaitu ATTINY2313





untuk mengecek apakah programmer & hardwarenya sudah siap digunakan, pastikan menggunakan com port yg sesuai dengan com port programmer. Kemudian lakukan langkah berikut ini:

Set frekuensi programmer ke frekuensi yang 1/4 lebih rendah dari frek oscillator dari avr.
Dari pabriknya, AVR ( kali ini diambil contoh attiny2313) secara default menggunakan internal oscilator 8 MHZ dan clocknya di bagi 8 (clock div /8) sehingga CPU bekerja di 1MHZ
sehingga set programmer pada setting yg 1/4 lebih kecil yaitu 57.6khz



lakukan "READ SIGNATURE" untuk mengecek koneksi programmer & ATtiny2313

Jika hasil compile script di developer window anda anda sukses, maka lakukan download file HEX ke chip AVR sesuai gambar berikut :

file hex ada di : /folderanda/default/namaproject.hex




Dari pabriknya AVR memiliki setting clock internal sebesar 1 Mhz, jadi jika menggunakan clock external seperti xtal oscilator perlu dilakukan setting fusebit seperti contoh pada gambar berikut:



Mudah bukan ?
Share:

BASIC OUTPUT & INPUT dengan ATTINY 2313

Siapkan bahan2 sesuai skematik berikut ini :



dan jangan lupa programmer AVR nya ...

PROJECT 1 LED BLINK

#define F_CPU 1000000UL // frekuensi clock internal
#include <avr/io.h> // definisi standar io port
#include <util/delay.h> // definisi include untuk delay


int main(void)

{



DDRB=0b1 ; // Inisialisasi bahwa port B0 adalah output , jika pake port B5 ya inisialisai jadi DDRB=0b100000;



while(1)

{

PORTB=0b1; //port B0 = 1 atau nyala

_delay_ms(1000); //delay

PORTB=0b0; //port B0 = 0 atau mati

_delay_ms(1000); //delay

}

return 0;




PROJECT 2 LED BLINK

Gunakan 2 LED di port B#0 dan B#5
Kita akan memperkenalkan operasi bit untuk inisialisasi rangkap

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>


int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; // inisialisai menggunakan operasi bit

PORTB |= (1<<PB5) ; // operasi bit PORT B#5 = 1
PORTB &= ~(1<<PB0) ; //operasi bit PORT B#0 =0

while(1)

{

PORTB ^=(1<<PB5) ; // operasi bit toggle atau NEGASI/KEBALIKAN dari posisi bit sebelumnya
PORTB ^=(1<<PB0) ;

_delay_ms(1000);



}

return 0;

}




PROJECT - MEMBACA TOMBOL

kali ini kita akan membaca tombol dan kita gunakan untuk mengatur nyala matinya LED
kita memanfaatkan syntax " if (bit_is_set(PIN#, PIN##)) "

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; //inisialisasi port B#5 & B#0 sebagai output
DDRB &= ~(1<<PB1) & ~(1<<PB2) ; //inisialisasi port B#1 & B#2 sebagai input

PORTB |= (1<<PB5) | (1<<PB0); //kita SET LED NYALA semuanya

while(1)

{


if (bit_is_set(PINB, PINB1)) // membaca jika port input B#1 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB5) ; //TOGGLE LED di PORT B#1
_delay_ms(500);

}

if (bit_is_set(PINB, PINB2)) // membaca jika port input B#2 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB0) ; //TOGGLE LED di PORT B#2
_delay_ms(500);

}
}

return 0;

}



Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (59) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (28) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika