ATMega32: Software-SPI ohne Aufwand (nicht) möglich?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 19 9 2024  23:46:19      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
ATMega32: Software-SPI ohne Aufwand (nicht) möglich?

    







BID = 915903

PhyMaLehrer

Schriftsteller



Beiträge: 908
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

 

  


Zitat :
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?
Nein, man braucht diesen Pin nicht unbedingt, sondern kann ihn auch als GPIO umwidmen.
Wenn man ihn für die SPI-Schnittstelle benutzt, dann kann mittels /SS dem Chip mitgeteilt werden, daß er jetzt nicht Master ist und er seine Ausgangstreiber abschalten muss.

http://www.atmel.com/images/doc8057.pdf
http://www.atmel.com/images/doc2585.pdf
Zu diesen Artikeln gibts auch Software: http://www.atmel.com/Images/AVR1309.zip , http://www.atmel.com/Images/AVR151.zip

Beim Debuggen nützt dir evtl auch dieser Artikel etwas:
http://www.atmel.com/Images/doc2557.pdf , http://www.atmel.com/Images/AVR303.zip


BID = 915921

PhyMaLehrer

Schriftsteller



Beiträge: 908
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: 908
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: 908
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!


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


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 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 28 Beiträge verfasst
© x sparkkelsputz        Besucher : 182042273   Heute : 5040    Gestern : 5652    Online : 253        19.9.2024    23:46
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0509989261627