PIC ile sd kart üzerinden wav müzik dosyası çaldırma (?)

Başlatan zamzam23, 29 Kasım 2011, 15:52:41

zamzam23

Benim öğrenmek istediğim;
1-sistemin çalışma prensibi ne olacak?İnternette bulduklarıma göre, pwm ile basit bir dac ile bu iş halledilmiş. Bende buna yogunlasmak istiyorum ancak çalışma mantıgı nedir bunun? sd karttan byte byte okuyup pwm e mi girmeliyim?

2-CCS de hazır kütüphaneler var hangisi üzerine yogunlasmalıyım? mmc_spi.c? mmcsd.c?

3-winimage programı,böyle bir projenin hangi kısmında kullanılıyor?

Kabil ATICI

Birinci soru konusunda fazla birşey söyleyemem ama sonuça aynı olan bir iş birkaç yoldan gidilerek yapılabiliyor.
Genelde gördüğüm örneklerde önce bir mp3 kod çözücü ardından dac kullanılıyor. Sonrada kuvvetlendirici.

MP3 kod çözücü yazılım olarak gerçekleştirilebilirse bu bölüm atlanabilir. Dosyalar wav biçiminde ise doğrudan dac ile işlenebilir.

SD kartlar konusunda ; sd kartın iki iletişim modu var. Birincisi kendi iletişim yöntemidir. (her veri iletişiminde crc işlemleri var.) İkinci iletişim yöntemi isp ki, bu bazı işlemcilerin programlanmasında kullanılan nispeten daha kolay bir iletişim yöntemidir. (kartlar ilk kendi iletişim yönteminde gelmekte ve spi mod ataması gerekiyor)

winimage sanırım sd karta yazılacak dosyalarla ilgili olarak kullanılıyor. Burada kendi dosya sistemini oluşturma şansınızda var.
ambar7

-Hasan-

Merhabalar;

