AVRISP mkII als SPI "Daisy chain" Master

OP #4139176
Lesenswert?

Hallo verehrte Spezialisten,

ich bin gerade dabei eine SPI Daisy chain bestehend aus mehreren ATmega8 
als Slaves aufzubauen. Da ich benutzerdefinierte Daten vom (Windows-)PC 
auf den SPI-Bus schicken will, kam mir die Idee, ob dies nicht mit dem 
Atmel Programmiergerät direkt gehen könnte. Die Programmierung der AVRs 
mit diesem Adapter erfolgt ja auch über SPI. Leider kam ich bisher noch 
nicht dahinter, wie man hier eigene Bytes rausschicken kann, falls dies 
überhaupt möglich ist.

Ich sollte vielleicht noch erwähnen, dass ich blutiger Anfänger bin, was 
Mikrocontroller angeht. Die prinzipielle Funktionsweise von SPI ist mir 
jedoch bekannt.

Über Eure Ratschläge und Erfahrungen würde ich mich sehr freuen.

Viele Grüsse

Andi
OP #4139187
Lesenswert?

Hallo Ulrich, das ging ja flott, dankesehr!

Ich möchte wie gesagt eine Daisy chain bilden und alle Slaves an den 
gleichen SS-Pin des Masters hängen. Die für den jeweiligen Slave 
bestimmten Daten soll sich selbiger über Adressfilterung selbst heraus 
sieben.

Anschlussschema soll wie folgt aussehen:
http://upload.wikimedia.org/wikipedia/commons/9/97/SPI_three_slaves_daisy_chained.svg

Die Daten fliessen also durch alle Slaves hindurch.

Als Master hätte ich hier gerne den AVRISP mkII falls dies möglich ist.

Geht soetwas oder mache ich einen Denkfehler?

Vielen Dank!

Andi
#4139189
Lesenswert?

A. M. schrieb:
> SPI Daisy chain

Ulrich F. schrieb:
> etliche SlaveSelect Signale

[...] als Begründung für ein "Nein" bei beschriebenem Vorgehen: Falsch!
Was eine Daisy Chain ist, solltest du dir bei gelegenheit noch einmal 
anschauen, Ulrich.


@Andi: Ich vermute, dass es nicht möglich ist, da sich PC und mkII über 
ein weiteres Protokoll unterhalten, welcher das mkII verarbeitet und 
dementsprechend den µC programmiert - also per SPI sein ISP spricht.
#4139197
Lesenswert?

A. M. schrieb:
> etwas günstiges und einfach zu programmierendes

Such' dir einen Controller deiner Wahl mit UART und SPI und 
programmiere/baue einen UART-SPI-Wandler. Einfach die Daten jeweils an 
die andere Peripherie weiterleiten, vielleicht kleinem Puffer.

USB-Seriell-Wandler gibt es auch günstig, da immer weniger PCs mit 
"COM1" ausgestattet sind, oder diesen nur noch auf einer Stiftleiste 
haben.

Du kannst aber auch "USB-SPI-Wandler" bei google oder ebay suchen, kenne 
die Marktsituation dafür nicht.
Gast #4139206
Lesenswert?

A. M. schrieb:
> Haben die eine API, sodass man da mit VB oder
> ähnlichem eine Benutzeroberfläche zum erzeugen der SPI-Daten
> programmieren kann?

Die Arduinos haben einen USB Serial Wandler an Bord.
Meist einen FTDI, CH340, oder einen AVR 8U2, 16U2
Oder einen 32U4 als Prozessor, welcher das mit erledigt

Man quatscht also Seriell mit dem Arduino.
Deine Seriel/SPI Wandlung musst du dann (auf dem Arduino) selber 
basteln.
OP #4139207
Lesenswert?

Um UART wollte ich mich nach Möglichkeit drücken sofern es geht. Wie 
sähe es da mit der Geschwindigkeit aus? Ich will konkret 30 Servos 
(eventuell auch deutlich mehr) mit jeweils einem ATmega8 als Controller 
ansteuern. Übertragen wollte ich jeweils die Slave-Kennung mit 8 Bit und 
einen Stellwert mit 16 Bit, also insgesamt 24 Bit bzw. bei SPI wohl 3 
mal 8 Bit.
Gast #4139211
Lesenswert?

A. M. schrieb:
> Um UART wollte ich mich nach Möglichkeit drücken sofern es geht. Wie
> sähe es da mit der Geschwindigkeit aus? Ich will konkret 30 Servos
> (eventuell auch deutlich mehr) mit jeweils einem ATmega8 als Controller
> ansteuern. Übertragen wollte ich jeweils die Slave-Kennung mit 8 Bit und
> einen Stellwert mit 16 Bit, also insgesamt 24 Bit bzw. bei SPI wohl 3
> mal 8 Bit.

Unbedingt 16Bit?
Wenn dir auch 12Bit reichen, dann würde ich dir X * ebay 181354616511 
empfehlen. Damit gehen bis zu 992 Servos.
OP #4139213
Lesenswert?

Dies Module kenne ich. Das fällt aber leider deshalb aus, weil das Ganze 
unbedingt in Modulbauweise erfolgen soll und nicht mit vorgegebener 
Kanalanzahl. Nach dem Motto, wenn man noch ein Servo mehr braucht, dann 
hängt man es einfach mit dazugehörigem Controller an den Bus. Und das 
Ganze sooft man will (theoretisch).
OP #4141599
Lesenswert?

Ich hätte noch eine generelle Frage zu SPI in Daisy chain Konfiguration:

Angenommene Konfiguration: Ein Master, 10 Slaves, alles ATmega8 AVRs

- Wenn ich hier 80 Bit am Stück vom Master aus in den SPI-Bus pumpe, 
kann ich davon ausgehen, dass jeder der Slaves mit 8 Bit versorgt ist? 
Mein Verständnis ist das, dass solange ich SS auf low halte, die Bits 
einfach durch die Daisy chain geschoben werden, ist das korrekt?
- gibt es eine Möglichkeit, die Slaves per SPI jeweils mit 32 Bit 
Paketen zu versorgen, ohne dass ich das in 4 Pakete mit jeweils 8 Bit 
stückeln muss?
- wie realisiert man solch eine Stückelung in Software, falls dieses 
Stückeln erforderlich sein sollte?

Vielen Dank und viele Grüsse!

Andi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren