Forum: Mikrocontroller und Digitale Elektronik AVRISP mkII als SPI "Daisy chain" Master


von A. M. (prizefighter)


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

von Ulrich F. (Gast)


Lesenswert?

Ich sehe nicht, dass, oder wie, man mit einem AVRISP mkII etliche 
SlaveSelect Signale ausgeben kann.
Also nein.

von A. M. (prizefighter)


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

von M. P. (phpmysqlfreak)


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.

von A. M. (prizefighter)


Lesenswert?

Hallo und vielen Dank Marcel!

Also scheitert das dann wohl am proprietären internen Protokoll des 
mkII, richtig?

Gibt es vielleicht etwas günstiges und einfach zu programmierendes, 
womit ich meine Daisy chain per SPI mit dem PC verbinden kann?

von Ulrich F. (Gast)


Lesenswert?

A. M. schrieb:
> Gibt es vielleicht etwas günstiges und einfach zu programmierendes,
> womit ich meine Daisy chain per SPI mit dem PC verbinden kann?

Irgend ein AVR Arduino mit USB.
Kostet ca 10% deines Programmieradapters

von M. P. (phpmysqlfreak)


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.

von A. M. (prizefighter)


Lesenswert?

Interessant, Arduino hatte ich auch bereits drüber nachgedacht ob das 
eine Möglichkeit wäre. Haben die eine API, sodass man da mit VB oder 
ähnlichem eine Benutzeroberfläche zum erzeugen der SPI-Daten 
programmieren kann?

von Ulrich F. (Gast)


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.

von A. M. (prizefighter)


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.

von Ulrich F. (Gast)


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.

von A. M. (prizefighter)


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).

von ... (Gast)


Lesenswert?

FTDI hat einige ICs die neben UART auch SPI, I²C und JTAG unterstützen.
Ein AVR mit USB Unterstützung dürfte preislich ähnlich liegen.

von A. M. (prizefighter)


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

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.