Hallo nochmal und zwar habe ich einer SPI kommunikation über den Arduino laufen der über die GUI parameter erhält und diese an dem Serial EEPROM via SPi sendet um dies anzusteuern.
Nun zb wenn ich auf dem EEPROM schreiben möchte ist es wie folgt aufgebaut:
wenn ich etwas auslesen möchte dann wie folgt: | Instruction (8-Bit) | Adresse (8-Bit) so und auf der MISO-Leitung sollte ich als Input die 8-Bit Value haben.
Nun habe ich das mit dem Oszilloskop gemessen also die MOSI und MISO leitung doch da sehe ich das gleiche und zwar folgendes:
|Instruction(8-bit)| Adresse (8-bit)| Value(8-bit)|
Habe ich da was falsch gemacht, weil normalerweise sollte ich doch auf der MISO leitung den Value (8-Bit) sehen oder täusche ich mich?
Stimmt hast recht, weil ich habe das problem, dass ich auch nciht den richtigen Wert auslesen kann, bekomme den falschen wert raus.
Hier der Code:
void single_control_spi()
{
Serial.println("single control vor einlesen der Werte");
if (Serial.available() > 0 )
{
byte indication = byte(Serial.parseInt());
byte address = byte(Serial.parseInt());
byte data = byte(Serial.parseInt());
//falls indication=1, dann schrieben, d.h. WREN aktivieren
if (indication==1)
{
//WREN_eeprom();
//Serial.println("WREN-ENALBLED");
digitalWrite(chipselect_mc,LOW);
//SPI.transfer(WREN);
//digitalWrite(chipselect_mc,HIGH);
//delay(10);
//digitalWrite(chipselect_mc,LOW);
SPI.transfer(WRITE);
SPI.transfer(address);
//Serial.println("Adresse :");
SPI.transfer(data);
//Serial.println(data);
digitalWrite(chipselect_mc,HIGH);
delay(10);
digitalWrite(chipselect_mc,LOW);
SPI.transfer(READ);
SPI.transfer(address);
byte data1 = SPI.transfer(0xff); //dumy byte damit das gesendete Data eingetragen in miso geshiftet wird
Serial.println("inhalt von Adresse: ");
Serial.print(address);
Serial.println(data1);
digitalWrite(chipselect_mc, HIGH);
}//end if indication 1
}//end if serial
}//end if fu
Du machst viele Fehler.
Serial.begin(); fehlt
EM und inByte ist nirgens definiert #define WREN 6 ersetzt alle "WREN" mit 6 auch in Funktionsnamen. Das darf nicht sein.
if (Serial.available() > 0)
{
inByte = Serial.read();
else if (inByte==61)
{
Serial.println("bin in loop fuer single spi control");
single_control_spi();
}
}
Das "else if (inByte==61)" ist falsch. entweder fehlt die geschwungene Klammer vorher aber dann wird inbyte nicht gelesen oder das else ist falsch.
Bitte gib uns den lauffähigen Sketch. Und nicht etwas was sicher nicht die Hardwarefehler produziert die Du bschreibst.