Hallo ich will mit einem Freund zusammen an einem AVR einen CANtreiber MPC2515 per SPI betreiben. Nach intensivem Studium der Datenblätter und verschiedener Programme in C und BASCOM, haben wir verstanden was der der CANtreiber für Befehle braucht bzw wie dieser antwortet. wir setzen den negCS auf LOW schreiben den Befehl auf MOSI, evtl auch noch eine Adresse lesen dann die Daten auf MISO und setzen den negCS wieder auf high das SPIinterface wird softwareseitig konfiguriert. wir senden einen READbefehl für ein Register an den CANtreiber. Egal welches Register wir adressieren, wir bekommen immer 255 (ein Byte &hFF) zurück. Wir haben die Variablen in der Software getestet, Leitungen geändert.... uns fällt nichts mehr ein Sogar als wir den CANtreiber aus dem Sockel gezogen haben, hat unser AVR uns den Wert 255 zurückgeliefert. Aber auf dem Interface tut sich was (Burst mit Scope sichtbar gemacht). Hat jemand eine Idee? Wir sind zum Schluss gekommen das nicht der CANtreiber das Problem sein kann (der wurde ja zum Schluss von der Platine genommen), sondern das es am SPIinterface liegt. Gibt es Möglickeiten den SPI zu "testen"? Mit einer Testschaltung oder ich weiss nicht wie - einen Logikanalyser haben wir leider nicht zur Verfügung. vielen Dank für eure Hilfe Jörg
Entweder alles noch einmal GANZ GENAU durchsehen oder ein Oszi bzw. LogicAnalyser besorgen. Helfen können aber auch Beispielprogramm für den/diesen SPI Baustein oder den/diesen uP mit SPI Nutzung. Es gibt (manchmal) verschiedene Initialisierungen bzgl. der aktiven Pegel bzw. der Clk Flanke ; ich glaube 4 mögliche Modi. Modus 00 ist dann der gängiste. Die Anzahl der Clk müssen exakt stimmen für den angeschlossenen Baustein. /CS Pegel ; manchmal muss /CS nach dem Befehlswort kurz de-aktiviert und dann wieder aktiviert werden etc. Situation bzgl. "Pull up" klären. Sind "open collector" bzw. "open drain" Ausgänge dabei --> Dann Pullup zwingend erforderlich. Erstmal einen "einfachen" SPI-Baustein anschliessen, das wäre z.B. ein 74HC595 Schiebregister (Ausgabe). Schwierig ohne Oskar. LED's über Treiber ranhängen und ganz lange Wartezeiten nach JEDER Portausgabe. Dann das blicken beobachten und mitzählen.
Geht auch ohne Logikanalysator. Indem man die Pins manuell bedient und ganz simpel mit LED oder Multimeter sieht was ankommt. Per Programm im Controller, mit der seriellen Schnittstelle - es tun aber auch 2 entprellte Drucktaster und eine LED. Ich hatte den 2515 auch erst man an BASCOM dran, testhalber, und es lief. Nur muss man eben den SPI-Modus korrekt einstellen.
Hallo A.K. kannst du mal deine Pinbelegung und das Program online stellen oder mir mailen (wird meine Mailadresse hier angezeigt? Ich gebe diese zumindest an). Ich denke zwar das wir alles richtig gemacht haben, aber lieber doppelt prüfen als einmal vermuten. Danke soweit schonmal cu Jörg
@Klaus also ich weiss das der MCP2515 mit dem Modus 0,0 und 1,1 arbeitet. Vielleicht muss ich da nochmal nachlesen was der AVR rausschiebt. wurde aber an anderer Stelle nicht explizit erwähnt. Was mich aber in diesem Zusammenhang wundert ist, das der AVR den Wert 255 per SPI einliest. Ist das irgendein Defaultwert - für default hätte ich &h00 erwartet. Oder das es einen Error gegeben hätte, weil das SPIinterface nicht sauber läuft. cu Jörg
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.