INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Due als SPI Slave
15.11.2018, 16:32
Beitrag #1
Arduino Due als SPI Slave
Hallo zusammen,

ich möchte den Arduino Due als Slave bei einer SPI Kommunikation nutzen.
Da die <SPI.h> Bibliothek von Arduino nur Master Verhalten zulässt, möchte ich auf dem verbauten ATSAM3X8E Chip durch Setzen der entsprechenden Register den Slave Modus aktivieren. Ich arbeite mit der Arduino IDE.

Zum aktivieren von SPI setze ich das SPI Enable Bit (SPIEN) im SPI Control Register:

REG_SPI0_CR |= 0x00000001;

(Die richtige Bezeichnung zum Ansprechen des Registers habe ich in einem anderen Thread entdeckt. Im Datenblatt des ATSAM3X8E wird das Register nur als SPI_CR bezeichnet.)

Frage ich nun den SPI Enable Status im SPI Status Register ab:

REG_SPI0_SR & 0x00010000

erhalte ich allerdings eine 0 Huh


Daher war mein nächster Ansatz, in der Implementierung der Arduino SPI Bibliothek nachzuvollziehen, wie dort die entsprechenden Register angesprochen werden. Dort werden die Register jedoch mit anderen Bezeichnungen angesprochen (z.B. SPCR für das SPI Control Register). Diese Bezeichnungen akzeptiert mein Compiler nicht.
Kann mir jemand einen Tip geben, wie ich beim Arduino Due ("per Hand") den SPI Slave Modus aktiviere ?

vielen Dank im Vorraus Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.11.2018, 16:42
Beitrag #2
RE: Arduino Due als SPI Slave
Da ich keinen DUE habe, kann ich Dir nicht direkt helfen.

Die Bezeichnungen der Register wie SPCR müssen in den Libs der Prozessorarchitektur unter <arduino>\hardware\... definiert sein (wahrscheinlich in Core). Da musst Du dort suchen oder hoffen, dass das hier jemand schon getan hat.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2018, 13:14
Beitrag #3
RE: Arduino Due als SPI Slave
Hallo Tommy,

vielen Dank für deine Hilfe. Ich habe zunächst im Verzeichnis C:\Programme\Arduino gesucht, hab dort allerdings nichts gefunden, was für den Arduino gepasst hätte. Nach einiger Suche habe ich dann festgestellt, dass unter C:\User\AppData\Local ein weiterer Arduino Ordner existiert. Der Ordner AppData war bei mir standardmäßig ausgeblendet. Klick man sich dort zum richtigen Prozessor durch, findet man dort unter anderem ein Ordner 'instance'. In diesem liegen Dateien, in denen die Adressen der Register auf dem Controller den entsprechenden Schlüsselwörtern, die im Code verwendet werden können, zugeordnet sind. In meinem Fall sind in der Datei 'instance_spi0.h' die Adressen der SPI-Register (decken sich mit dem Datenblatt) mit Schlüsselwörtern wie z.B. 'REG_SPI0_CR' (für das SPI Control Register) verknüpft.

Falls also jemand die Register des Arduino Due direkt ansprechen möchte, ist ein Blick in den oben erwähnten Ordner unter AppData\Local (zumindest bei Windows 10) sinnvoll.

viele Grüße
Neuling
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2018, 23:21
Beitrag #4
RE: Arduino Due als SPI Slave
Hallo Neuling,

ich bin "DUE-Fan". Beigefügt eine kleine Demo für den SPI als Slave.

Gruß
GuaAck


Angehängte Datei(en)
.ino  SPI_Slave_Demo.ino (Größe: 843 Bytes / Downloads: 284)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wert von einem Arduino zu einem zweiten Arduino senden Thorsten_S 9 2.322 14.10.2019 14:48
Letzter Beitrag: Thorsten_S
Exclamation Frage zur I2C zwischen Master und Slave saberlucien 6 2.329 27.02.2018 15:49
Letzter Beitrag: Tommy56
  I2C Slave Empfang geht aber Senden? Franz54 9 5.524 09.11.2017 22:05
Letzter Beitrag: Tommy56
  I2C Master Slave/Software Master Slave? Treeshort 11 3.738 02.10.2017 12:48
Letzter Beitrag: hotsystems
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 5.283 29.04.2017 14:29
Letzter Beitrag: hotsystems
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 4.491 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 11.884 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf
  Zum DS1307RTC weiteren I2C Slave anschliessen? DL1AKP 3 1.971 03.12.2014 10:12
Letzter Beitrag: DL1AKP
  i2c-Slave: Kontrolle der korrekten i2c-Verbindung HaWe 0 1.527 27.09.2014 18:06
Letzter Beitrag: HaWe
  I2C Bytes lesen Master Reader/Slave Sender andre35 6 11.069 20.07.2014 14:42
Letzter Beitrag: andre35

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste