Forum: Compiler & IDEs ASF Composite Device nur teilweise trennen


von Jochen (Gast)


Lesenswert?

Hallo

Ausgangssituation:
Mit dem Atmel Xplaind Board ist eine Art Datenlogger realisiert worden.
Der Xmega128a1 nimmt Daten über seine ADC's auf, speichert sie zwischen 
und schickt sie auf anfrage des At32uc3b an diesen weiter. Dieser 
schickt die Daten wiederum über USB an den PC weiter. Dabei ist der UT32 
am PC als USB Composite Device ,HID und Massenspeicher(angeschlossene SD 
Karte), angemeldet.
Die SD Karte ist über SPI am At32 angeschlossen.

Nun werden die vom Xmega geschickten Daten vom UT32 nicht nur an den PC 
weitergeleitet, sondern zusätzlich noch in eine Textdatei auf der SD 
Karte geschrieben . Dies ist mit dem Atmel Filesystem realisiert.

Allerdings treten dabei immer wieder Fehler auf, die nicht 
reproduzierbar sind und ich vermute die Ursache darin, das zwei 
Dateisystem gleichzeitig auf die SD Karte zugeifen.

Ist es möglich vor dem Schreiben der Daten durch den At32 nur den 
Massenspeicher Teil des Composit Devices zu trennen, um sicherzustellen, 
dass zu dieser Zeit nur das AtmelFileSystem zugreift? Der HID teil der 
Verbindung muss bestehen bleiben, damit die Daten auch weiterhin zum PC 
geschickt werden könne.

Gruß
Jochen

von Jim M. (turboj)


Lesenswert?

> Ursache darin, das zwei
> Dateisystem gleichzeitig auf die SD Karte zugeifen

Gaaanz schlecht, denn der PC hat einen Cache für Daten der SD Karte. Er 
bekommt von Änderungen inbesondere der FAT also nix mit.

> Massenspeicher Teil des Composit Devices zu trennen

Es geht einfacher, wenn der Massenspeichr (USB Mass Storage) sich als 
"entfernbares Medium" - removable Media - ausgibt, also als "leeren" SD 
Schacht. Dann meldet man dem PC einfach dass kein Medium eingelegt ist, 
wenn das µC Logger Programm auf der SD schreibt. Bessere USB Mass 
Storage Implementationen bieten diese Möglichkeit an.

Man könnte die SD Karte für den PC auch als "Read Only" markieren, aber 
dann bekommt der PC die Änderungen u.U. nicht mit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.