24LC512 kapasitesi, Pic hafızası veya Eproma ses kayıt yöntemi

Başlatan t2, 12 Aralık 2011, 15:50:01

z

wav uzantili dosyanizdaki verileri dogrudan C programin icine gomecek hale getiren program.  http://www.cncdesigner.com/STM/wav.rar

Edit: (Asagidaki mesajlarda gundeme gelen sorunu cozuldu.)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Progrm güzel olmuş elinize sağlık. Ufak bir konu var, dataların sonuna 1 bayt fazladan ekliyor. Bir dosya denedim gerçekte olmamasına rağmen, sonuna 0x00 eklemiş. Acaba bu , dosyanın bittiğini anlamak için özel olarak mı eklenmiştir?

z

Eger hex verilerin oldugu array da en sona fazladan 1 yada 2 tane 0x00 koyuyorsa programda bug olabilir.  Fakat daha farkli bir sorun varsa ciddi olabilir.  Acikcasi sorunu anlamadim. Wiondowsun bir iki wav dosyasini cevirip dinleyince sesde bozukluk gormeyince olmustur artik deyip daha fazla kurcalamadim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

dizinin sonunda bulunan \n de çıktıya dahil edilmiş hocam başka bir sorun yok

gevv

 

t2

Önceki sayfalarda bildirdiğim gibi, 18f2550 hafızasını kullanarak sesi çalmıştım sorun yoktu.

Maliyeti düşürmek için, sonradan,  daha düşük RAMli pic ve 24LC512 kullanmayı denedim. ses kötü oldu.
24LC512 den 32 bayt  okuyorum, bu baytları hpwm ile sırayla çalıyorum. fakat kötü oluyor. okuma hızı galiba düşük . baytları tek tek okumak istedim o daha da kötü oldu.

Sonradan sesi komple okuyup RAMe atmak oradan çalmak gerektiğine kanaat getirdim.  bir de ram takmak veya rami yüksek pic kullanılacak. ama ozaman o picin epromu da yüksektir. 

Arıza olabilir diye pici değiştirdim epromu değiştirdim düzelmedi. ses kopuk çıkıyor kilitleniyor. eproımu okuma işi duruyor.bazen okuyor 2 sn sonra duruyor.

24LC512 veya benzer eepromdan sesi okuyup güzelce çalabilen var mı? nasıl yaptınız?



10dk sonra edit

Programda başka sorun varmış, şimdi güzel çalışıyor. :)

Mucit23

I2C eepromlarda aynı problemi bende yaşıyorum. Yeterli hızları yok. SPI eepromları dene. Onların hızları Bayağı yüksek.

My75

Eeprom hızı max. 400khz,ses hızı yetersiz kalıyorsa protonda,

DECLARE HBUS_BITRATE 1500  ' Max.400 ama 1500'e kadar denedim sorun yok,okuma yani ses hızlanıyor..

Aslında ses çokda kötü değil,sonuçta ses kayıt entegreleride çok kaliteli bir ses vermiyor..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

Mucit23

@My75
Birden gözlerim ışıldadı.
https://www.picproje.org/index.php/topic,36179.90.html
bu başlıkta epeyce ilerlemiştim yanlız 25A512 yi bir türlü çalıştıramadım. Tekrar I2C eepromlara dönüş yaptım.
Bu yöntemibiraz açabilirmisin. Ben ses olayları ile uğraşmıyorum ama eeproma resim datasu yükleyip resim basmaya çalışıyorum. Nasıl yapacağımı açıklarsan sevinirim.
t2 ninde işini görebilir.

t2

Her defasında okunacak örnek sayısı fazla olursa okuma süresi uzuyor ses bozuluyor.
32 tane filan fazla geldi 4-5 tane yeterli gibi.
Mesela 8 khz için, her seferinde  şu şekilde 4 örnek okuyoruz, 4x125us süre ile çalıyoruz sonra tekrar 4 tane okuyup çalıyoruz.
hbusin str buffer\4


