Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: z - 30 Kasım 2013, 14:25:23

Başlık: FAT yapili SD karti okumak
Gönderen: z - 30 Kasım 2013, 14:25:23
Yeni projemde bilgisayardan icine dosya konmus SD karti okumam gerekiyordu. PC de olusturulan dosya, SD kartin icine FAT yapisina uygun yerlestirildiginden islemcimin de FAT yapisini cozmesi gerekiyor.
Bununla ilgili olarak hazirladigim yazim. (http://www.cncdesigner.com/wordpress/?p=3696)
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: engerex - 30 Kasım 2013, 18:34:11
 Eline sağlık. Kısa sürede sonuca vardın.
Umarım güzel bir proje ortaya çıkar.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: muhittin_kaplan - 30 Kasım 2013, 18:43:22
Bununla ilgili bir kutuphane yaparsan bizi elmcihan dan kurtarmis olursun.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: MC_Skywalker - 30 Kasım 2013, 18:57:51
Eline sağlık. Harika bir çalışma olmuş.

Das zuper
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 30 Kasım 2013, 19:06:48
Kutuphaneyi cok yakinda yayinlayacagim.

Bir zamanlar bu is icin ne kadar RAM gerekiyor diye sormustum.

Program, dosyayi 512 byte bloklar halinde okuyor ve ihtiyac olunan RAM sadece 528 byte.


Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: Elektroemre - 30 Kasım 2013, 19:08:03
Yakın zamanda Fat32 ve LongFileName desteği de bekliyoruz Bülent hocam  :D
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 30 Kasım 2013, 19:18:52
FAT32 nin hic bir espirisi yok. Long File'inda. Bu konuya ancak piyasada 2GB SD kartlar satilmaz oldugunda bakarim artik. 2GB alana yerlestirilecek verileri CNC uygulamalarimda hayal bile edemiyorum.

FAT32 kullanmak isterseniz bu konuyu arastirirken okudugum dokumanlardan aklimda kalan, sadece FAT de 16 bit yerine 32 bir zincir halkalari kullaniliyor. Bir de Root klasoru icin ofset verilebiliyor ve root altindaki 512 dosya sayisi sorunu asilmis oluyor. Fat16 yazilimi uzerindeki cok kucuk iki retuj ile hallolacak bir konu.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 02 Aralık 2013, 04:06:57
EasySD adını verdiğim programı 2GB SD kart ile denedim ve PC'den kopyaladığım dosyaları STM32F103C8 islemciyle sorunsuz okudum.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/SD.jpg)


struct Dosya
{
   char Buffer[512];         
   int  Length; 
   int  V[2];
};

struct Dosya File;
extern void SysInit(void);
extern int fread(struct Dosya*);
extern int fopen(char*,struct Dosya*);

void SystemInit()
{
    SysInit();     
}

int main()
{
char err;

    err=fopen("BBB.TXT",&File);
    while(!err)
       {
         err=fread(&File);// 512 Byte oku     
         ....             // Okunan 512 Byte'ı kullan
         ....
       }

/* Err kodlari

   -1: Dosyanin sonuna gelindi
    0: Hata yok
    1: SD kart bulunamadi
    2: SD kart voltaji uygun degil
    3: HCSD kart kullanamazsiniz
    4: SD kart Hatasi
    5: SD kartiniz FAT16 formatiyla formatlanmamis
    6: Dosya bulunamadi
    7: Dosya okuma hatası */
    return(err);     
}


Programın linki ve detaylar için tıklayın. (http://www.cncdesigner.com/wordpress/?p=3816)
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: Ramiz - 02 Aralık 2013, 09:50:35
Mükemmel olmuş :) Congratulate!! :)

Şöyle bir kaç gün dinlendikten sonra usb flash bellek içinde bir şeyler yapmanızı bekliyoruz :) (Zira bunu çözsek, çok ama çok daha iyi olur :) )
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: FxDev - 02 Aralık 2013, 10:07:09
Elmchan kullanmamanızın nedeni nedir acaba?
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: Kazım - 02 Aralık 2013, 10:11:20
Elinize sağlık hocam
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: muhittin_kaplan - 02 Aralık 2013, 10:14:42
Alıntı yapılan: FxDev - 02 Aralık 2013, 10:07:09
Elmchan kullanmamanızın nedeni nedir acaba?
Kendi Yapacak Ya İlla.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 02 Aralık 2013, 10:18:53
Alıntı yapılan: FxDev - 02 Aralık 2013, 10:07:09
Elmchan kullanmamanızın nedeni nedir acaba?

İçinde kurt olabilir.
Yapamadım diye bir yerim şişebilir.

Bahane çok. 
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: FxDev - 02 Aralık 2013, 10:19:30
Alıntı yapılan: muhittin_kaplan - 02 Aralık 2013, 10:14:42
Kendi Yapacak Ya İlla.

