ATMega32: Software-SPI ohne Aufwand (nicht) möglich? Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
ATMega32: Software-SPI ohne Aufwand (nicht) möglich? |
|
|
|
|
BID = 915903
PhyMaLehrer Schriftsteller
Beiträge: 911 Wohnort: Leipzig
|
|
Ich verwende einen ATMega32 und Bascom
Verstehe ich das richtig, daß ich bei einem SPI-Slave die hardwaremäßig vorgegebenen Pins benutzen muß und der Befehl "Config Spi = Soft" sich nur auf den Master bezieht? Ich habe auch softwaremäßige Slave-Lösungen gefunden, aber wenn ich keinen zusätzlichen Programm- und Rechenzeitaufwand haben möchte, bleibt wohl nur die Hardware-SPI?
Hintergrund der Frage:
Ich habe mit vier "altertümlichen" vierfach-Punktmatrixanzeigen VQC10 (DDR-Produktion) eine sechzehnstellige Anzeigezeile aufgebaut. Wegen des 1 KByte umfassenden Zeichengenerators habe ich einen ATMega32 mit dieser EEPROM-Größe benutzt. Da er über genügend Anschlüsse verfügt, konnte ich auf weitere Dekoderschaltkreise verzichten und die 16 Stellen-, 7 Zeilen- und 5 Datenleitungen direkt anschließen. Es wird auch schon prima die jeweils einprogrammierte Zeile angezeigt, allerdings will ich der Anzeige ja auch wechselnde Daten übermitteln können.
Es sind gerade noch die Pins MOSI, MISO und SCK übrig, über die ich den ATMega programmiere. Diese Pins wollte ich deshalb auch zur Datenübermittlung nutzen. Es ist das erste Mal, daß ich SPI benutze!
Im "Mikrocontroller-Lehrbuch" von Roland Walter fand ich die Bemerkung, daß man gegebenenfalls auch auf den vierten Anschluß "SlaveSelect" verzichten könne, wenn nur ein Slave vorhanden ist. Das würde ja bei mir passen.
Aber genau über diesen Anschluß wird doch dem Slave mitgeteilt, daß die SPI-Schnittstelle jetzt Daten übermittelt, oder?
Ich habe (neben den 7 Zeilen-Leitungen) jetzt noch genau einen anderen Pin frei und wollte deshalb eine Software-SPI konfigurieren, die die gewohnten Anschlüsse MOSI, MISO und SCK benutzt sowie den einen noch freien Pin als SS. Aber das scheint nicht zu funktionieren...
Ich habe mich schon damit abgefunden, doch einen 1-aus-8-Dekoder für die 7 Zeilenleitungen zu benutzen (3 Bit) und die 5 Datenleitungen auf die restlichen 5 Bits dieses Ports zu legen. Damit bekomme ich die Hardware-SPI-Pins alle frei. Aber ich wollte meine Frage trotzdem stellen, damit ich was dazulerne. Kann mir bitte ein Experte weiterhelfen? |
|
BID = 915915
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
BID = 915921
PhyMaLehrer Schriftsteller
Beiträge: 911 Wohnort: Leipzig
|
Vielen Dank für die vielen Links! Auf das Naheliegende, mal bei Atmel nachzusehen, bin ich natürlich nicht gekommen...
Ich habe die beiden Applikationen jetzt erst einmal nur überflogen, trotzdem habe ich den Eindruck gewonnen, daß für den Slave der Pin SS immer auf L liegen muß, damit er funktioniert...?? Für Geräte, die nur senden oder nur empfangen, kann ich jeweils eine der Leitungen MISO oder MOSI einsparen, aber SS ist doch immer im Spiel?
Bei den Optionen des "Config Spi"-Befehls für die Hardware-SPI in Bascom gibt es auch "MASTER = YES|NO". Aber auch mit "MASTER = NO" kann ich doch SS wohl nicht einsparen, da der Controller ja nicht weiß, daß er der einzige Slave ist, deshalb immer empfangsbereit sein kann und soll und kein SS-Signal braucht?
Aber ich schaue mir das noch genauer an!
++++++++++++++
Edit: Um Mißverständnissen vorzubeugen: Meine Anzeige ist natürlich ein Slave, der ja irgendwie aktiviert werden muß. Ohne SS auf L zu legen, ist das doch wohl nicht möglich bzw. ich kann SS des Slaves nicht "umdefinieren" auf einen anderen Pin?
[ Diese Nachricht wurde geändert von: PhyMaLehrer am 31 Jan 2014 14:19 ]
|
BID = 915923
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| daß für den Slave der Pin SS immer auf L liegen muß, damit er funktioniert...? |
Wenn der als Chip-Select benutzt wird.
Wenn das aber nicht nötig ist, kann man das Signal auch intern festlegen, und dann ist der Pin frei verfügbar.
|
BID = 915943
PhyMaLehrer Schriftsteller
Beiträge: 911 Wohnort: Leipzig
|
Zitat :
perl hat am 31 Jan 2014 14:37 geschrieben :
|
kann man das Signal auch intern festlegen |
Hhmm, mal sehen, ob ich etwas dazu finde.
Vielen Dank erst mal!
|
BID = 916200
PhyMaLehrer Schriftsteller
Beiträge: 911 Wohnort: Leipzig
|
Ich habe leider nichts gefunden, wie ich Pin SS einsparen könnte. Die Leitung vielleicht, aber dann müßte ich den Pin SS dauerhaft auf L legen. Jedenfalls wird er nach meinem Verständnis (was falsch sein kann) auf der Slave-Seite auf jeden Fall gebraucht...
Ich habe jetzt eine andere Lösung gefunden, die nicht aufwendig ist, funktioniert und zu der ich nichts an der Leiterplatte ändern muß:
Ich habe das 5. Datenbit, das mit dem SS-Signal "kollidierte", auf den einzigen noch freien Pin gelegt. Nun sind es bei der Ausgabe der Daten nur ein paar Befehle mehr, um dieses eine Bit abzutrennen.
Es funktioniert, Pin SS ist frei und soweit ich das überprüfen kann, ohne bisher einen "Master" zu haben, ist ein Anflug von Funktion der SPI-Schnittstelle vorhanden. Es gibt ja da bei der Konfiguration noch einige Optionen, über die ich mir noch klar werden muß.Aber wie gesagt, ein Anfang ist gemacht!
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag heute wurden bisher 4 Beiträge verfasst © x sparkkelsputz Besucher : 182307007 Heute : 429 Gestern : 4419 Online : 534 10.11.2024 6:33 1 Besucher in den letzten 60 Sekunden alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0873231887817
|