My75

Resim datası eeprom için biraz ağır gelir ama mantığını anlatayım..

Ses ile uğraşırken birden benimde gözlerim ışıldadı :)  Ses oluyorsa resimde olur dedim..

Yerleşimi anlayabilmek için 1 piksel siyah 1 piksel beyaz 8 sıra(bar) resim yaptım.

Raw formatı halinde kaydettim ve eeproma yükledim..Ama sadece yükledim..Birşey yapamadım çünkü anladımki eeproma bu iş ağır gelecek(Hafıza olarak)

Sonra raw formatı halindeki dosyayı ponyprog ile inceledim..

Soldan sağa,üstten aşağı her piksel ilk adresten başlıyor..

İlk piksel siyah,ilk adresteki değeri 0
2. piksel beyaz,2.adresteki değeri 255


Yani anladımki siyah ve beyaz arasındaki gri tonlama 0-255 değerleri ile yapılıyor..

Renkli resim yükledim.Bu sefer her piksel 3 byte yer tutuyor.

Yani ilk piksel için
Adres 0  R
Adres 1  G
Adres 2  B

değerleri yüklenerek piksel rengi oluşturuluyor..

Umarım anlamışsındır,bunu anlamak birden heyecan verdi ama inceleyince eeprom ile zor olur dedim.En basit örnek,

320x240 piksel renkli bir resim için

Toplamda 320x240=76800 piksel

Her piksel 3 adresden oluşuyor(RGB)
3x76800=230400 byte eder.

Yani 320x240 piksel bir resim kaydetmek için

24C512=65536 adres,230400/65536=3.51 adet yani 4 adet eeprom kullanmak gerekir..Kısaca mantığı bu..

Aslında düşündümde 320x240 piksel bir Tft ekranda resim göstermek için 4 eeprom kullanmak mantıklıda olabilir.. Denenebilir..

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

My75

Tekrar düşündümde bu iş olmaz..

Diyelim pikselleri eeproma kaydettik,peki sonra ne olacak?? Hangi hız ile basacağız resimi ekrana?

Ya her pikselin latch özelliği olacak,yada tarayacağız..

Bir frame 76800 piksel dedik,RGB için 230400Hz

Resim titrememesi için saniyede 25 frame

230400x25=5.76mhz tarama 320x240 piksel için lazım..Yani eeprom ve seri ile bu iş zor :) Daha önceki heyecanımda bu yüzden gitmişti yeni hatırladım..


Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

t2

Ses tamam, görüntü yok. Demek ki  eepromdan  film oynatamayacaz.

My75

Alıntı yapılan: t2 - 27 Ocak 2012, 15:54:10
Ses tamam, görüntü yok. Demek ki  eepromdan  film oynatamayacaz.

Aynen öyle,bu işler genelde FPGA ile yapılıyor sanırım..

1024x768 piksel için gereken hız

1024x768=786432   hz  S/B
786432x3=2359296 hz  RGB
2359296x25=58982400 hz RGB oluşumu için işlemci hızı yani 59mhz...58982400/3=19.66mhz ekranda tarama hızı..Gelde pic ve eeprom  ile yap.. :)

O yüzdendirki  Lcd ve led ekranlarda kontras oranını yükselmede bu kadar zorlanmışlar,yani bu tarama frekansına cevap verecek (tepkime süresi) piksel katmanlarını (led,likit)  anca geliştirebilmişler..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

Mucit23

Aslında ben sadece monochrome resimlerle ilgileniyorum. Yani RGB yok sadece Siyah ve beyaz, 1 veya 0 var. Amacım 128X64 GLCD ye resim basmak. Bundan büyüğüyle ilgilenmiyorum. Benim 128*64 boyutunda monochrome bir resmim 1Kb tutuyor. Bu iş için tekrar düşünebilirmiyiz.