-
        

Ergebnis 1 bis 5 von 5

Thema: mega32,alternative zu AVR-DOS, Daten auf mmc Karte speichern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2005
    Ort
    O 7° 41 , N 47° 33
    Alter
    39
    Beiträge
    15

    mega32,alternative zu AVR-DOS, Daten auf mmc Karte speichern

    Anzeige

    Hallo zusammen,
    ich Suche nach eine weiteren Möglichkeit Daten auf einer MMC-Karte zu speichern. Hierbei handelt es sich um diverse Messwerte.

    Nach langen suchem habe ich zu AVR-DOS gelesen das man da nen uC > mega32 benötigt. Verbraucht ganz schön SRAM.
    Ich hab mal ein bisschen an den Einstellungen rumgedreht und es fast hinbekommen in den m32 zu biegen.
    Hat aber letztendlich doch nicht geklappt.
    Eine Idee wäre noch sich sozusagen ein "neues" AVR-DOS zusammenzuschreiben,kopieren mit nur den wirklich benötigten Teilen.
    Da weiß ich aber nicht obs dann auch läuft

    Die MMC-Karte ist über Software SPI an den mega32 angeschlossen (nach dem Schaltungsaufbau bei http://www.ulrichradig.de bzw wie im AVR-DOS beschrieben). Ich habe mir auch mal den C-Code angeschaut, aber meine Kenntnisse in C sind äußerst bescheiden, eher gegen null.

    Hat jemand ne Idee wie ich Daten per software SPI auf die MMC Karte bekomme?
    Oder wie ich AVR-DOS in meinem mega32 zum laufen bekomme?


    Gruß
    Wenn ich bei der Arbeit mit Computern eins gelernt habe, dann das
    ich einem Computer nur soweit traue, wie ich ihn werfen kann.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2004
    Alter
    33
    Beiträge
    255
    Hallo!

    Solange du die Daten nur einfach auf Speicherstellen in der Karte schreiben möchtest, geht das eigentlich relativ einfach. Schwieriger wirds, wenn du die Dateien am PC lesen möchtest (dann musst du ein Dateisystem zusammenschreiben - auch gut möglich, braucht aber viel SRAM und schon ein paar Programmierkenntnisse). Eine Mittellösung wäre hier, die Textdatei, in die geschrieben werden soll am PC zu erzeugen und mit dem Mega32 dann nur noch zu die Textdatei zu ändern.

    Für das byteweise Speichern von Daten reicht ein Datenblatt einer MMC Karte aus - darin ist das ganze eigentlich recht gut beschrieben. Fertige Funktionen kann ich dir leider nicht nennen, erst recht keine in Bascom, da ich mich damit nicht auskenne.

    Viele Grüße
    Flite

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2005
    Ort
    O 7° 41 , N 47° 33
    Alter
    39
    Beiträge
    15
    Hallo Flite,
    also vo Grundaufbau her sieht das ganze so aus.
    Die Speicherkarte ist FAT32 formatiert. Darauf eine txt oder sonstwas für ne Endung Datei.
    Diese möchte ich als typisierte Datei aufbauen. D.h. das die Daten in Strukturierter Reihenfolge gespeichtert werden. Die Daten werden dann später mit Delphi aus der Datei ausgelesen.

    Bsp.:
    Temp1, Temp2 , Temp3 Druck as single
    a,b,c as Byte
    h,m,s as Integer

    Aufbau in der Datei:
    Temp1,Temp2,Temp3,a,b,c,h,m,s;Temp1,Temp2,Temp3,a, b,c,h,m,s;Temp1,Temp2,Temp3,a,b,c,h,m,s


    Werde mir mal das Datenblatt zur mmc näher anschauen

    Gruß
    Wenn ich bei der Arbeit mit Computern eins gelernt habe, dann das
    ich einem Computer nur soweit traue, wie ich ihn werfen kann.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    AVR-DOS benötigt in der Minimalkonfiguration 1142 Bytes SRAM.
    Minimalkonfiguration bedeutet 1 Filehandle sowie dass FAT und Directory in einem Buffer verwaltet werden. Massenspeicher wie Hard-Disk, CF- sowie SD/MMC-Karten sind sektor-orientiert. Während bei HD und CF lesen und schreiben nur mit einem 512Byte-Transferpaket (Sektor) möglich ist, kann bei MMC/SD Karten auch in kleineren Portionen gelesen werden. Schreiben ist auch bei diesen Karten nach den mir vorliegenden Datenblättern nur mit 512Byte-Paketen möglich.
    Auf dieses Erfordernis von 512Bytes-Buffer ist AVR-DOS ausgelegt.
    In der Minimalkonfiguration ( je ein Sektor von 512Bytes für 1 File bzw FAT/Directory) und einigen weiteren Systemvariablen ergibt sich dieser Speicherbedarf von 1142 Bytes.
    Sofern der weitere SRAM-Bedarf der Applikation nicht mehr als etwa 500~600 Bytes beträgt, müsste AVR-DOS auch auf einem Mega32 betreibbar sein.

    Eine mögliche Alternative wäre folgendes:
    - Formatieren einer Karte damit mit Sicherheit keine anderen Daten gespeichert sind
    - Speichern einer ausreichend großen Datei (z.B. nur Blanks) am PC auf die Karte (diese wird dann in fortlaufende Sektoren geschrieben)
    - Suchen des 1. Sektors dieser Datei mit einem Disk-Editor. Wenn die Datei mit einer Text-Kennung beginnt, dürfte das Auffinden kein Problem sein.
    - Beginnend mit diesem Sektor können dann die im Mikrokontroller erstellten Daten auf die Karte gespeichert werden. Um eine Buffergröße von 512 Bytes kommt man auch hier nicht umhin. Zum Abspeichern von Sektoren auf die Karte stellt BASCOM-AVR entsprechende Befehle zur Verfügung ( Siehe Drive.....). Der entsprechende Kartentreiber muss natürlich auch eingebunden werden.
    - Am PC sind dann die Daten in der erstellten 'Platzhalter-Datei' sichtbar.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.12.2005
    Ort
    O 7° 41 , N 47° 33
    Alter
    39
    Beiträge
    15
    Hallo Josef,
    also ich habe jetzt ziemlich viel(tagelang) rumprobiert aber ich bekomme es nicht mal mit der Minimalkonfiguration zum laufen. Hierzu habe ich die "Test_Dos_Drive.bas" von deiner HP verwendet. Alle benötigten Datein sind natürlich in den entsprechenden Ordnern vorhanden.Habe anstatt die "CF_config" die angepasste "config_mmc.bas" eingebungen.
    Wenn ich nun folgende letzte Zeile auskommentiere $include "FS_Interpreter.bas" bricht Bascom schon beim compilieren ab und ich erhalte folgende Meldungen:


    Error : 61 Line : 35 Label not found [_WORDX2B ] , in File : C:\ELEKTRO\BASCOM\PROJEKTE\AVRDOSTEST\TEST_DOS_DRI VE.BAS
    Error : 61 Line : 35 Label not found [_WORDX2B_L ] , in File : C:\ELEKTRO\BASCOM\PROJEKTE\AVRDOSTEST\TEST_DOS_DRI VE.BAS
    Error : 61 Line : 35 Label not found [_WORDX2B ] , in File : C:\ELEKTRO\BASCOM\PROJEKTE\AVRDOSTEST\TEST_DOS_DRI VE.BAS
    Error : 61 Line : 35 Label not found [_SECTOR2CLUSTER ] , in File : C:\ELEKTRO\BASCOM\PROJEKTE\AVRDOSTEST\TEST_DOS_DRI VE.BAS
    Error : 61 Line : 35 Label not found [_CLUSTER2SECTOR ] , in File : C:\ELEKTRO\BASCOM\PROJEKTE\AVRDOSTEST\TEST_DOS_DRI VE.BAS


    Hier mal der Quelltext auf Basis der "Test_DOS_Drive.bas":


    Code:
    $regfile = "M128def.dat"
    '$regfile = "M32def.dat"
    $crystal = 16000000
    $hwstack = 128
    $swstack = 128
    $framesize = 128
    $baud1 = 9600
    
    Open "Com1:" As Binary As #1                                ' use #1 for fs_interpreter
    
    Config Serialin = Buffered , Size = 20
    Config Clock = Soft
    Enable Interrupts
    Config Date = Dmy , Separator = .
    
    Dim Btemp1 As Byte
    
    Print #1 , "Wait for Drive"
    $Include "Config_MMC.bas"
    If Gbdriveerror = 0 Then
    $Include "Config_AVR-DOS.BAS"
      Print #1 , "Init File System ... ";
      Btemp1 = Initfilesystem(0)                                ' Partition 1 use 0 for drive without Master boot record
      If Btemp1 <> 0 Then
         Print #1 , "Error: " ; Btemp1 ; " at Init file system"
      Else
         Print #1 , " OK"
      End If
    Else
       Print #1 , "Error during Drive Init: "
    End If
    
    
    ' If you want to test with File-System Interpreter uncomment next line
    '$Include "FS_Interpreter.bas"
    Wenn ich die "FS_Interpreter.bas" wieder mit einbinde compiliert er es.
    Mit der Datei lässt es sich für den m32 nicht compilieren(out of sram).

    Ich komm einfach nicht weiter. Was mache ich denn falsch?
    Wie bekomme ich das ganze zum laufen ohne die "FS_Interpreter.bas"?

    Gruß
    Wenn ich bei der Arbeit mit Computern eins gelernt habe, dann das
    ich einem Computer nur soweit traue, wie ich ihn werfen kann.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •