Ich benutz eine für CodeVision umgewandelte Form dieser Bibliothek, auch ich hatte damit Probleme.
1. Ging meine Bibliothek nur für Karten mit maximal 1GB, weil bis dahin die Cluster nur 512Byte haben. Bei größeren Karten sind die Cluster 1kByte groß.
2. Der Define Wert Superfloppy ( #define superfloppy 0 ) war bei mir ursprünglich 1, dann ging die Fat nicht.
3. Der ATMEGA hat zu wenig Raum für den Puffer.
DU brauchst einen Empfangspuffer der mindestens einen kompletten Cluster aufnehmen kann, sonst gehen Dir Daten verloren.
Der Grund dafür ist, das das Schreiben auf die SD Karte sehr lange dauert. Da aber auch in dieser Zeit Daten reinkommen, kann und wird es passieren, das dieser Empfangspuffer, der beim ATMEGA32 maximal so um die 300Byte haben kann, überläuft. Bei 38400 Bit/s wars bei mir auf jeden Fall so.
Ich hab da jetzt einen ATMEGA 644 drin, der ist Pinkompatibel zu ATMEGA32 hat aber mehr Speicher.
Somit konnte der Empfangspuffer auf 514Byte aufgemotzt werden und die Datenverluste waren weg.
Wenn Du magst schick ich Dir den kompletten Quellcode zu, der ist aber Leider für CodeVision AVR.
Schick mir einfach ein PN mit Deiner E-Mail Adresse.
Lesezeichen