Gast
#508049
Tach, kann ich Daten über SPI auf ähnliche Weise empfangen, wie über UART? Also Byteweise. Oder ist SPI nur zum Programmieren geeignet?
|
Anzeige
|
Daten über SPI?
Gast
#508049
Tach, kann ich Daten über SPI auf ähnliche Weise empfangen, wie über UART? Also Byteweise. Oder ist SPI nur zum Programmieren geeignet? >kann ich Daten über SPI auf ähnliche Weise empfangen, wie über UART? >Also Byteweise. Ja
Gast
#508051
Nee, kannst auch byteweise (8 Bit) empfangen/senden. Mit vorzüglicher Hochachtung Schorsch
Gast
#508057
Gibt es denn da auch ne Art Register wie beim UART, wo die Daten abgelegt werden? Oder wie funktioniert die Auswertung dabei? Möchte Daten vom PC an die SPI Schnittstelle des Mikrocontrollers schicken. Muss ich da irgendetwas beachten, von wegen Synchronisation? Rahul Der trollige wrote: >>Also Byteweise. > Ja Nein... Bitweise - ist ja seriell :)
Gast
#508066
> Gibt es denn da auch ne Art Register wie beim UART, wo die Daten > abgelegt werden? Ja, nennt sich SPDR. Näheres im Datenblatt, erhältlich hier: http://www.atmel.com
Gast
#508130
Coole Sache, hab ich mir gerade mal angeschaut. Jetzt würde ich gerne Daten vom PC über USB an die SPI-Schnittstelle bringen. Ist das Grundsätzlich möglich. Wie kann ich denn Daten vom PC über USB senden?
Gast
#508134
Der FT2232 kann SPI.
Gast
#508254
Schau mal hier rein http://de.wikipedia.org/wiki/Glaskugel und poste dann hier, was Leute für Infos brauchen könnten um dir weiter zu helfen. @Schorch Woher weist du das denn "Ja, nennt sich SPDR." ? Hast du die besagte Glaskugel?
Gast
#508268
Kann das sein, dass jemand meine Glaskugel geklaut hat, und bei Ebay verkauft...? Hätte dir ja sonst gern geholfen... Aber ohne genaue Infos... Ich möchte auch von PC aus über die USB-Schnittstelle, mit einem Mikrocontoller dazwischen einen Baustein mit SPI-Schnittstelle ansprechen. Dabei sind mir einige Sachen noch nicht ganz klar. Auf jedem Fall braucht man sowas wie einen USB-Treiber. Man kann entweder einen uC verwenden der sowohl eine USB wie auch SPI-Schnittstelle verwendet oder man nimmt so einen Baustein von FTDI dazwischen. Die FTDI-Bausteine haben den Vorteil, dass die sonst recht aufwendige USB-Treiberprogrammierung mit der zugehörigen Software vereinfacht wird. Mit ist aber auch noch nicht so ganz klar wie ich vom Anwendungsprogramm aus den uC steuern bzw. ansprechen kann und wie ich über die ganze Kette schließlich den SPI-Baustein ansprechen kann. Ich denke man braucht sowas wie eine Firmware auf dem uC die, die Kommunikation zwischen den Ports macht (evtl. ein Gateway). Recht viel weiter bin auch noch nicht gekommen.
Gast
#509895
Also ich hab mir nen kleinen Pegelwandler mit dem Max232 gebastelt und schicke Daten von der seriellen Schnittstelle über den Max an den Atmega88. Wenn ich die Daten per UART empfange, klappt das. Nur per SPI nicht. Hab den Code mal angehangen, vielleicht kann mir wer sagen wo der Fehler liegt? Gruß Guido
Gast
#509935
@ Thomas Fürst Ich möchte auf den PICkit Serial Analyzer von Microhcip hinweisen, der samt Windows-Software daherkommt und ziemlich preiswert ist. http://www.microchip.com/stellent/idcplg?IdcServic... Vielleicht gibt es die Soft- und die Firmware auch irgendwo zum Download, so kann man das Ding dann auch selber bauen. (Beim PICkit 1 ist das so).
Gast
#509939
Sorry, der Link scheint nicht zu funktionieren. Ich füge ihn nochmals ein http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en028600 Wenn's nicht klappt: www.microchip.com und nach "PICkit Serial Analyzer" suchen
Gast
#509957
So, versuche es nun mit einen Code aus der Codesammlung: /************************************************************** Es soll alle halbe Sekunde im Wechsel 0 bzw. 1 gesendet werden. Am korrespondierenden Slave soll zur Indikation jeweils die LEDs an bzw. aus gehen Verdrahtung: MISO(Master) --> MISO(Slave) MOSI(Master) --> MOSI(Slave) SCK(Master) --> SCK(Slave) PB0(Master) --> SS(Slave) **************************************************************/ #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> volatile unsigned char data; unsigned char status; SIGNAL (SIG_SPI) { data = SPDR; if (data == '1') PORTD = 0x00; //LEDs an if (data == '0') PORTD = 0xff; //LEDs aus } void slave_init (void) { DDRB |= _BV(PB4); //MISO als Ausgang, der Rest als Eingang SPCR = _BV(SPE) | _BV(SPIE); //Aktivierung des SPI + Interrupt status = SPSR; //Status löschen } int main (void) { DDRD = 0xff; slave_init (); sei (); for (;;); return 0; } Wo muss ich was von der seriellen Schnittstelle anschließen? Meine Daten an MOSI, klar. Aber die anderen? Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|