- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 8 von 8

Thema: Täglich eine neue Datei in der SD Karte kreieren

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55

    Täglich eine neue Datei in der SD Karte kreieren

    Anzeige

    Praxistest und DIY Projekte
    Hallo

    Will hoffen das mir jemand dabei helfen kann
    Möchte eine Logdatei in eine SD karte täglich automatisch kreieren
    die aus eine 4 stellige Nummer plus das Datum, bestehen soll
    Das Datum kann ich von den Uhr Baustein DS1307 lesen und mit der
    4 stellige nummer die Dateiname machen
    Beispiel: 00021211.09

    Habe diesen code geschrieben, aber es klappt nicht
    weiss nur nicht was da falsch ist. Hat jemand eine
    Idee wie das gemacht werden kann

    [Code:]
    board$ = "0002"
    Month$ = Str(_month)
    Day$ = Str(_day)
    Year$ = Str(_year)
    If Len(Year$) = 1 Then
    Year$ = "0" + Year$
    End If
    '
    Logfile$ = board$ + Day$ + Month$ + "." + Year$
    '''Beispiel der Dateiname 00021211.09
    Print #1 , "Logfile = " ; Logfile$ 'Zweck debug
    '
    'Fals die Datei noch nicht existiert, eine neue kreieren
    If Logfile$ <> Last_logfile$ Then
    Open Logfile$ For Output As #9 'Eine leere Datei kreieren
    Print #9 , "---Start---" 'Etwas in die Datei schreiben
    Flush #9
    Close #9
    Else
    '
    Datastr$ = "Hello World"

    Open Logfile$ For Append As #9 'Zur Datei anhängen
    Print #9 , Datastr$
    Flush #9
    Close #9
    Last_logfile$ = Logfile$ 'Am nächsten Tag eine neue Datei kreieren, dar das Datum sich geändert hat
    End If
    [/Code:]

    Bedanke mich für jede mögliche Hilfe

    Mfg
    Sato

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    wenn du avr-dos nimmst, solltest du bedenken, das unter dos die dateinamen immer maximal 8zeichen + 3zeichen der extension sein können.
    ist halt kein windows

    gruss klaus

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Zum Dateinamen verkürzen könnte man z.B. statt der 2-Stelligen Monatszahl einen Buchstaben verwenden. Gleiches beim Tag (26 Buchstaben + Rest Zahlen) und schon sind 2 Zeichen gespart.
    #ifndef MfG
    #define MfG

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    Hallo

    Das lesen von der SD karte funktioniert, das schreiben aber nicht
    dis datename habe ich schon getestet. 00021211.009 und 00021211.txt
    aber leider ohne Erfolg. Laut debug erkennt das programm das die Datei nicht existiert und

    Code:
    If Logfile$ <> Last_logfile$ Then
    Print #1 , "Last_logfile = " ; Last_logfile$
    
             Sfile = Dir(logfile$)                              'existiet die Datei?
             If Len(sfile) = 0 Then
     Open Logfile$ For Output As #9      'Nein, dann eine neue kreieren            
    Print #9 , "---Start---"                   'etwas in die Datei schreieben
                Call Blinken (8 , 500)       'fuer debug
                Wait 1
                Close #9
    Call Blinken (4 , 500)                   'fuer debug
    Wait 1
    Nach dem einschalten, blinkt es 8 mal und danach nochmal 4 mal, also
    wird erkannt das die Datei nicht existiert und es wird Open logfile$ For Output As #9 ausgefuerht, doch die Datei wird nicht kreiert.
    Kann sein weil die Dateiname mit Nummern anfängt? Glaube nicht, aber werde es trotzdem testen.

    Fals jemand noch eine idee hat bin ich dankbar

    Auf meine Platine
    ----------Sd Card-------------- Max3392------- Atmega2561
    -----5--CLK/SCLK <--------- 2|--------13|----- PortB.1 Sck
    -----2--CMD/DI <-------------3|-------12|----- PortB.2 Mosi
    -----1--CD/DAT3(CS) <----- 4|-------11|----- PortE.2
    -----7--DAT0 --------------> 5|-------10|----- PortB.3 Miso

    und in AVRDOS

    Code:
    Const Cmmc_soft = 0
    #if Cmmc_soft = 0
    ' --------- Start of Section for HW-SPI ----------------------------------------
       ' define Chip-Select Pin
    Config Pine.2 = Output                                      ' define here Pin for CS of MMC/SD Card
    Mmc_cs Alias Porte.2
       Set Mmc_cs
    
       ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M128)
       ' If an other Pin than SS is used for MMC_SS, SS must be set to OUTPUT and high for proper work of SPI
       ' otherwise AVR starts SPI-SLAVE if SS-Pin is INPUT and goes to LOW
       Config Pinb.0 = Output                                   ' define here Pin of SPI SS
       Spi_ss Alias Portb.0
       Set Spi_ss      ' Set SPI-SS to Output and High por Proper work of
                                                                ' SPI as Master
    
       ' HW-SPI is configured to highest Speed
       Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
    '   Spsr = 1                                       ' Double speed on ATMega128
       Spiinit                                                  ' Init SPI

    Gruss
    Sato

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    Hallo

    Es hat sich erledigt, ich habe es vergessen in der hauptschleife die SD karte wieder einzuschalten durch den Max3392

    Gruss
    Sato

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    .. ja und .. SATO ..

    lag es nun an den zu langen dateinamen oder an was anderem ?

    gruss klaus

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    Hallo kolisson

    Nein an den Dateiname lag es nicht, der ist maximal 12 Zeichen lang
    Dar ich als Level Conerter einen Max3392 benutze, der hat ein Pin um es im Tristate modus zu schalten, also die SD karte von den Microcontroller zu trennen. Nach den lesen der konfigurationsdatei hatte ich diesen Pin wieder auf low gesetzt und vergessen später in der Hauptschleife wieder zu aktivieren wenn die Datei kreiert oder mit Daten beschrieben wird.
    Das wars

    Gruss
    Sato

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    danke für die erklärung.

    im endeffekt war es ja dann wieder so ein kleiner fehler, den man sich selbst einbrockt.

    gruss klaus

Berechtigungen

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

Solar Speicher und Akkus Tests