Gast
#3768596
Hallo, ich habe ein Problem bei der Implementierung von FatFs. Meinen Code habe ich bereits als zip-File angehängt. Ich benutze einen ATMEGA1284P und einen 16MHz Quarz. Mein Evalboard versorge ich mit 3,3V damit die SD-Karte keine Probleme macht. Um ISP und SPI zu trennen habe ich 1k Widerstände vor die SD Karte gesetzt. Meine Fuses sind 0xFD, 0xD3, 0xFD Nun zu meinem Problem. Wenn ich das Programm starte läuft alles erst mal ganz gut. Ich kann die Karte initialisieren und mounten. Dann starte ich die Funktion f_open. Als Fehler rückgabe der Funktion bekomme ich FR_NO_FILESYSTEM. Daher überprüfte ich dich Funktion check_fs innerhalb der Funktion find_volume (ebenfalls in f_open). Dabei stellte ich fest, dass die boot record signature nicht erkannt wird. Also habe ich mit dem HexEditor mir mal die Signatur angesehen, die auf der SD Karte liegt. Meine SD Karte hatte ich zuvor FAT32 mit Sektorgröße 512 formatiert. Und in den ersten Sektoren sind die letzten Byte immer mit 0xAA55 belegt. Ein Fehler in der Formatierung liegt also nicht vor. Da ich keinen JTAG Programmer zur Hand habe sondern nur ISP kann ich leider nicht genau auslesen, was stattdessen eingelesen wird. Daher habe ich ein Digitaloszilloskop zur Hand genommen und mir die Übertragung angesehen. Dazu habe ich mir den die Funktion rcvr_datablock mit Portbits markiert um genau den Empfang der 512Byte am Oszi erkennen zu können. Und dabei stellte ich fest, dass das erste Byte (0xEB) noch stimmt. Das zweite jedoch schon nicht mehr (0x58 wird zu 0x20) und in etwa die letzten 32 Byte (kann auch sein, dass ich mich um 1-2 verzählt habe) sind 0xFF. Ich habe den Code durchgesehen und weiß langsam nicht mehr wo ich suchen soll. Es wäre schön, wenn jemand anderes meinen Code zumindest mal laufen lässt, und nachsieht ob bei ihm dasselbe Problem besteht. Oder mir einen Tipp gibt wo ich noch suchen kann, bzw. was ich sonst noch tun kann. Vielen Dank schon jetzt für die Hilfe!