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
Ich sehe nicht, dass, oder wie, man mit einem AVRISP mkII etliche SlaveSelect Signale ausgeben kann. Also nein.
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
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.
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?
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
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.
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?
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.
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.
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.
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).
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.