Ich versuche die Daten auf einem Eeprom an den Arduino Mega Rev.3 zu übertragen. Nur vorweg, die Speicherung hat geklappt. Beim Eeprom auslesen habe ich die Daten die der Eeprom aussendet mit dem Oszilloskop überprüft und alles ist i.O. - Nur kommen die Daten beim Arduino nicht an!
Ich habe die Anschlüsse überprüft und Pin 50 ist der MISO. Habe ich im Code ev einen Fehler?
Nutze die SPI.h library - und wie gesagt, das Schreiben klappt ohne Probleme...
Hier der Codeausschnitt für das Laden:
if (sicher && !digitalRead(pushEnc))
{
delay(500);
address = eepromAdress;
lcd.clear();
lcd.print("In process...");
// Write One Value to One Address
digitalWrite(ss, LOW);
SPI.transfer(READ); // write instruction
SPI.transfer(address >> 8 );
SPI.transfer(address);
SPI.transfer(data >> 8 );
SPI.transfer(data);
digitalWrite(ss, HIGH);
delay(1000);
lcd.clear();
lcd.print(data);
}
So in etwa geht es mir beim Lesen Deines Postings. Im Betreff steht zwar etwas von EEPROM, im Sketch sehe ich aber überall nur SPI u. dgl.
BTW: Bitte fasse den Sketch in „Code-Tags“ (Posting bearbeiten, dann im Editor den Code markieren und das </>-Symbol ganz links in der Symolleiste klicken. Dann ist der Sketch scrollbar und auch auf einem Tablet halbwegs erträglich lesbar.
Meinen aufgebohrten EEPROM-Merkzettel findest Du jedenfalls hier.
Ja stimmt - es geht um ein SPI Eeprom. Den Code zu lesen habe ich einfach in Read umgeschrieben und vergessen den Beschrieb // write instruction zu löschen.
Wie schon erwähnt - das beschreiben des Eeproms klappt wunderbar. Die Read-Anforderung geht auch raus und der Eeprom gibt die korrekten Daten aus (mit Oszilloskop überprüft).
Nur kommen die Daten nicht in den Arduino...
Müsste doch mit SPI.transfer(READ); klappen dass die Daten SPI.transfer(daten); gelesen und an den Arduino weitergereicht werden?
if (sicher && !digitalRead(pushEnc))
{
delay(500);
address = eepromAdress;
lcd.clear();
lcd.print("In process...");
const byte DerSinnDasUniversumUndDerRest = 42;
// Write One Value to One Address
digitalWrite(ss, LOW);
SPI.transfer(READ);
SPI.transfer(address >> 8);
SPI.transfer(address);
uint16_t result = SPI.transfer(DerSinnDasUniversumUndDerRest) << 8;
result |= SPI.transfer(DerSinnDasUniversumUndDerRest);
digitalWrite(ss, HIGH);
data = result;
delay(1000);
lcd.clear();
lcd.print(data);
}
Danke Dir combie für die Hilfe - bin halt noch ganz am Anfang mit der Progrmmiererei und ich werde das mit dem "DerSinnDasUniversumUndDerRest" noch ergründen um das zu verstehen!
In der Softwareentwicklung wird die Zahl 42 – ähnlich wie 0815 und 4711 – häufig von Programmierern als magische Zahl verwendet, also als fester Zahlenwert, dem jeder ansehen kann, dass er keinen tieferen Sinn hat, sondern nur ein Beispiel für einen beliebigen Wert ist.