Hi@all, ich bin ein absoluter neuling in sachen microcontroller. Ich versuche momentan 3 ATMEGA8515 über SIP zu vernetzen (1 Master 2 Slave). Ich habe mich schon durch das ganze Internet gewühlt aber nichts gefunden. Bzw. wenn ich was gefunden habe, habe ich es nicht wirklich verstanden. Vielleicht könntet ihr mir auf die sprünge helfe. Also was ich bisher weiß ist das ich folgende verkabelund machen muss: MISO(Master) --> MISO(Slave) MOSI(Master) --> MOSI(Slave) SCK(Master) --> SCK(Slave) PB0(Master) --> SS(Slave 1) PB1(Master) --> SS(Slave 2) Zudem weiß ich wenn ich an Slave 1 senden will PB0 low sein muss. So nun hört es aber schon auf mit meinem wissen. Vielleicht kennt jemand eine Gute anleitung wie ich jetzt was zu initialisieren habe bzw welche funktionen ich benutzen muss. Schonmal danke für eure hilfe Tobi
schau mal hier: http://www.atmel.com/dyn/products/app_notes.asp?family_id=607 -> "AVR151: Setup and use of the SPI on tinyAVR and megaAVR devices" Vielleicht helfen die Assembler/ C -Code Beispiele. Gruss Uwe
Nachtrag: Ich seh gerade, die Beispiele sind nur für C. Im DB der Controller sollte aber (AFAIK) auch ein Assembler Code-Happen zu finden sein.
Hi schonmal danke für eure Hilfe. Also ich hab vorhin vergessen zu erwähnen das ich das ganze in C programmieren will. Der Code im Datenblatt bringt mich schonmal etwas weiter nur will ich das der slave noch etwas zurück gibt. Wie schaffe ich das? Tobi
Du könntst beispielsweise folgendes versuchen: 1. Master wählt den gewünscht Slave 2. Master sagt Slave, was er wissen will (z.B. Zustand PortB am Slave x) 3. Slave legt diese Info im SPI-Senderegister ab 4. Master holt sich diese Info, indem er Dummy-Daten in den Slave taktet und dabei den MISO-Pin abfragt. Gruss Uwe
SPI ist wie eine lange Kette (Schieberegister), wenn du auf der einen Seite etwas reinschiebst (z.B. 3 Bit), kommt auf der anderen Seite etwas raus (dann auch 3 Bit). Wenn du was vom Slave empfangen willst, musst du es bei diesem ins Senderegister schreiben. Dann vom Master was Beliebiges an den Slave senden - Hauptsache, du "schiebst was rein". Gleichzeitig sendet der Slave dann an den Master. Jetzt musst du nur noch dessen Empfangsregister auslesen. Eine einfache Übersicht findest du hier: http://www.uni-koblenz.de/~physik/informatik/MCU/SPI.pdf MfG, Michael
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.