Arkadaşlar merhaba,
PIC18F45K22 ile micro sd carda başlangıç olarak sadece text dosyası oluşturmaya çalışıyorum. İnternetten bulduğum örnek projeyle denedim fakat bir türlü çalıştıramadım. Hazır sd card modülü kullanıyorum. İşlemcinin RD0 pinine led bağlayıp flaş yaptırıyorum picin çalıştığını görmek için. Fakat sd card da herhangi bir dosya oluşmuyor. Daha önce tecrübe edenlerden yardımlarını bekliyorum. Proje dosyalarını linkten indirebilirsiniz.
https://wetransfer.com/downloads/7a58459ec27b37374ef67cb8d7671eb420190912090206/86ed6bec865403d00ea329500df4a2ab20190912090206/67ffa3 (https://wetransfer.com/downloads/7a58459ec27b37374ef67cb8d7671eb420190912090206/86ed6bec865403d00ea329500df4a2ab20190912090206/67ffa3)
İyi çalışmalar.
https://www.picproje.org/index.php?topic=54274.0 (https://www.picproje.org/index.php?topic=54274.0)
(https://i.ibb.co/kHmdVfN/16-DC4-FDE-7350-46-DA-9-E48-7-C0-FEC436-E1-D.jpg) (https://ibb.co/kHmdVfN)
Devre resimde görüldüğü kadar basit de olsa bir türlü çalıştıramadım.
Mplab xc8 derleyicisi kullanan arkadaşların yardımlarını bekliyorum.
Kullandığım sd cardı şekildeki gibi biçimlendirdim.
(https://i.ibb.co/r5Q0Zjw/Ekran-Al-nt-s.png) (https://ibb.co/r5Q0Zjw)
Pogramda ki ffconf.h dosyasında ki
#define _MIN_SS 512
#define _MAX_SS 512
değerlerini
#define _MIN_SS 4096
#define _MAX_SS 4096
şeklinde yeniden düzenlediğimde
main.c de ki bu satırdan hata alıyorum.
FATFS FatFs; /* FatFs work area needed for each volume */
Başka nerede değişiklik yapmam gereklidir.
FAT16 dene birde.
...SS Sector Size diye hatırlıyorum,
oda kolay kolay 512 den farklı olmaz.
Fiziksel olarak kullanılan belleğin okuma yapısı ile ilgili bir durum.
Yani şurayı okumak istiyorum nasıl diyebiliyoruz,
istediğimiz byte adresi söyleyip direk okuyabiliyor muyuz,
illaki 512 byte ın katları şeklinde mi adres söyleyip okumak zorundayız,
yani eeprom lardaki page adres ile okuma gibi düşünülebilir.
Byte addressable, sector addressable.
Byte adresi ile erişilebilir,
sektör adresi ile erişilebilir,
diye sd kartta bu bilgi bulunuyor.
Ayırma birimi boyutu ise Cluster Size
bu bilgi zaten mcu daki Fat kütüphanesi tarafından
Sd kart tan (Fat sisteminde boot sector denen sector0 dan okunuyor)
okunup bulunan bir değer,
program yazarken girilmesi gereken bir değer değil.
(https://i.ibb.co/vkV5Sr9/Ads-z.png) (https://ibb.co/vkV5Sr9)
Hocam sd cartım da FAT16 seçeneği yok. Önerebileceğiniz farklı bir yol var mı?
commmand prompt u yönetici olarak açıp,
format x: /fs:FAT
yada
format x: /fs:FAT16
şeklinde denediniz mi? "x" sd kartınızın birim adı.
4gb dan büyük kartlar Fat16 ile (doğal yollardan) formatlanamaz.
Mcu ile sd kart işi biraz sıkıntılı.
Problem çıkabilecek çok yer var.
4gb 3-5 farklı kartla programı denemekte yarar var.
Program zaten bir dert öyle çok düzgün çalışan bir kütüphane yok.
Lojik analizör ile spi iletişimini adım adım takip edip kontrol etmek lazım.
Tabi bunun için sd kart nasıl çalışıyor bilmek lazım.
Bu konuda yazılar var,
@z hocanında sitesinde böyle bir yazı vardı,
forumdada paylaştıkları vardı.
Sd kart ile konuşunca Fat sistemi belası var dah.
Varda var.
Bulabildiğin bütün örnekleri tek tek denemek daha kolay bir yöntem,
biri olmazsa diğeri çalışacaktır.
@RaMu hocam fat16 nın sınırı 4gb değil 2gb cluster sınırıda 65535, fat32 2tb kadar cluster ise 32kb tek bir parça dosya boyutu maksimum 32gb sınırı diye biliyorum yanlışım varsa düzeltin.
Bugün 512mb sd card buldum Fat16 ya biçimlendirdim ve sonuç başarılı oldu. Kullandığım 16gb sd card Fat16 ya formatlanmadı. Hatayı ekran görüntüsü olarak paylaşıyorum.
(https://i.ibb.co/XbBvdWB/Ads-z.png) (https://ibb.co/XbBvdWB)
@PICaso Disk yönetiminden sd kartı bölümlere ayırıp bölümün birisini 2 gb altı oluşturup ayırma birim boyutunu 512 bayt yapıp formatlamayı dener misin. Şu an yanımda taşınabilir hafıza olmadığı için deneme imkanım yok. Sonucu bende merak ettim şimdi ::ok
Alıntı yapılan: yas - 24 Eylül 2019, 11:14:36@PICaso Disk yönetiminden sd kartı bölümlere ayırıp bölümün birisini 2 gb altı oluşturup ayırma birim boyutunu 512 bayt yapıp formatlamayı dener misin. Şu an yanımda taşınabilir hafıza olmadığı için deneme imkanım yok. Sonucu bende merak ettim şimdi ::ok
Tamamdır hocam deneyip dönüş sağlayacağım.
Alıntı yapılan: yas - 24 Eylül 2019, 11:14:36@PICaso Disk yönetiminden sd kartı bölümlere ayırıp bölümün birisini 2 gb altı oluşturup ayırma birim boyutunu 512 bayt yapıp formatlamayı dener misin. Şu an yanımda taşınabilir hafıza olmadığı için deneme imkanım yok. Sonucu bende merak ettim şimdi ::ok
Hocam 2 gb altı bir çok değerde denedim ama ayırma birim boyutu 1024 baytın altına düşmedi. Denediğim değerlerde de olumlu bir sonuç alamadım. Çalışan sd card 512 mb ayırma birim boyutu ise 8192 bayt. Bu değerler için uyguladım 16 gb lik kartı yine de çalışmadı.
belki sendeki kart sdxc olabilir.
Konuyla ilgisi yok ama şuraya yazalım birine lazım olur belki; Fat dosya sistemlerinde ayırma birimi kaç ise minimum dosya boyutu o kadar olmakta. Örneğin; ayırma birimi 512 bayt ise 1 bayt lık dosya bile olasa hafızada 512 bayt işgal edilir. (büyük israf :D )
Alıntı yapılan: yas - 24 Eylül 2019, 15:31:24belki sendeki kart sdxc olabilir.
Konuyla ilgisi yok ama şuraya yazalım birine lazım olur belki; Fat dosya sistemlerinde ayırma birimi kaç ise minimum dosya boyutu o kadar olmakta. Örneğin; ayırma birimi 512 bayt ise 1 bayt lık dosya bile olasa hafızada 512 bayt işgal edilir. (büyük israf :D )
Benim kartım 16gb olduğu için HC sınıfına giriyor. Detaylı bilgi için :https://kb-tr.sandisk.com/app/answers/detail/a_id/15157/~/sd%2Fsdhc%2Fsdxc-%C3%96zellikleri-ve-uyumlulu%C4%9Fu (https://kb-tr.sandisk.com/app/answers/detail/a_id/15157/~/sd%2Fsdhc%2Fsdxc-%C3%96zellikleri-ve-uyumlulu%C4%9Fu)
16 gb olan kart en soldaki sutundaki gibi davranmalı,
en altta sd ver2+ Block Addreds ile sonlanmalı.
Lojik analizör ile bakıp burada paylaş.
(http://elm-chan.org/docs/mmc/i/sdinit.png)
Ayrıca linkten
Initializing high-capacity cards
kısmınada bakabilirsin.
http://elm-chan.org/docs/mmc/mmc_e.html
Buraya kadar tamamsa
@yas ın anlattığı gibi
16gb olan kartı disk bölümleme ile bölümleyip
bu bölümü Fat16 formatlayıp elindeki kütüphane ile kullanma ihtimalin olabilir.
En iyisi 4gb kart bul onunla çalış
yada daha iyisi Fat32 destekleyen bir kütüphane bulacaksın.
@yasFat16 ilk çıktığında 2gb a kadar kartları destekliyor
ardından 4gb a kadar kartları desteklemesi sağlanıyor.