Forum: Mikrocontroller und Digitale Elektronik ATmega328p und zwei SPI Kanäle


von Dionysos 3. (dionysos328)


Lesenswert?

Hallo Leute,

ich stehe vor der Aufgabe, mit einem 8bit-µC von Atmel (ATmega328p) 
einen Drehratensensor zu realisieren.

Als Sensor habe ich den MLX90609 vorliegen, welcher per SPI angebunden 
werden soll.
Über die gleiche SPI-Schnittstelle soll auch eine SD-Karte angebunden 
werden, um Daten loggen zu können.
Für diese beiden Aufgaben ist der µC der SPI-Master.

Nun soll nach Möglichkeit auch die Option vorhanden sein, Befehle von 
einem Atmel 32bit-µC auf einer anderen Platine entgegen zu nehmen.
Dazu müsste ein separates SPI-Interface als Slave konfiguriert werden.

Ist das mit dem gegeben ATmega328p überhaupt möglich?
Meines Wissens verfügt er nur über eine Hardware-SPI Schnittstelle.

Und ist der µC wohl schnell genug, um die Daten des Sensors mit hoher 
Abfragefrequenz zu lesen und gleichzeitig auf der SD-Karte wegzuloggen?

Danke und Grüße,
dionysos

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

dionysos 328 schrieb:

> Ist das mit dem gegeben ATmega328p überhaupt möglich?

Das kommt auf die erforderlichen Datenraten an

> Meines Wissens verfügt er nur über eine Hardware-SPI Schnittstelle.

SPI ist ja nicht so dermassen komplex, dass man es nicht mit ein paar 
Pins und ein wenig Software realisieren kann.

> Und ist der µC wohl schnell genug, um die Daten des Sensors mit hoher
> Abfragefrequenz zu lesen und gleichzeitig auf der SD-Karte wegzuloggen?

'hohe Abfragefrequenz' ist keine Angabe mit der man mal ein bischen 
rechnen könnte.
Der Sensor wird eher nicht das Problem sein. Die SD Karte schon. Denn 
auf eine SD Karte zu schreiben, überhaupt wenn da ein Filesystem 
involviert ist, ist normalerweise um Grössenordnungen langsamer als 
alles andere.

Aus dem Bauch raus würde ich die Hardware-SPI für die Kommunikation mit 
dem anderen µC reservieren und die restlichen beiden SPI über Software 
abwickeln. Denn SPI als Master zu betreiben ist relativ trivial, weil du 
alles kontrollieren kannst. Schwieriger ist es schon als Slave zu 
agieren. Denn dort drückt dir der andere Teilnehmer sein Timing aufs 
Auge.

: Bearbeitet durch User
von Oliver (Gast)


Lesenswert?

Beim Mega328P kann man die USART auch als SPI benutzen (nur als Master, 
aber immerhin). Wenn du die also nicht als UART benötigst, oder da eine 
Software-UART einsetzen kannst, hast du 2 Hardware-SPI verfügbar.

Oliver

von Nico (Gast)


Lesenswert?

Tellerrand... Es gibt genug 28-Pin PIC mit >=2*HW-SPI

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:

> Aus dem Bauch raus würde ich die Hardware-SPI für die Kommunikation mit
> dem anderen µC reservieren und die restlichen beiden SPI über Software
> abwickeln. Denn SPI als Master zu betreiben ist relativ trivial, weil du
> alles kontrollieren kannst. Schwieriger ist es schon als Slave zu
> agieren. Denn dort drückt dir der andere Teilnehmer sein Timing aufs
> Auge.


Nachtrag:
sehe gerade im Datenblatt des 328, dass man dessen UART auch als SPI 
benutzen kann. Wodurch sich die Frage Hardware oder Software gar nicht 
mehr stellt.

Du hast aber schon erst mal im Datenblatt studiert, welche Möglichkeiten 
du überhaupt mit diesem µC hast?

von Peter D. (peda)


Lesenswert?

dionysos 328 schrieb:
> Befehle von
> einem Atmel 32bit-µC auf einer anderen Platine entgegen zu nehmen.

Als Slave-Transmitter ist das AVR-SPI schlichtweg grottig.
Der 32-Bitter wird den AVR hoffnungslos überfahren.
Ohne zusätzliches Handshake kriegt man das nicht zuverlässig zum Laufen.

Nimm die UART oder das I2C, das geht auf dem AVR deutlich besser.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.