SD-kortin ongelma / virransyönti

Kyllä taas kyrsii :imp:

Ongelmani liittyy SD-kortin mystiseen käyttäytymiseen.

Alla oleva koodinpätkä on main loopista. Ihmetys liittyy tällä kertaa
CS-Pin käyttäytymiseen. Monessa paikassa sanotaan, että pinni pitää
olla OUTPUT -moodissa käyttämäni kirjaston takia (#include <SD.h>).

OK. Mutta jos se on koko ajan OUTPUT, niin sleep laskee virrankulutuksen
johonkin 5 milliampeeriin, ei vähempään. Joten ajattelin laittaa pinnin
ennen sleepia INPUT -tilaan, ja taas ennen SD:lle kirjoittamista OUTPUTiksi.
Sleepin virrankulutus laskeekin näin menetellen asialliseen 0.5 milliampeeriin,
mutta SD-kirjoitus ei enää toimi! Arduinonumeroinnin pinnin 10 tilaa ei vissiin
parane muuttaa, jos käyttää SD-kirjastoa? Suoraan sanoen v-tuttaa, koska
sleepin käyttö olisi välttämätöntä!

Alla koodinpätkä, toivottavasti saisin hyviä vinkkejä, olen tapellut tämän
kanssa jo kaksi päivää! Merkkasin murheekryynit punaisella. Tämä koodi
siis toimii mutta ei kirjoita enää SD:lle. Jos kommentoi pinMode(CSPin, INPUT)
ulos, niin SD toimii, mutta sleeppi vie 5 mA.

EDIT: Sain toimimaan! Lisäsin SD-kortin alustusrivin (vihreällä) main looppiin, ja
avot, toimii. pwrDownSleepissa virransyönti on nyt 60uA, mikä on jees.
Kiitokset vastanneille ja apua antaneille.

loop()
{
logDate=logDate+’"’;

pinMode(CSPin, OUTPUT);
digitalWrite(SDPower, HIGH);
delay(1000);
card.init(SPI_QUARTER_SPEED, CSPin);

File dataFile = SD.open(‚Äúdatalog.txt‚ÄĚ, FILE_WRITE);

//if the file is available, write to it:
Serial.println(logDate);

if (dataFile)
{
dataFile.println(logDate);
dataFile.close();
// print to the serial port too:
delay(500);
}
// if the file isn’t open, pop up an error:
else
{
Serial.println(‚Äúerror opening datalog.txt‚ÄĚ);
}
Serial.print("sleeping ");
Serial.println(sleepTime/1000);
delay(1000); //delay to allow serial to fully print before sleep
//digitalWrite(RTCPowerPin, LOW);
//digitalWrite(RTCPowerLed, LOW);
digitalWrite(SDPower, LOW);
pinMode(CSPin, INPUT);
sleep.standbyMode();
sleep.sleepDelay(sleepTime); //sleep for: sleepTime
delay(200);
Serial.println();

}