KOMUNITAS
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
ATTINY2313 I2C MUSIC PLAYER





setelah berhasil membuat downloader EEPROM serial (I2C) kepikiran juga buat ngemanfaatin eeprom ini untuk nyimpan sesuatu. Bisa aja digunakan menyimpan data text untuk project lovehurts sehingga tulisannya lebih panjang. Tapi kali ini akan saya pergunakan untuk menyimpan data wav

Langkah-langkah yang perlu dikuasai adalah:

1. Memutar wav file (PCM 8bit mono) yang pernah dibahas disini

2. Akses EEPROM dengan I2C menggunakan library Pfleury , untuk librarynya bisa didownload disini


Kita bahas dulu cara akses I2C menggunakan TWIMASTER Pfleury, ada i2cmaster.h (include) i2cmaster.S (add source code) dan twimaster.c (dicopy saja). Secara default library ini menggunakan aturan port SDA / SCL dari ATMEGA, sehingga untuk ATTiny2313 edit i2cmaster.S dibagian ini :

Code:


;***** Adapt these SCA and SCL port and pin definition to your target !!
;
#define SDA 5 // SDA Port B, Pin 5
#define SCL 7 // SCL Port B, Pin 7
#define SDA_PORT PORTB // SDA Port B
#define SCL_PORT PORTB // SCL Port B




Penggunaan library ini menggunakan beberapa perintah seperti berikut :


#define Dev24C64 0xA0

define ini berguna sebagai addressing i2C, karena bus i2C dapat dicascade





untuk IC 24C64 menggunakan addressing 8bit = 1,0,1,0, A2, A1, A0, [direction] , sehingga jika menggunakan 1 buah ic saja maka nilai define adalah 0xA0

i2c_init(); : inisialisasi awal

i2c_start_wait(Dev24C64+I2C_WRITE);
i2c_rep_start(Dev24C02+I2C_READ);

masukkan adress IC + Arah , dalam include sudah di define I2C_WRITE = 0 , I2C_READ =1

sequence untuk menulis :

Code:

i2c_start_wait(Dev24C64+I2C_WRITE)
i2c_write(0x05); // tulis alamat memory = 5
i2c_write(0x75); // masukkan nilai 0x75ke EEPROM
i2c_stop(); // set stop conditon = release bus




sequence untuk membaca data secara satu persatu :

Code:


i2c_start_wait(Dev24C02+I2C_WRITE); // awal menulis alamat dulu
i2c_write(0x05); // tulis alamat yang akan dibaca = 5
i2c_rep_start(Dev24C02+I2C_READ); // mode baca
baca = i2c_readNak(); // baca byte dari EEPROM
i2c_stop();



sequence untuk membaca seluruh data EEPROM secara berulang :


Code:


i2c_rep_start(Dev24C02+I2C_READ); // mode baca
for(;/;)/ baca=i2c_readAck(); // baca terus berulang



setelah mengerti langkah2 ini, maka isi dari ic eeprom dapat diakses dengan mudah.

>> UBAH FILE AUDIO MENJADI FORMAT WAV -PCM -8bit -Mono - 6000hz (48kbps)

caranya ? gunakan software WAVEPAD atau yang lain ..untuk IC 24C64 panjang audio yang dapat diputar berkisar 1.2 - 1.5 detik ...wah pendek banget...ya karena memang tanpa kompresi kok...
selanjutnya jangan lupa download langsung file wav tadi ke dalam ic seperti penjelasan sebelumnya.


SKEMATIK :


*)) ralat R2 dan R3 = 4K7 ohm


lepaskan koneksi ke SDA/SCL ke MOSI/SCK (setelah pull up 4k7)pada saat programming, sehingga IC eeprom tidak terhapus dan pin ISP tidak ter pull up



SCRIPT

Jika masih bingung, harap membaca pembahasan sebelumnya untuk memutar wav di mega8515 , karena hanya diubah sedikit saja

Code:


#define F_CPU 8000000UL
#include <stdint.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "i2cmaster.h"


//#define SAMPLE_RATE 8000;
#define Dev24C64 0xA0


int sample_count;

//inisialisasi PWM

void pwm_init(void)
{
// gunakan OC1A sebagai output
DDRB = _BV(PB3);

/*
* clear OC1A on compare match
* set OC1A at BOTTOM, non-inverting mode
* Fast PWM, 8bit
*/
TCCR1A = _BV(COM1A1) | _BV(WGM10);

/*
* Fast PWM, 8bit
* Prescaler: clk/1 = 8MHz
* PWM frequency = 8MHz / (255 + 1) = 31.25kHz
*/
TCCR1B = _BV(WGM12) | _BV(CS10);

/* set initial duty cycle to zero */
OCR1A = 0;

/* Setup Timer0 */

TCCR0B|=(1<<CS00);
TCNT0=0;
TIMSK|=(1<<TOIE0);
sample_count = 4;
sei(); //Enable interrupts
}



ISR(TIMER0_OVF_vect)
{

sample_count--; // menggunakan 4 step
if (sample_count == 0)
{
sample_count = 4;

OCR1A = i2c_readAck(); // baca memory secara loop

}
}



int main(void)
{

i2c_init();
pwm_init();

//inisialisasi baca secara terus menerus
i2c_rep_start(Dev24C64 + I2C_READ);

while(1);//muter terus
}






hasilnya seru kayak gini nih......




kalo bisa pake memory yang lebih besar biar lebih panjang lagunya




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