Hallo,
auch bei der 3,3V Festspannungsregler Version kann ich keine Dateien erstellen - es ist der selbe Fehler wie zuvor:

wenn die SD Karte leer ist wird die Datei geöffnet, und beim Schreibbefehl ist ende - die Datei wird nicht geschlossen.

Code:
Sd_schreiben:
Print "SD OPEN"
Open "LOG.txt" For Append As #1
Print Zu_schreiben ''BIS HIER LÄUFT DER CODE''
Print #1 , Zu_schreiben                                     'Variable auf SD schreiben
Print "SD CLOSE"
Close #1
Return
Im PC kann ich die erstellte Datei sehen aber sie ist leer.

Wenn ich die Datei mit dem PC erstelle UND ein Zeichen schreibe kann der µC die Datei öffnen und beschreiben - der Code läuft sauber durch.

Code:
$regfile = "M644def.dat"
$crystal = 14745600
'$crystal = 8000000
$baud = 19200


'-------------------------------------------------------------------------------
'Ein- Ausgänge:

Ddra = &B00000000                                           '1 Ausgang, 0 Eingang = Pin PA7-0
'Ddrb = &B00000000                                           '1 Ausgang, 0 Eingang = Pin PB7-0
Ddrc = &B00000000                                           '1 Ausgang, 0 Eingang = Pin PC7-0
Ddrd = &B11000000                                           '1 Ausgang, 0 Eingang = Pin PD7-0
Config Pinb.4 = Output                                      'CS
Config Pinb.6 = Input                                       'MISO / DO

$include "config_mmc.bas"
$include "config_avr-dos.bas"

'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------
'Analogmessung:
Config Adc = Single , Prescaler = Auto , Reference = Avcc
'Start Adc                                                   'Starte analog Messung


'-------------------------------------------------------------------------------
'Variablen:


Dim Tmpbyte As Byte                                         'zum initialisieren
Dim Btemp1 As Byte                                          'zum initialisieren


Dim K0 As Word                                              'Spannung Akku
Dim K00 As Single
Dim K000 As String * 4
Dim K1 As Word                                              'Spannung Empfänger
Dim K11 As Single
Dim K111 As String * 4
Dim K2 As Integer                                           'MotorTemp
Dim K22 As String * 3
Dim K3 As Word                                              'Strom Akku
Dim K33 As Single
Dim K333 As String * 4
Dim K4 As Integer
Dim K44 As String * 5
Dim K5 As Integer
Dim K55 As String * 5
Dim K6 As Integer
Dim K66 As String * 5
Dim K7 As Integer
Dim K77 As String * 5

'TEMP NTC:
Dim Ohm As Single
Dim Temp1 As Single                                         'wegen den negativen Zahlen!!!
Dim Temp2 As Single
Dim Temp3 As Single
Dim Temp As Single

Dim Anzahl As Long                                          'Zähler für schreiben
Dim Anzahl_str As String * 6

Dim Zu_schreiben As String * 80
Dim Rec As Bit                                              'wird von Timer 1 gesetzt

Dim Led As Word

Dim Pulsbreite1 As Word                                     'Knüppelstellung Knüppel 1
Dim Pulsbreite2 As Word                                     'Knüppelstellung Knüppel 2
'-------------------------------------------------------------------------------

'Enable Interrupts


Waitms 500                                                  'ALT: 2 Sekunden

'_______________________________________________________________________________
'Init MMC/SD Card

Tmpbyte = Driveinit()
    Print "Init: " ; Str(tmpbyte)
    Print "Trying to read File system..."
    Btemp1 = Initfilesystem(1)                              ' Partition 1
    Print "Btemp1: " ; Btemp1

If Btemp1 <> 0 Then                                         'Wenn Fehler
Print "Error: " ; Btemp1 ; " at Init file system"
Waitms 500
Print "SD - FEHLER"
Goto Fehler
Else

End If




'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Hauptprogramm Do...Loop
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Do


Incr Led                                                    'led hochzählen
If Led > 60000 Then
Toggle Portd.6
If Pind.5 = 1 Then
Portd.7 = 1                                                 'Grüne LED an für ADC einlesen
Else
Portd.7 = 0
End If
Led = 0                                                     'Zähler
End If



If Led = 0 Then
Toggle Portd.7                                              'Grüne LED aus für ADC einlesen
End If

If Pind.5 = 1 Then
Rec = 1
End If


If Pind.5 = 0 And Rec = 1 Then
Incr Anzahl
Anzahl_str = Str(anzahl)
Anzahl_str = Format(anzahl_str , "000000")

'Alles in einen String fassen
Zu_schreiben = Anzahl_str + " mal;" + K000 + "V;" + K111 + "V;" + K22 + "°C;" + K333 + "A;" + K44 + ";" + K55 + ";" + K66 + ";" + K77

Print "gehe zu SD schreiben"

Gosub Sd_schreiben
Rec = 0                                                     'Variable von Timer zurücksetzen
End If





Loop
'_______________________________________________________________________________




'_______________________________________________________________________________
'Daten auf SD - Card schreiben:

Sd_schreiben:
Print "SD OPEN"
Open "LOG.txt" For Append As #1
Print Zu_schreiben                                          'Variable auf COM / PC anzeigen
Print #1 , Zu_schreiben                                     'Variable auf SD schreiben
Print "SD CLOSE"
Close #1
Return



'bei SD Fehler
Do
Fehler:
Portd.7 = 1                                                 'Grüne LED blinken für FEHLER
Wait 1
Portd.7 = 0                                                 'Grüne LED blinken für FEHLER
Wait 1
Loop
Wie kann ich den Fehler weiter eingrenzen?