Kaskus

Hobby

ahocoolAvatar border
TS
ahocool
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
DIGITAL ELECTRONICS HOBBY FORUM

Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks


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 !

Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks

Selengkapnya dibahas di sini gan !!

CLINOMETER SEDERHANA MEMANFAATKAN ADC

Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks

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 14-06-2025 11:27
0
1M
8.6K
GuestAvatar border
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Hobby & Community
Hobby & Community
KASKUS Official
10.5KThread7.2KAnggota
Tampilkan semua post
ahocoolAvatar border
TS
ahocool
#4719
BELAJAR ACCESS SD CARD CARA SIMPLE DENGAN ATTINY2313

==PART 3==

ATTINY2313 TALKING MACHINE



sebelum lanjut, kita ingat project wav player dengan memory I2C, kapasitasnya kecil banget, kenapa tidak kita pakai SD card saja ?

ternyata kita tidak perlu pusing2, karena jika memainkan attiny pada clock 8mhz, maka waktu access SD card dan PWM sangatlah pas sehingga cukup memainkan beberapa nilai delay saja sudah mendapatkan suara yang cukup bagus (file wav PCM 6000hz 8bit)

kita ingat dulu code untuk membuat audio via PWM - OC1A, kita hilangkan sekarang beberapa pembagian dan script jadi lebih simple

Code:

[size="1"]void pwm_init(void)
{
/* use OC1A pin as 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;[/size]
}




dan kita mainkan delay pada code pembacaan SD CARD melalui USI, untuk clock 8mhz dan file format 6000hz 8bit mengggunakan delay seperti berikut

Code:
[size="1"]
unsigned char SPI_write(unsigned char ch){
USIDR = ch;
USISR |= (1<<USIOIF);

do {
USICR |= (1<<USIWM0) | (1<<USICS1) | (1<<USICLK) | (1<<USITC);

[color=red]_delay_us(9);[/color]

} while((USISR & (1<<USIOIF)) == 0);

return USIDR;
}[/size]



THAT"S IT ....hanya itu yang dirubah, selanjutnya simpan file wav pada SD card dan dengan bantuan software winhex, kita dapat membaca sector dimana file dimulai. Jika format SD card adalah FAT16, maka jika file dicopy setelah di format ulang akan diletakkan di posisi sector 555. Karena memory attiny yang kecil, maka ga usah dibingungkan dengan pembacaan root, FAT1, FAT2 dan sebagainya. Kita baca dulu saja via winhex kemudian dimanfaatkan. Seperti pada skematik berikut, saya akan memutar audio setelah tombol dipencet...file audio saya rekam dari laptop.


kaskus-image
(klik biar tambah gede)

audio output pada OC1A bisa menggunakan amplifier sederhana seperti diatas, atau bisa juga membuat yg lebih paten, semisal menggunakan opamp LM386 atau TDA2003 (googling aja)


Langkah selanjtunya adalah memformat SDcard dan membuat file audio yang akan diputar (bisa dipotong dari mp3 atau direkam dan jangan lupa diconvert ke WAV PCM 6000Hz 8 bit). Sebagai contoh saya mempunyai 4 file dan copykan ke SD card. Selanjutnya buka SD menggunakan winhex seperti gambar berikut :

kaskus-image

dan tampilan snapshot SD card dan file-filenya seperti berikut:

kaskus-image

untuk mengetahui awal dan akhir sector dari file maka kita baca FAT1 atau FAT2 yang berisikan informasi dari isi file. Tiap file yg ada pada SD card memiliki "alokasi" pada FAT ini dimana 2byte berarti 1 cluster dari file. Untung saja winhex memberitahu pada layar sebelah kiri kalau sedang klik pada alokasi file apa dan nomer sector berapa. seperti pada gambar diatas , kita hanya perlu mencari awal cluster dan akhir cluster (ditandai dengan FF FF). Kemudian kita catat seperti yang saya dapatkan.

Code:

tombol3.wav = cluster 2 - 18
silahkan.wav = cluster 19 - 43
tombol1.wav = cluster 44 - 62
tombol2.wav = cluster 63 - 82

ingat cluster = sector



sedangkan untuk physical sector, cukup dengan menambahkan 553 (bukan 555 karena sector 0-1 dianggap tidak ada oleh FAT16)

kaskus-image

selanjutnya scriptnya kita tweak biar tambah maknyus seperti berikut , karena ada beberapa bagian dari file yang digenerate oleh wavepad editor kudu di skip biar halus.

Code:


void SD_play(unsigned long sector_start, unsigned long sector_end) {

char i;
int byte=0;
SD_begin(sector_start);

for(i=0; i<100; i++) {
SPI_write(0xFF);

byte++;
} //biar tidak njebluk pas pencet

while(1) {


OCR1A=SPI_write(0xFF);

byte++;

if(byte>= 512 && byte<515)OCR1A=0x80; //silent

if(byte >= 515) {
OCR1A=0x80;//silent

CS_DISABLE();

byte =0;
sector_start++;

if(sector_start > (sector_end -7))break; //biar halus
else SD_begin(sector_start);
}
}
}




selanjutnya semua script bisa didownload dimari


hasilnya kayak gini gan ....



SELAMAT MENCOBA !!
0
Ikuti KASKUS di
© 2026 KASKUS, PT Darta Media Indonesia. All rights reserved.