Ich versuche mit einem CAN-Controller MCP2515 über den SPI-Bus zu Kommunizieren um damit später einen CAN-Hausbus aufzubauen. Ich habe als Controller einen AVR Mega8 und benutze BascomAVR zur Programmierung. C liegt mir nicht und Pascal war mir zu teuer. Mein Problem: Ich komme mit der Konfiguration des MCP nicht zurecht. Ich habe mal ein kleines Testprogramm geschrieben um den Baustein anzusprechen, aber ich erhalte nur 00 oder FF als Rückmeldung. Wäre prima wenn mir jemand mal die genaue Abfolge der Befehle zur Konfiguration des Bausteins sagen könnte. Mein bisheriger Spaghetticode is mal angefügt. Norbert
Hi, ich habe ein ähnliches Problem. Ich bekomme gar keine Rückmeldung. Kannst du mir mal dein Code schicken? cu.
Ich habe mit mcp2515 ein bisschen rumgespielt, und die Kommunikation hat doch geklappt, wie ich mich daran erinnere. Ich versuche morgen das Programm noch mal finden. Schreib mich an
im Anhang ist mein Testcode. Die Kommunikation steht auf jeden Fall. Zumindest kann ich die Oszillatorfrequenz (den Teiler) ändern. Eine wirkliche Kommunikation via CANbus hab ich allerdings (auch aus zeitgründen) noch nicht hinbekommen. Gruss, Michael
Hm.... Danke erstmals, auch wenn ich aus dem SourceCode nicht ganz schlau werde... (Meine Basic tage sind schon lange her) Eigentlich sollte es doch so sein: 1. RESET schicken (0xC0 an SI senden) 2. jetzt sollte ich doch auf die Register des MCP zugriff haben oder nicht? also zum Beispiel das auslesen des CANCTRL Register (0x030F an SI senden) 3. nach dem senden des letzten Adressbits solten die Daten auf SO liegen Oder liege ich hier total falsch?????
Servus, ich kenne leider die BASCOM Syntax nicht, kann daher sein das ich mich täusche. Also falls diese Zeile Spiout Cmd(1) , 2 heißt, dass er über SPI die ersten beiden Bytes vom Cmd-Array ( bei dir: Read-Kommando und Adresse von CANSTAT) senden soll, dann fehlt noch ein drittes Bytes, das sog. dummy-Byte, das man noch an den MCP2515 senden muss, damit der MCP2515 den Registerinhalt auf MISO legt. Im Klartext funktioniert das auslesen eines Register des MCP2515 so: 1. cs low 2. read befehl senden 3. Registeradresse senden 4. Dummy-Byte senden (zeitgleich legt der Controller seine Daten an MISO) 5. cs high mfg Christian
Hi, Und genauso mache ich es: 1. CS auf low 2. Read,Registeradresse und 2 Dummybytes (ich lege einen 32 bit Wert auf SI) 3. CS auf HIGH Und trotzdem bekomme ich keine Antwort vom MCP2515
Hi @Poison Angel: Überdenk noch mal deine Registeradressen, bei mir ist die CANCTRL bestenfalls auf 0x0F nicht 0x030F. gruß Christian
Hi 0x030F: 0x03 -> lese Register 0x0F -> Registeradresse. Man legt doch 0x030F auf SI oder nicht? Oder vielleicht: 1. CS->low 2. 0x03 auf SI 1ms warten 3. 0x0F auf SI 4. 0xFF auf SI 5. CS -> high?? cu.
hi so hab ichs oben schon mal hingeschrieben. Die 1ms warten kannst du dir sparen, da man beim schreiben in das SPDR-Register normalerweise wartet bis SPIF gesetzt ist, (steht aber alles im Datenblatt, sogar mit c-beispiel). Bevor du aber irgendein SPI Kommando an den MCP2515 sendest, solltest su schon ein bisschen warten (siehe MCP2515 Datenblatt 8.1)
hallo, ich hole mal wieder den Uraltthread heraus, aber ich hab da mal ne Frage dazu, und zwar: Woher kommt die 0x80 für den RTS als Basisadresse, ich kann das im Datenblatt leider nicht finden, hat da jemand nen Tip für mich?
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.