-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: SD Karte! Ich weiss die Frage kam schon zum 100mal

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391

    SD Karte! Ich weiss die Frage kam schon zum 100mal

    Anzeige

    Hallo zusammen,
    ich habe mal eine Frage und zwar...
    Wie kann ich mit dem Atmel etwas auf einer SD Karte speichern.
    Bevor wieder irgendwelche blöden Sprüche kommen wie "Die ganze Welt ist ein einziges Google" kann ich schon mal gleich sagen:
    JA ich habe bei Google gesucht.
    JA ich habe sogar etwas herausgefunden
    JA ich habe die Suchfunktion von Roboternetz benutzt
    Ja ich weiss in ungefähr, dass man die SD KArte am SPI Bus chließen muss
    JA ich habe AVR Dos gefunden und muss sagen das ich dafür kein Geld ausgeben möchte

    ABER: Ich komme mit der Programmierung nicht klar. Könntet ihr mir einfach mal ein kleines Beispiel geben?
    Vielen Dank,
    Hunni

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    15.09.2004
    Beiträge
    30

    Re: SD Karte! Ich weiss die Frage kam schon zum 100mal

    Zitat Zitat von hunni
    JA ich habe AVR Dos gefunden und muss sagen das ich dafür kein Geld ausgeben möchte
    Ist AVR Dos nicht inzwischen in der Bascom Vollversion enthalten ,
    und für die nicht Kommerzielle Nutzung „Freeware“ ?

    Gruß HH

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    43
    Beiträge
    377

    Re: SD Karte! Ich weiss die Frage kam schon zum 100mal

    Zitat Zitat von HansHans
    Ist AVR Dos nicht inzwischen in der Bascom Vollversion enthalten , und für die nicht Kommerzielle Nutzung „Freeware“ ?
    Hallo!

    Ja, AVR-Dos ist in der Bascom-Vollversion mit dabei. Man kann es auch direkt von der AVR-Dos-Homepage herunterladen. Und für "Nicht Kommerzielle Nutzung" ist AVR-Dos gratis.

    Allerdings braucht man **mindestens** einen ATmega32, besser einen ATmega128, dafür. Und wenn man auf das FAT-Dateisystem verzichten kann und einfach nur Daten, wie bei einem EEPROM, auf die Karte schreiben möchte, dann kann man auf AVR-Dos verzichten und sogar mit einem ATmega8 arbeiten.

    - http://www.mcselec.com/index.php?opt...d=20&Itemid=41
    - http://members.aon.at/voegel/
    - http://www.mcselec.com/index.php?opt...d=87&Itemid=57
    - http://www.ulrichradig.de/home/index.php/avr/mmc-sd
    - http://staff.ltam.lu/feljc/electroni..._Low_Level.pdf

    mfg
    Gerold
    :-)

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    Hallo nochmal,
    tut mir leid das ich so lange nich geschrieben habe. Ich finde die "free download" version nicht. Da steht zwar oben drüber, dass das Kostenlos ist, aber ich man kann nur die 19,99€ oder 99,99€.
    Könnt ihr mir vielleicht ein link geben, wo ich das herbekomme?
    Warscheinlich bin ich einfach nur zu dumm dahin zu finden.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Soweit ich das ersehen kann liegt es einer gekauften Version bei.

    In der Demo Version ,beschränkt auf 4 K , ist das meiner Meinung nach eh sinnlos.

    Gento

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    ach so!
    Nah dann kann ich das ja auch gleich ganz vergessen mit der SD Karte, da ich mit den anderen "No Fat System" nichklar komme.
    Hunni

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Dann versuch es doch mal mit der einfachen Version, ohne AVR-DOS.
    Ich weiß nicht, wieviel dein sonstiger Code ausmacht, aber der hier inklusive Lesen und Schreiben von 1000 Sektoren und Ausgabe auf den UART belegt gerade mal 1492 Byte, also noch viel Platz bis 4K.
    Code:
    $regfile = "M128def.dat"
    $crystal = 16000000
    
    $baud1 = 115200
    Open "Com2:" As Binary As #1
    Enable Interrupts
    
    Dim Mmc_error As Byte
    Dim In_ptr As Word                                          ' Address-Pointer for read
    Dim In_sect As Long
    Dim In_buffer As String * 512
    Print #1 , "Wait for Drive"
    $include "Config_MMC.bas"
    'Hier werden als Test die ersten 1000 Sektoren der Karte eingelesen und auf den UART ausgegeben und dann wieder auf die SD geschrieben.
    In_ptr = Varptr(in_buffer)
    If Gbdriveerror = 0 Then
       Mmc_error = Driveinit()
       If Mmc_error = 0 Then
          Print #1 , "Driveinit Ok. "
          For In_sect = 0 To 1000
             Mmc_error = Drivereadsector(in_ptr , In_sect)
             If Mmc_error = 0 Then
                Print #1 , "ReadSector(" ; In_sect ; ") ok."    'Zum Inhalt drucken, Kommentare entfernen !!!!!!!!!!
                Print #1 , In_buffer                            'Dann wird es aber langsamer, 115200 baud beim übertragen
                Mmc_error = Drivewritesector(in_ptr , In_sect)
             Else
                Print #1 , "Error during ReadSector(" ; In_sect ; ") : " ; Mmc_error
             End If
          Next In_sect
       Else
          Print #1 , "Error during Driveinit(): " ; Mmc_error
       End If
    End If
    
    End
    Hierbei werden die Sektoren direkt geschrieben. Das reicht für die Ein- und Ausgabe im µC.
    Wenn du eine Datei in Windows sehen willst, legst du vorher eine dummy-Datei der benötigten Größe an und schreibst dann deren Sektoren.

    Gruß

    Rolf

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    aber ich dachte immer der atmega8 hat nur ein Com, oder liege ich da falsch?
    Auch hatte ich gedacht, dass man die SD karte am SPI Bus anscließen muss und nich am Comport.
    Ich glaube, ich habe mitleerweile eine andere Lösung gefunden. Ich kann einen USB Stick am Com anschließen und dann mit "Print" befehle auf den USB abspeichern (hoffe ich). Wenn das auch falsch ist, dann lass ich das mit dem Abspeichern, da ich nicht den Quelltext so recht verstehe.
    Hunni

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Natürlich hat der nur einen COM. Ist halt für meinen Mega128.
    Also hier noch mal für deinen Mega8. Ich dachte das könntest du alleine.
    Code:
    $regfile = "M8def.dat"
    $crystal = 16000000
    
    $baud = 115200
    Enable Interrupts
    
    Dim Mmc_error As Byte
    Dim In_ptr As Word                                          ' Address-Pointer for read
    Dim In_sect As Long
    Dim In_buffer As String * 512
    Print "Wait for Drive"
    $include "Config_MMC.bas"
    'Hier werden als Test die ersten 1000 Sektoren der Karte eingelesen und auf den UART ausgegeben und dann wieder auf die SD geschrieben.
    In_ptr = Varptr(in_buffer)
    If Gbdriveerror = 0 Then
       Mmc_error = Driveinit()
       If Mmc_error = 0 Then
          Print  "Driveinit Ok. "
          For In_sect = 0 To 1000
             Mmc_error = Drivereadsector(in_ptr , In_sect)
             If Mmc_error = 0 Then
                Print  "ReadSector(" ; In_sect ; ") ok."    'Zum Inhalt drucken, Kommentare entfernen !!!!!!!!!!
                Print  In_buffer                            'Dann wird es aber langsamer, 115200 baud beim übertragen
                Mmc_error = Drivewritesector(in_ptr , In_sect)
             Else
                Print  "Error during ReadSector(" ; In_sect ; ") : " ; Mmc_error
             End If
          Next In_sect
       Else
          Print  "Error during Driveinit(): " ; Mmc_error
       End If
    End If
    End
    Auf die Karte wird nicht über den Com-Port geschrieben, sondern mit der Funktion DriveWriteSector() über SPI. Die Belegung der Anschlüsse ist in der Datei "Config_MMC.bas". Schau es dir mal an. Printen doch nur um das gelesene auch mal zu sehen.

    Gruß

    Rolf

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    AHH, ich habe die erleuchtung. jetzt hab ich es verstanden.
    Vielen Dank für eure hilfe. Is mir n bissle peinlich wegen atmega 128 und atmega 8. Das hät ich eigentlich auch so sehen können. Jetzt glaub ich weiss ich wie es funktioniert.
    Ich hoffe ich kann jetzt auch mal anderen Helfen, da ich noch nich so erfahren bin. Wie gesagt habe ich bisjetzt nur Commodore 64 und QBasic programmiert und wollte jetzt entlich auch mal Atmels proggen.
    Vielen Dank noch einmal, die versucht (und auch geschafft) haben mir dies zu erklären.
    Hunni

    p.s. aber das mit dem USB stick is doch auch garkeine schlechte Idee oder?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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