Hallo, habe hier einen Atmega2560, der im Grunde vier TMC260-PA ansteuern soll und von einem FT231X angesprochen wird. Nun habe ich allerdings noch ein-zwei Fragen zur Kommunikation. Die TMC260-PA werden ja über ihre SPI-Schnitstelle parametriert. Theoretisch ist das ein einmaliger Vorgang, es schadet mir aber sicherlich nicht, wenn ich die Parameter öfters mal ändern kann, also alle vier über SPI an den Atmega2560 und dann mit entsprechender Software ansprechen und Parameter eingeben/ändern. Ist ja eigentlich mit einer normalen Sternschaltung kein Problem, jedoch hat der Atmega2560 nur eine SS-Leitung soweit ich das mitbekommen habe. Da ich nun aber nicht alle vier Treiber gleichzeitig betreiben kann müssen sie ja irgendwie anderweitig aktiviert werden. Zudem möchte ich den AVR noch über ISP programmieren. Kann ich nun einfach jeden beliebigen Pin am AVR als Ausgang schalten um so dem jeweiligen Treiber zu signalisieren, dass er "dran" ist oder gibt das dann irgendwie Synchronisationsprobleme oder ähnliches? Dann wegen dem FT231X ist es ja im Prinzip einfach. Signalleitungen verbinden, Saft geben und über USB konfigurieren. Jedoch hat dieser auch noch einen Hardware Handshake. Da der Atmega Befehle über USB erhalten soll und anhand dessen dann die Motoren ansteuern soll wäre es eher suboptimal wenn Signale verloren gehen, weil einer der Controller nicht bereit war. Nun weiß ich jedoch nicht wie man den Handshake realisieren würde. Wie würde das Softwaremäßig aussehen und wie bzw. welche Pins müsste ich verbinden? Reicht hier auch ein beliebiger Avr Pin mit entsprechender softwareseitiger verarbeitung? Gibt es Literatur oder dokumentierte Projekte die etwas ähnliches realisiert haben? Beste Grüße Fritz
Fritz schrieb: > Ist ja eigentlich mit > einer normalen Sternschaltung kein Problem, jedoch hat der Atmega2560 > nur eine SS-Leitung soweit ich das mitbekommen habe. Die SS-Leitung ist nur dann erforderlich, wenn der AVR ein SPI-Slave sein soll. Du aber willst mehrere SPI-Slaves mit einem Master ansprechen, und der ist Dein AVR. Also kannst Du als CS-Leitung für jeden der Slaves einen beliebigen als Ausgang konfigurierten Portpin verwenden - vor dem Senden per SPI muss Dein Programm nur die gewünschten Pins aktivieren und danach wieder deaktivieren, fertig ist die Laube. Was die serielle Kommunikation angeht, kannst Du zwar Hardware-Handshake so betreiben, wie Du Dir das gedacht hast (irgendeinen Portpin dafür hernehmen), aber das ist im Grunde genommen gar nicht erforderlich, denn Du kannst auch Softwarehandshake verwenden, bzw. ein Protokoll, bei dem der AVR den korrekten Empfang der Daten explizit bestätigt, und Dein PC solange das Senden der Daten wiederholt, bis die Bestätigung eintrudelt.
Danke für deine Antwort Rufus! Rufus Τ. Firefly schrieb: > Die SS-Leitung ist nur dann erforderlich, wenn der AVR ein SPI-Slave > sein soll. Du aber willst mehrere SPI-Slaves mit einem Master > ansprechen, und der ist Dein AVR. Dann kann ich die ja komplett unbelegt lassen. Programmieren über ISP müsste dann ja ganz normal funktionieren wenn die vier Slaves deaktiviert sind oder? Rufus Τ. Firefly schrieb: > Was die serielle Kommunikation angeht, kannst Du zwar > Hardware-Handshake so betreiben, wie Du Dir das gedacht hast > (irgendeinen Portpin dafür hernehmen), aber das ist im Grunde genommen > gar nicht erforderlich, denn Du kannst auch Softwarehandshake verwenden, > bzw. ein Protokoll, bei dem der AVR den korrekten Empfang der Daten > explizit bestätigt, und Dein PC solange das Senden der Daten wiederholt, > bis die Bestätigung eintrudelt. Dann kann ich im Grunde ja auch den FT230X ohne Hardware Handshake hernehmen (hab jeweils zwei von beiden). Der Atmega2560 hat sowohl genügend Pins und ist schnell genug, sodass man beide Lösungen ohne weiteres nutzen könnte. Welches von beiden wäre einfacher/üblicher/schneller? Grüße Fritz
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.