User manual
RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library
Wie gesagt – normalerweise benötigen Sie die SPI Funktionen nicht. Diese werden 
aber von den im Folgenden beschriebenen Funktionen verwendet, um auf das am SPI 
Bus angeschlossene EEPROM zuzugreifen. 
uint8_t SPI_EEPROM_readByte(uint16_t memAddr)
Liest ein einzelnes Byte an Adresse „memAddr“ aus dem EEPROM aus. Die Addresse 
darf bei unserem 32 KB großen EEPROM im Bereich von 0 bis 32767 liegen.
Beispiel: 
// Wir lesen in der folgenden Zeile ein Byte von Adresse 13860 aus dem EEPROM: 
uint8_t data = SPI_EEPROM_readByte(13860); 
void SPI_EEPROM_readBytes(uint16_t startAddr, uint8_t *buffer, uint8_t length)
Liest beginnend bei Adresse „startAdr“ bis zu 255 Bytes (length) in ein entsprechend 
großes Array (buffer).
void SPI_EEPROM_writeByte(uint16_t memAddr, uint8_t data)
Speichert ein Byte (data) an einer bestimmten Adresse (memAddr) im EEPROM.
void SPI_EEPROM_writeBytes(uint16_t startAddr, uint8_t *buffer, uint8_t length)
Speichert bis zu 64 Bytes (length) im Array „buffer“ beginnend bei „startAddr“ im 
EEPROM. 
Bitte beachten Sie, dass nur 64 Bytes auf einmal geschrieben werden 
können.   64   Bytes   ist   die   Seitengröße   (Pagesize)   des   EEPROMs   und 
mehr kann   es nicht  zwischenspeichern bevor es   die Daten schreibt. 
Ausserdem müssen die Daten die hintereinander geschrieben werden 
sollen immer innerhalb einer Seite liegen, also z.B. zwischen 0 und 63, 
64 und 127, 128 und 191 ...! Bei überschreiten der Seitengröße, über-
schreibt das EEPROM sonst wieder die Daten zu beginn der jeweiligen 
Seite. Sie können natürlich z.B. bei Adresse 50 mit dem Schreiben be-
ginnen, aber wenn mehr als 14 Bytes geschrieben werden, beginnt der 
Adresszähler wieder bei 0 und überschreibt die dort im Zwischenspei-
cher bereits vorhandenen Daten.
Beim Lesen von Daten aus dem EEPROM müssen Sie die Seitengröße 
übrigens nicht beachten und können theoretisch auch das komplette 
EEPROM auf einmal auslesen. 
Das EEPROM benötigt 5ms um die Daten zu schreiben. In dieser Zeit kann man nicht 
auf das EEPROM zugreifen. Um den aktuellen Status abzufragen kann die Funktion
uint8_t SPI_EEPROM_getStatus(void);
verwendet werden. Man kann dann z.B. mit 
if(!(SPI_EEPROM_getStatus() & SPI_EEPROM_STAT_WIP)) { 
// ... 
}
abfragen ob das EEPROM nicht mehr mit dem Schreiben von Daten beschäftigt ist. 
Das machen die Funktionen oben aber auch schon selbst, also benötigt man das nur, 
wenn man in der Zeit noch andere Dinge erledigen muss! 
- 17 -