Böyle bir çalışmayı ben de yaptım. İlk önce SD karta 8 bit MONO WAV dosyaları attım. Ondan sonra WINHEX programıyla attığım WAV dosyasının başlangıç adresini buldum. (Bu yöntemi FAT ' ı işin içine karıştırmamak için yaptım.)  PIC ' e yüklenen program da ilk önce kartı initalize ettikten sonra, bu program ile bulduğum adresi gönderiyor. Karttan her seferinde 512 byte bilgi okutturuyorum, okuduğum 512 byte ı ilk önce RAM da bir buffer de depolayıp, TIMER kesemesiyle de uygun zamanlamayla çıkışa aktarıyorum. Kesme frekansını WAV dosyasının örnekleme frekansı belirliyor; 44.1 (ben kullanıyorum), 48, 96 ... KHZ. Sistemin algoritması kabaca böyle; okunan bir sektörü ilk önce buffer de depolayıp kesmeyle çıkışa aktarmak.

Ben PIC18F4620 kullandım, 16F le olacak bir iş değil zaten. DAC olarak dediğiniz gibi PWM kullandım. PWM frekansını en yüksek değere ayarladım, çıkışı da 7.5 K + 1 nF ile filtreledim. (benim konuya yardımcı olan hocalarımızın yardımlarıyla hesapladık, onlara çok teşekkür ediyorum):

https://www.picproje.org/index.php?topic=35644.0

PIC yazılımını ASM ile yazdım. C değil maalesef.  :(

zamzam23

cevaplar için teşekkür ederim. ancak hala konuyu tam netleştiremedim kafamda. nasıl yapacagım konusunda birkaç şey daha sormak istiyorum.

1-çıkışa aktarmaktaki maksat, pwm in frekansını mı değiştiriyoruz yoksa duty degerını mı?

2-benim elimdeki mp3 şarkıları,herhangı bir programla wav a cevirmem yeterli mi? yani 8 bit mono wav dosyası nasıl olusturulur ben bu mp3 leri bu formata nasıl çevirebilirim?

3-winhex programıyla wav ın baslangıc adresını neden buluyoruz o kısmı da anlayamadım. sd kartı nereden okumaya baslayacagız bunu mu bulmak ıcın?

4-kartı initalize etme kısmını hazır kütüphane halledecek sanırım ama yine de sorayım, kabaca anlatımısın nasıl yapılıyor, bu kısımda neler yapılması gerekıyor?

-Hasan-

Alıntı Yap1-çıkışa aktarmaktaki maksat, pwm in frekansını mı değiştiriyoruz yoksa duty degerını mı?

Frekans en yüksek değerde sabit. Duty değerini değiştiriyoruz.

Alıntı Yap2-benim elimdeki mp3 şarkıları,herhangı bir programla wav a cevirmem yeterli mi? yani 8 bit mono wav dosyası nasıl olusturulur ben bu mp3 leri bu formata nasıl çevirebilirim?

Evet MP3 leri 8 bit MONO WAV ' a çevireceksiniz. Ben bu programı kullanıyorum:

http://www.gezginler.net/modules/mydownloads/singlefile.php?download=mp3-to-wav-converter&lid=1313

Bunda örnekleme, derinlik... istediğiniz gibi ayarlayabiliyorsunuz.

Alıntı Yap3-winhex programıyla wav ın baslangıc adresını neden buluyoruz o kısmı da anlayamadım. sd kartı nereden okumaya baslayacagız bunu mu bulmak ıcın?
WAV dosyasını çalabilmek için dataların hangi sektörden başladığını bilememiz gerekiyor, bu yüzden. Eğer FAT kütüphanesini kullanabilirseniz dosyaları direkt PIC ile isimleri ile birlikte bulabilirsiniz. Ben, bu işi çözmek için henüz FAT ' ı işin içine karıştırmadım. Aşağıdaki linkten WINHEX programını indirebilirsiniz, program demodur ancak biz sadece dosyanın adresini bulacağımızdan bizim için yeterli:

http://www.winhex.com/



Alıntı Yap4-kartı initalize etme kısmını hazır kütüphane halledecek sanırım ama yine de sorayım, kabaca anlatımısın nasıl yapılıyor, bu kısımda neler yapılması gerekıyor?

Ben hazır kütüphane kullanmadım. ASM ile yazdığım için hazır kod da yok zaten. Ben SD kart kullanımını PICPROJE E - DERGİ 2 ' deki arslan74 hocamızın yazısından öğrendim oraya bakabilirsiniz. Ayrıca; ferdem hocamızın da bununla ilgili bir yazısı var, ona da çok teşekkür ederim bazı hatalarımı onun sayesinde düzeltmiştim:

http://www.fatiherdem.net/sd-karttan-ilk-sektoru-okuyalim/

zamzam23

Alıntı yapılan: -Hasan- - 29 Kasım 2011, 17:16:22
WAV dosyasını çalabilmek için dataların hangi sektörden başladığını bilememiz gerekiyor, bu yüzden. Eğer FAT kütüphanesini kullanabilirseniz dosyaları direkt PIC ile isimleri ile birlikte bulabilirsiniz. Ben, bu işi çözmek için henüz FAT ' ı işin içine karıştırmadım.

o halde şunu diyebilir miyiz:

karta 15 tane wav dosyası attık bunların her birinin baslangıc adreslerını bılmemiz lazım kı istediğimiz dosyayı oynatabilelim. bunu bılmek için de fat sistemini öğrenmeliyiz. siz karta tek dosya atıp tek dosya mı çaldırıyorsunuz?

-Hasan-

Çalacağım WAV dosyalarını arka arkaya karta atıyorum. Arka arkaya atıldığı zaman adresler hep birbirinin devamı oluyor. Yani: ilk attığım dosyanın başlangıç adresini programa girdiğimde attığım bütün şarkılar kesintisiz olarak çalıyor. Hepsini ayrı ayrı bulmamıza gerek kalmıyor.

zamzam23

anladım ama farklı parcaları farklı sıralarda calmak istersek fat ı öğrenmem gerekiyor sanırım.
siz fat ı kullanmadım dedınız ama peki sd kartı formatlarken fat, fat32 seklınde secenekler gelıyor. bunu biliyor musunuz.burada fat ı seçerek mı formatlamalıyım. pic ile karttan okuma yaparken hangi secenekte ne gibi farklılıklar olur. fat formatlarsam fat, fat32 formatlarsam fat32 komutlarını mı öğrenmelıyım. zaten sadece parcaların boyutlarını hesaplayan komutu ogrenırsem sımdılık yeterlı olur benım ıcın.

-Hasan-

Şarkıları farklı sıralarda çalmak için her şarkının adresini ayrı ayrı bilmek gerekir. Bunu da anlattığım yöntemle, FAT olmadan yapabilirsiniz. Ama FAT ' ı çözmek en iyisi, ben de çözeceğim. Eğer benim anlattığım şekilde bu işi yapacaksanız kartı nasıl formatladığınızın (FAT16, FAT32) bir önemi yoktur. Ama FAT kullanarak yaparsanız, FAT kütüphaneleri için bu seçenekler önemli (FAT12, FAT16) bir de "Ayırma Birimi Boyutu" diye bir seçenek var o da önemli; hatta buradaki bir başlıkta sırf bu yüzden FAT kütüphanesinin çalışmadığını, ayarlar doğru yapıldıktan sonra çalıştığını öğrendim.

Kolay gelsin.

zamzam23