Så har jag fått ännu ett obegripligt problem med Arduino (story of my life?)
Jag har en bit kod som jag använt i Arduion Uno för att logga till SD kort och nu ska jag köra den i en "ATmega328 on a breadboard (8Mhz internal clock)" och då händer detta.
SD.begin fungerar, kortet initialiseras
SD.exists fungerar, jag kan se om filen finns eller inte
SD.open fungerar inte, den skapar filen om den inte finns men returnerar false !?!?!?
Efterföljande File.println(...) lägger inte till något till filen (eftersom File är false så är det inte konstigt)
Någon som haft detta eller liknande problem och har någon idé om var felet kan ligga?
Arduino SD.open öppnar filen men returnerar fail (???)
Re: Arduino SD.open öppnar filen men returnerar fail (???)
Troligen ett RAM problem...
Gjorde en mindre sketch och då fungerar det...
Och detta blir resultatet, först utan SD kort sedan med tomt kort och sedan efter en reset.
Långt.. men det funkar 
Gjorde en mindre sketch och då fungerar det...
Kod: Markera allt
#if 1
__asm volatile ("nop"); // BOF preprocessor bug prevent - insert me on top of your arduino-code
#endif
#include <stdio.h>
#include <SoftwareSerial.h>
#include <arduino.h>
#include <LiquidCrystal.h>
// LiquidCrystal (rs, rw, en, d4, d5, d6, d7)
LiquidCrystal lcd( A5, 7, A3, A2, A1, A0);
#include <SD.h>
const int chipSelect = 10; /** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 10 */
unsigned char fail;
void setup()
{
lcd.begin(16,2); // Init LCD
lcd.clear();
Serial.begin(9600); // Open serial communications
Serial.println("Initializing SD card...");
lcd.print("Init. SD card ");
pinMode(10, OUTPUT); // set SD card default chip select pin to output, even if not used
if (!SD.begin(chipSelect)) // see if the card is present and can be initialized:
{
Serial.println("Card failed, or not present");
lcd.setCursor(0, 1); lcd.print("SD card failed ");
fail = fail | 0x01;
} else {
Serial.println("Card initialized.");
lcd.setCursor(0, 1); lcd.print("Card init. OK ");
fail = fail & 0xFE;
}
if (SD.exists("DRYERLOG.TXT") == true)
{
Serial.println("Logg files exist on SD card");
} else { // Files do not exist on card, logging has not been done
Serial.println("No logg files exist on SD card");
}
}
void loop(void)
{
while (fail && 0x01)
{
Serial.println("Insert SD card and reboot"); // if card failed do nothing
lcd.clear(); lcd.print("SD card failure!");
delay(1000);
lcd.setCursor(0,1); lcd.print("Re-insert card!");
delay(1000);
}
Serial.println("Ready to start.");
lcd.clear(); lcd.print("Ready to start.");
delay(1000);
File dataFile = SD.open("DRYERLOG.TXT", FILE_WRITE); // Open logg file
if (dataFile)
{
Serial.println("Opening file");
lcd.setCursor(0,1); lcd.print("Opening file...");
delay(1000);
lcd.clear();
} else {
dataFile.close(); // Close logg file
fail = true; // Error opening file
Serial.println("Cant open file, check SD card...");
lcd.setCursor(0,1); lcd.print("Can't open file!");
delay(1000);
lcd.clear();
}
Serial.println("Closing file");
dataFile.close(); // Close logg file
lcd.clear(); lcd.print("Closing file...");
delay(1000);
}
Kod: Markera allt
Initializing SD card...
Card failed, or not present
No logg files exist on SD card
Insert SD card and reboot
...
Initializing SD card...
Card initialized.
No logg files exist on SD card
Ready to start.
Opening file
Closing file
...
Initializing SD card...
Card initialized.
Logg files exist on SD card
Ready to start.
Opening file
Closing file

-
- Inlägg: 600
- Blev medlem: 26 juli 2011, 20:58:06
Re: Arduino SD.open öppnar filen men returnerar fail (???)
Bra att du postar lösningen, den kommer nog hjälpa nån i frammtiden! 