Projelerde ilerledikçe insan şunu anlıyor; çok fazla kişi tarafından test edilmiş kütüphane en iyi kütüphanedir. Ha projeye özel bir şey vardır, hız/güvenlik vb. o zaman oturulup yazılabilir. Ben sadece ne farkı olduğunu merak ettim.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: muhittin_kaplan - 02 Aralık 2013, 10:20:32
Yok Yapmasın Demiyorum Yapsın.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: Elektroemre - 02 Aralık 2013, 10:23:31
Alıntı yapılan: muhittin_kaplan - 02 Aralık 2013, 10:20:32
Yok Yapmasın Demiyorum Yapsın.
"Yok Yapmasın Demiyorum Yapsın. Hobi olarak yine yapsın." diyeceksiniz ama zaten hobi olarak yapıyor z hocamız  :D
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: mistek - 02 Aralık 2013, 10:24:35
Onlarda elmchan varsa bizde de Z var. Dişe diş kana kan koda kod.

Güzel çalışma olmuş hocam sağolun. Özellikle Türkçe adım adım anlatmanız çok faydalı oldu.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: Ramiz - 02 Aralık 2013, 10:25:28
Alıntı yapılan: FxDev - 02 Aralık 2013, 10:19:30
Projelerde ilerledikçe insan şunu anlıyor; çok fazla kişi tarafından test edilmiş kütüphane en iyi kütüphanedir. Ha projeye özel bir şey vardır, hız/güvenlik vb. o zaman oturulup yazılabilir. Ben sadece ne farkı olduğunu merak ettim.

Fat kütüphanesi yazılabilir. Forumdan birkaç arkadaşta bunu yapmıştı hatta. Ben  sizin gibi düşünmemekteyim. Kendi yazdığınızın kütüphanenin buglarını yine siz temizlersiniz ve neyin ne olduğunu anlarsınız. Mesela ben oturup fat kütüphenesi yazsam, baby hallerindeyken bugları olacaktır. Zamanla temizlenipi büyüyecektir. O büyürken bende fat ın inceliklerini öğrenmiş olacağımdır. Fakat elmchan ı hazır olarak kullansam, üzerine hiç birşey ekleyemeceğim gibi o kodları oturup günlerce okusam, tam olarak ne yapıldığını asla çözemem..

Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 02 Aralık 2013, 10:29:08
20uS lik akim donguleri olan motor vs endüktif yüklerin kontrolünu yapan programlarım o kadar guzel yerine oturdu ki yaklasik 13 senedir kulaniyorum ve test ediyorum. Bu denli kritik hiza sahip programa kurguları size olmayan program parçalari ile yama yapmak hic kolay degil.

SD den okuma programi da buna dahil.

Şimdi SD FAT programini istediğim gibi şekillendirebilirim. Senaryo nasıl olsa bana ait....

Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: M_B - 02 Aralık 2013, 10:30:11
z hocam ;
Guzel olmuş klavyenize sağlık.
Sanırsam SD-Kutuphane.lib kutuphanesi bizlere kapalı ;)

Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 02 Aralık 2013, 11:19:12
ASM ile yazdığım için aslında kapalı değil.  ;D
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: muhittin_kaplan - 02 Aralık 2013, 11:20:46
asm diyince nasılda hoşuna gidiyor.
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 05 Aralık 2013, 17:18:23
SD kartda dosya oluşturmak ve ardından içine dataları yazmak istiyorum.

Önce oluşturulmak istenen dosyanın SD kart içinde olup olmadığına bakacağız. Varsa en son cluster noyu öğreneceğiz.
Eğer dosyaya append işlemi olacaksa son cluster no olan 0xFFFF bilgisini silip yerine yeni cluster noyu vereceğiz. (Yeni cluster no nasıl tespit edilecek?)

Diyelimki SD kartta bu isimde dosya yok bu durumda yeni bir dosya adı oluşturacağız. Bunun Direktory entry de kaydını yaptık. Sıra geldi cluster noya.
FATde buna ilişkin kaydı yapmadan önce data alanında boş olan giriş noktasını bulmam lazım bu noktayı nasıl bulacağım? FAT'i baştan sona tarayıp kullanılmamış clusterları öğrenmek suretiyle mi tespit edeceğim?
Başlık: Ynt: FAT yapili SD karti okumak
Gönderen: z - 15 Aralık 2013, 17:25:22
SD karta yazma ile bir sikintim var ve bir haftadir cozemedim.

Aslinda write islemi SD karta her durumda yaziyor. Fakat Write ardindan Read yaparsam bazen sorun cikiyor ve okuma yapilamiyor.

Ben gene de sorunun Write komutundan kaynaklandigini dusunuyorum. Cunku write yapmazsam Read komutu her zaman dogru sonuclaniyor.

CMD24 (write) komutunu ve datalarimi yolluyorum CRCyi de yolladigimda bana E5 cevabi geliyor.  Bu verilerin kabul edildigi anlamina geliyormus.

Bu islem adindan CS hattini H yapip bir adet 0xFF yolluyor ve CMD13 ile status istiyorum.

Status olarak 00 FF FF FF FF 00 aliyorum. Status bu sekilde gelirse write ardindan read komutu dusgun calisiyor.
Fakat CMD13 cevabi bazen 05 FF ..... seklinde gelebiliyor.

Bu isin dogru siralamasi nasildir? Write komutu ardindan yazma isleminin tamamlandigini kesin olarak nasil anlarim?



mesaj birleştirme:: 15 Aralık 2013, 18:07:56

Keske gecen hafta sorsaymisim. Cevabi buldum.

Write islemi ardindan E5 cevabi aldigimi soylemistim. Bu andan itibaren FF yollayip FF alincaya kadar bu islemi tekrarladigimizda sorun cozuluyormus.