wenn eine nicht vorhandene Datei mit dem open Befehl geöffnet wird, so wird diese von AVR-Dos erstellt. Für die Anwendung als Datenlogger
Code:open "logfile.txt" for append as #1
Hallo,
ich baue gerade einen Datenlogger mit AVR DOS.
Wenn ich mit dem PC eine LOG.txt Datei auf der SD-Karte erstelle, kann ich diese öffnen ändern und schließen.
Wie heißt der befehl um eine Datei zu erstellen?
Ich habe bisher nur den OPEN Befehl gefunden und nutze ihn so:
wie gesagt, zum schreiben geht es - aber nicht zum erstellen einer neuen Datei(ich möchte später mehrere Dateien erstellen also Log1.txt, Log2.txt...).Code:Sd_schreiben: Open "LOG.txt" For Binary As #1 Ltemp = Lof(#1) + 1 'Stelle festlegen von wo geschrieben wird Seek #1 , Ltemp 'set the filepointer Print #1 , Zu_schreiben 'Variable auf SD schreiben Print Zu_schreiben 'Variable auf COM / PC anzeigen Close #1 Return
wenn eine nicht vorhandene Datei mit dem open Befehl geöffnet wird, so wird diese von AVR-Dos erstellt. Für die Anwendung als Datenlogger
Code:open "logfile.txt" for append as #1
Hallo und vielen Dank,
die Datei wird nun vom µC erstellt, aber wenn der µC in die Datei schreiben soll stürzt er ab. Wenn ich die erstellte Datei mit dem PC öffne und speicher, kann der µC die Datei öffnen und Daten rein schreiben.
(zu den Abstürzen: der µC bleibt immer(auch wenn ich die Datei mit dem PC erstelle) nach ca. 2,5 Stunden stehen - nur noch die Timer0 LED blinkt im Takt, die der Do...Loop-Schleife blinkt dann nicht mehr)
Muss ich eventuell die Ein-Ausgänge anders einstellen?
Code:$regfile = "M644def.dat" $crystal = 14745600 $baud = 19200 $include "config_mmc.bas" $include "config_avr-dos.bas" '------------------------------------------------------------------------------- '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 '------------------------------------------------------------------------------- 'Timer1 = 16 Bit Config Timer1 = Timer , Prescale = 256 'Teiler 1/8/64/256/1024 On Timer1 Ontimer1overflow 'Unteprogramm aufrufen Const Timer1vorgabe = 7936 Timer1 = Timer1vorgabe Enable Timer1 'timer einschalten '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- '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 Volt As Single Dim Anzahl As Long 'Zähler für schreiben Dim Anzahl_str As String * 6 Dim Zu_schreiben As String * 60 Dim Rec As Bit 'wird von Timer 1 gesetzt Dim Led As Byte Dim Ltemp As Long 'Pointerposition 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 'Print "START..." 'Toggle Portd.7 'Grüne LED an für Start '_______________________________________________________________________________ '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 Gosub Datei_erstellen Print "SD OK" End If 'Wait 1 '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- 'Hauptprogramm Do...Loop '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- Do Incr Led 'led hochzählen If Led > 10 Then 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 'Empfänger einlesen Pulsein Pulsbreite1 , Pinc , 7 , 1 'Pulsbreite auslesen (1=High Impuls) 'Knüppel OBEN ' If Pulsbreite1 > 146 And Kanal1o = 0 Then 'wenn Knüppel oben und Kanal1oben=0 dann ' Toggle Ausgang1 'Pin 1 mal schalten (entweder auf Hi oder Low je nach vorherigem zustand) ' Kanal1o = 1 'Variable Kanal1o setzen damit nicht neu getoggled werden kann ' End If 'Analogkanäle einlesen K0 = Getadc(0) 'Wert aus Analogeingang laden K1 = Getadc(1) 'Wert aus Analogeingang laden K2 = Getadc(2) 'Wert aus Analogeingang laden K3 = Getadc(3) 'Wert aus Analogeingang laden K4 = Getadc(4) 'Wert aus Analogeingang laden K5 = Getadc(5) 'Wert aus Analogeingang laden K6 = Getadc(6) 'Wert aus Analogeingang laden K7 = Getadc(7) 'Wert aus Analogeingang laden If Led = 0 Then Toggle Portd.7 'Grüne LED aus für ADC einlesen End If 'Analog umrechnen: 'VOLT K00 = K0 'Gesamtspannung 3,3*6=19,8V -> 19,8V/1024Stufen= 0,0193... K00 = K00 * 0.0193359375 K000 = Fusing(k00 , "##.#") 'VOLT K11 = K1 'Gesamtspannung 3,3*6=19,8V -> 19,8V/1024Stufen= 0,0193... K11 = K11 * 0.0193359375 K111 = Fusing(k11 , "##.#") 'TEMP MESSUNG Ohm = 1.9 * K2 'Analogeingang bei 1020 Ohm = 504 -> 1020/504=2,0238095(24,5°C) (Wert kleiner=Temp größer) 'Temp = 3730 / (Log(1,9*NTC) + 5.59017600439636) - 273 Temp = Log(ohm) 'RECHNEN Temp = Temp + 5.59017600439636 'RECHNEN Temp = 3730 / Temp 'RECHNEN Temp = Temp - 273 'RECHNEN Kelvin in Celsius K22 = Fusing(temp , "##.#") 'STROM K33 = K3 'Gesamtspannung 3,3*6=19,8V -> 19,8V/1024Stufen= 0,0193... K33 = K33 * 0.0193359375 'Analogkanäle formatieren K333 = Fusing(k33 , "##.#") K44 = Str(k4) K44 = Format(k44 , "0000") K55 = Str(k5) K55 = Format(k55 , "0000") K66 = Str(k6) K66 = Format(k66 , "0000") K77 = Str(k7) K77 = Format(k77 , "0000") 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 Gosub Sd_schreiben Rec = 0 'Variable von Timer zurücksetzen End If 'Print "Wait250msec" 'Waitms 1000 Loop '_______________________________________________________________________________ '_______________________________________________________________________________ 'Daten auf SD - Card schreiben: Datei_erstellen: Print "Datei erstellen..." 'Datei wird erstellt oder überschrieben!!!! Open "LOG.txt" For Append As #1 'Print #1 , "Datenlogger 1000 SD" 'Variable auf SD schreiben 'Print "LOF: " ; Lof(#1) ; " Zeichen gesamt" 'Print Loc(#1) ; "LOC" 'aktuelle Stelle von wo gelesen / geschrieben wird Close #1 'Datei schließen Print "Datei erstellt und geschlossen" Return Sd_schreiben: ''Portd.7 = 1 'led grün an für schreiben 'Datei öffnen Open "LOG.txt" For Binary As #1 'Print "LOF: " ; Lof(#1) ; " Zeichen insgesamt" Ltemp = Lof(#1) + 1 'Stelle festlegen von wo geschrieben wird Seek #1 , Ltemp 'set the filepointer 'Print Ltemp ; " = Ltemp" Print #1 , Zu_schreiben 'Variable auf SD schreiben Print Zu_schreiben 'Variable auf COM / PC anzeigen Close #1 ''Portd.7 = 0 'led grün aus für schreiben beendet 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 Ontimer1overflow: Timer1 = Timer1vorgabe Rec = 1 If Pind.5 = 1 Then Anzahl = 0 End If Toggle Portd.6 'rote LED Return
die config der PINs wird in der config_mmc.bas gemacht.
Benutzt du Hardware-SPI oder Software-SPI?
Ich benutze HW-SPI und die config schaut bei mir so aus:
Ich habe auch noch einen 10uF Kondensator direkt am SD-Kartenslot da ich sonst mit manchen Karten Probleme hatte. (aber ich glaube das war dann schon bei der Initialisierung)Code:' --------- Start of Section for HW-SPI ---------------------------------------- ' define Chip-Select Pin Config Pinb.4 = Output ' define here Pin for CS of MMC/SD Card Mmc_cs Alias Portb.4 Set Mmc_cs ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M128) Config Pinb.4 = Output ' define here Pin of SPI SS Spi_ss Alias Portb.4 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 = 16 , Noss = 1 'Spsr = 1 ' Double speed on ATMega128 Spiinit ' Init SPI ' --------- End of Section for HW-SPI ------------------------------------------
Jetzt funktioniert das ganze stabil und zuverlässig.
Habe mir grad noch den Rest deines Programms angeschaut:
Die Sub Datei_erstellen kannst du komplett vergessen wenn du in der Sub sd_schreiben die Datei mit append öffnest, wird die Datei sowieso erstellt. Desweiteren ist es so, dass wenn du die Datei mit append (anhängen) erstellt hast nicht mit den pointern spielen musst...Code:'_______________________________________________________________________________ 'Daten auf SD - Card schreiben: Datei_erstellen: Print "Datei erstellen..." 'Datei wird erstellt oder überschrieben!!!! Open "LOG.txt" For Append As #1 'Print #1 , "Datenlogger 1000 SD" 'Variable auf SD schreiben 'Print "LOF: " ; Lof(#1) ; " Zeichen gesamt" 'Print Loc(#1) ; "LOC" 'aktuelle Stelle von wo gelesen / geschrieben wird Close #1 'Datei schließen Print "Datei erstellt und geschlossen" Return Sd_schreiben: ''Portd.7 = 1 'led grün an für schreiben 'Datei öffnen Open "LOG.txt" For Binary As #1 'Print "LOF: " ; Lof(#1) ; " Zeichen insgesamt" Ltemp = Lof(#1) + 1 'Stelle festlegen von wo geschrieben wird Seek #1 , Ltemp 'set the filepointer 'Print Ltemp ; " = Ltemp" Print #1 , Zu_schreiben 'Variable auf SD schreiben Print Zu_schreiben 'Variable auf COM / PC anzeigen Close #1 ''Portd.7 = 0 'led grün aus für schreiben beendet Return
fertig... so werden die neuesten messwerte automatisch ans ende deine logdatei angehängt.Code:sd_schreiben: Open "LOG.txt" For append As #1 Print #1 , Zu_schreiben close #1
Hier mal meine Routine für ein Systemlog (Messwert-Logs sind extra)
Benutzung ist dann sehr einfach:Code:sub Logfile(message$ As String * 50) Chdir "\" Open "logfile" For Append As #12 Gosub Getdatetime Print #12 , _year$ ; "/" ; _month$ ; "/" ; _day$ ; ";" ; _hour$ ; ":" ; _min$ ; ";" ; Message$ Close #12 End Sub
Logfile "System EIN"
Logfile "Powerdown" usw...
Hallo,
die Sub Datei_erstellen habe ich nun weggelassen. Die Datei wird erstellt, aber der µC kann nicht reinschreiben.
beim 1ten schreiben schein alles in Ordnung doch beim 2ten Schreibefehl (Print #1 , Zu_schreiben) bleibt das Programm stehen. (hab zum testen alles über RS232 an den PC gesendet)
Erst wenn ich ein Zeichen mit dem PC in die Datei schreibe und speicher kann auch der µC mit:
Open "LOG.txt" For append As #1
dazu schreiben.
Wie kann ich den Fehler besser suchen?
ps ich habe das Programm nun gekürzt und alle Messungen / Rechnungen weggelassen
Code:$regfile = "M644def.dat" $crystal = 14745600 $baud = 19200 $include "config_mmc.bas" $include "config_avr-dos.bas" '------------------------------------------------------------------------------- '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 '------------------------------------------------------------------------------- 'Timer1 = 16 Bit Config Timer1 = Timer , Prescale = 256 'Teiler 1/8/64/256/1024 On Timer1 Ontimer1overflow 'Unteprogramm aufrufen Const Timer1vorgabe = 7936 Timer1 = Timer1vorgabe Enable Timer1 'timer einschalten '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- '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 * 60 Dim Rec As Bit 'wird von Timer 1 gesetzt Dim Led As Byte 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 'Gosub Datei_erstellen 'Print "SD OK" End If 'Wait 1 '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- 'Hauptprogramm Do...Loop '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- Do Print "DO" Incr Led 'led hochzählen If Led > 10 Then 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 Print "LED" If Led = 0 Then Toggle Portd.7 'Grüne LED aus für ADC einlesen 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 Print "loop" 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 Ontimer1overflow: Timer1 = Timer1vorgabe Rec = 1 If Pind.5 = 1 Then Anzahl = 0 End If Toggle Portd.6 'rote LED Return
Es wäre mal interessant, deine config_mmc.bas zu sehen, da du mir meine Fragen nicht beantwortet hast.
Du Konfigurierst deine Inputs/Outputs ja Blockweise. Ich würde zur Sicherheit die AVR-Dos includes erst nach den I/O-Configs einbinden - damit ist sichergestellt, dass die I/Os für die SD-Karte richtig Konfiguriert sind.
Zur Fehlersuche würde ich die Timer weglassen und etwas manuell per (z.b. Taste) auf die SD schreiben.
Falls du deinen Datenschreiber noch ein wenig verbessern willst, ist es sehr sinvoll eine RTC (meine Empfehlung ist hier die DS1337 wegen der zwei Alarme) zu verwenden. Den Chip bekommt man für 1,90€.
Aufzeichnungen von Temperaturen, Spannungen usw. sind doch mit echter Uhrzeit viel schöner, oder nicht?
Oh...ich habe den Link in der Mail angeklickt und wurde gleich zu dem 3ten Beitrag geleitet![]()
Also ich benutze Hardware-SPI. Die Pins habe ich in der config_mmc.bas auf Port B geändert.
Zu dem 10uF Kondensator direkt am SD-Kartenslot: hast du den an die Masse und die 3,3V angelötet oder an eine Datenleitung?Code:-- ' THIS IS AN INCLUDE FILE ' DO NOT COMPILE $nocompile '------------------------------------------------------------------------------- ' Config_MMC.BAS ' Config File for MMC Flash Cards Driver ' (c) 2003-2005 , MCS Electronics / Vögel Franz Josef '------------------------------------------------------------------------------- ' Place MMC.LIB in the LIB-Path of BASCOM-AVR installation ' 'Connection as following 'MMC M644 '1 MMC_CS PORTB.4(0) '2 MOSI PORTB.5(2) '3 GND '4 +3.3V '5 CLOCK PORTB.7(1) '6 GND '7 MISO, PORTB.6(3) ' you can vary MMC_CS on HW-SPI and all pins on SOFT-SPI, check settings ' ========== Start of user definable range ===================================== ' you can use HW-SPI of the AVR (recommended) or a driver build in Soft-SPI, if ' the HW-SPI of the AVR is occupied by an other SPI-Device with different settings ' Declare here you SPI-Mode ' using HW-SPI: cMMC_Soft = 0 ' not using HW_SPI: cMMC_Soft = 1 Const Cmmc_soft = 0 #if Cmmc_soft = 0 ' --------- Start of Section for HW-SPI ---------------------------------------- ' define Chip-Select Pin Config Pinb.4 = Output ' define here Pin for CS of MMC/SD Card Mmc_cs Alias Portb.4 Set Mmc_cs ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M128) Config Pinb.4 = Output ' define here Pin of SPI SS Spi_ss Alias Portb.4 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 = 128 , Noss = 1 Spsr = 1 ' Double speed on ATMega128 Spiinit ' Init SPI ' --------- End of Section for HW-SPI ------------------------------------------ #else ' Config here SPI pins, if not using HW SPI ' --------- Start of Section for Soft-SPI -------------------------------------- ' Chip Select Pin => Pin 1 of MMC/SD Config Pinc.0 = Output Mmc_cs Alias Portc.0 Set Mmc_cs ' MOSI - Pin => Pin 2 of MMC/SD Config Pinc.1 = Output Set Pinc.1 Mmc_portmosi Alias Portc Bmmc_mosi Alias 1 ' MISO - Pin => Pin 7 of MMC/SD Config Pinc.2 = Input Mmc_portmiso Alias Pinc Bmmc_miso Alias 2 ' SCK - Pin => Pin 5 of MMC/SD Config Pinc.3 = Output Set Pinc.3 Mmc_portsck Alias Portc Bmmc_sck Alias 3 ' --------- End of Section for Soft-SPI ---------------------------------------- #endif ' ========== End of user definable range ======================================= ' Error Const Cperrdrivereset = 225 ' Error response Byte at Reset command Const Cperrdriveinit = 226 ' Error response Byte at Init Command Const Cperrdrivereadcommand = 227 ' Error response Byte at Read Command Const Cperrdrivewritecommand = 228 ' Error response Byte at Write Command Const Cperrdrivereadresponse = 229 ' No Data response Byte from MMC at Read Const Cperrdrivewriteresponse = 230 ' No Data response Byte from MMC at Write Const Cperrdrive = 231 Const Cperrdrivenotsupported = 232 ' return code for DriveGetIdentity, not supported yet Wait 1 ' Wait some time before initialising MMC/SD Dim Gbdriveerror As Byte ' General Driver Error register Dim Gbdriveerrorreg As Byte ' Driver load Error-Register of HD in case of error Dim Gbdrivestatusreg As Byte ' Driver load Status-Register of HD on case of error Dim Gbdrivedebug As Byte $lib "MMC.LIB" ' link driver library $external _mmc 'Gbdriveerror = Driveinit() ' Init MMC/SD Card
Aus meinem Code habe ich alle Berechnungen weggelassen, aber trozdem hat sich das Programm (in diesem fall) beim 10404ten schreiben aufgehängt(also nach fast 3 Stunden) (über Timer0 1 mal schreiben pro sec.) Erstaunlicherweise hat die "schreib LED" aber weiter geblinkt(nicht über Timer0)
nun hab ich den Timer gelöscht und statt dessen einen Schalter eingebaut. Leider selbes Ergebniss: ich kann nicht auf die Karte schreiben. Datei wurde vom µC erstellt, mit dem PC geöffnet, ein Leerzeichen hinzugefügt und gespeichert und schon konnte der µC wieder schreiben.
Eine Idee war, ob es mit der Pointerposition zu tun hat aber nachdem ich die Pointerposition eingebaut hatte ging es immer noch nicht.
Vielen Dank für deine Mühe!!!
der DS1337 hört sich interessant an - aber erst muss die SD-Karte richtig arbeiten![]()
Lesezeichen