alexa-tracking
Kategori
Kategori
Home / FORUM / All / Hobby / Hobby & Community /
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
KASKUS
51
244
https://www.kaskus.co.id/thread/000000000000000002654259/hobby-elektronika-digital-microcontroller-amp-solder-menyolder-gabung-sini-yuks

Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks

DIGITAL ELECTRONICS HOBBY FORUM




Spoiler for apa aja sih yang dibahas?:


Spoiler for "Hobby Microcontroller Itu Mahal ? Kreativitasmu Itu yg Mahal Gan !":




UPDATE 8/JUNI/2014

DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !



Selengkapnya dibahas di sini gan !!

CLINOMETER SEDERHANA MEMANFAATKAN ADC



Selengkapnya dibahas di post berikut




Spoiler for Buka Jika Mau Paket Belajar:


Proyek2 micro yg sudah jadi
Quote:



I.N.D.E.X F.O.R.U.M

Quote:




Biar ngiler, ane kasih contoh hasil karya TS...






Spoiler for Contact TS lewat dimari yahh:



.
Diubah oleh ahocool
SOURCE CODE kita bahas satu persatu


inisialisasi awal

Code:

#define F_CPU 7372800UL //frek xtal yang dipake
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>


//rumus penentuan baudrate

#define USART_BAUDRATE 9600 // baudrate 9600 bps
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)




//deklarasi menu & tulisan .
// digunakan memori flash(PROGMEM) karena attiny cukup kecil RAM nya

const char menu[] PROGMEM = "


\r* AVR ATTiny2312 - Rs232 COM by: ahocool@gmail.com *
\r Petunjuk:
\r ** TRANSMIT: Tekan Tombol Keyboard 1 & 2 untuk On/Off LED 1 & 2
\r ** RECEIVE: Tekan Tombol Switch untuk Menerima Data dari Micro
\r" ;
const char tombol[] PROGMEM ="
\r Tombol Ditekan
\r" ;
const char led1on[] PROGMEM ="
\r LED 1 ON
\r" ;
const char led1off[] PROGMEM ="
\r LED 1 OFF
\r" ;
const char led2on[] PROGMEM ="
\r LED 2 ON
\r" ;
const char led2off[] PROGMEM ="
\r LED 2 OFF
\r" ;

int led1, led2 ; //variabel untuk led





Inisialisasi USART dari attiny2313

Code:


void init_usart(void)
{

cli();

UCSRB |= (1 << RXEN) | (1 << TXEN); // kirim & terima
UCSRC |= (1 << UCSZ0) | (1 << UCSZ1);
UBRRL = BAUD_PRESCALE;
UBRRH = (BAUD_PRESCALE >> 8);
UCSRB |= (1 << RXCIE); //interupt serial usart
sei();
}





Routine pengiriman text lewat progmem/flash memory

Code:


//function untuk mengirim text single

void USART_Tx(unsigned char data)
{

while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty
UDR = data; // Send data to the computer

}

//function untuk kirim kalimat

void kirim_text(const char *data)
{
while (pgm_read_byte(data) != 0x00)
USART_Tx(pgm_read_byte(data++));
}





Interupt saat menerima input data serial dari PC

Code:


ISR(USART_RX_vect)
{
char databyte;


\t databyte = UDR; \t

\t
switch (databyte) // pemilah data yg diterima dari PC
\t
\t\t{
\t

\t case 0xD : { // jika yg diterima ENTER (0xD)
kirim_text(menu) ;
\t\t\t break; }
\t case '1' : { //jika diterima karakter 1
\t\t
if(led1 == 0) // jika kondisi awal 0
{
\t\t\t PORTB ^=(1<<0); //toogle dari kondisi sebelumnya
kirim_text(led1on) ;//kirim kalimat
\t\t\t led1=1;
\t\t\t }
\t\t\t else
\t\t\t {
\t\t\t PORTB ^=(1<<0); //toogle dari kondisi sebelumnya
kirim_text(led1off) ; //kirim kalimat
\t\t\t led1=0;
\t\t\t }
\t\t\t break; }
\t case '2' : {
if(led2 == 0) // jika kondisi awal 0
{
\t\t\t PORTB ^=(1<<1); //toogle dari kondisi sebelumnya
kirim_text(led2on) ; //kirim kalimat
\t\t\t led2=1;
\t\t\t }
\t\t\t else
\t\t\t {
\t\t\t PORTB ^=(1<<1); //toogle dari kondisi sebelumnya
kirim_text(led2off) ; //kirim kalimat
\t\t\t led2=0;
\t\t\t }
\t\t\t break; }

\t\t
\t\t}
}






Interupt saat Tombol ditekan dan mengirim data ke PC

Code:


SIGNAL (SIG_INT0)
{

kirim_text(tombol); //kirim kalimat bahwa tombol ditekan

}




Program utama / main

Code:


int main(void)
{



DDRB=0b11; //B0,B1 = Output ke led

MCUCR |= (1<<ISC01) | (1<<ISC00) ; //inisialisai interupt 0 rise edge

GIMSK |= (1<<INT0) ; // tombol ada di INT 0


led1=0; //kondisi awal led1
led2=0; //kondisi awal led2

init_usart();

kirim_text(menu) ;

PORTB=0b00; // matikan LED



\twhile(1) //muter tiada henti
\t {


\t }

return 0;
}







Jika sudah di compile & didownload ke AVR, maka hubungkan output MAX232 ke PORT Serial PC ato port USB-serial Converter. Gunakan Hyperterminal/putty/secureCrt untuk melakukan koneksi ke COM PORT dari serial port/Usb-serial converter dengan setting BAUDRATE 9600bps

hasilnya seperti video dibawah




SELAMAT MENCOBA
×
GDP Network
© 2019 KASKUS, PT Darta Media Indonesia. All rights reserved
Ikuti KASKUS di