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?
Lesezeichen