Hallo Leute, hab da ein Problem. Ich moechte eine CAN Bus mit einem AT90CAN128 und einen ATMega32 aufbauen. Dazu habe ich den ATMega32 mit einem CAN Controller MCP2515 und diesen Controller mit einem MCP2551 verbunden. Den Bus an sich habe ich noch nicht aufgebaut, da ich erstmal den MCP2515 initialisieren will. Dieser ist ueber ISP mit meinem ATMega32 verbunden. Nach der Initialisierung lese ich in der Endlosschleife ein Register aus, da ich ueberpruefen moechte ob die Initialsierung erfolgreich war oder nicht. Leider bekomm ich aber immer nur 0x00 fuer den Registerinhalt CNF3, was aber gar nicht sein kann. Meiner Meinung nach stimmt irgendetwas mit dem SPI-Interface nicht. Ich habe aus diesem Grund auch mal einen Pin des MCP2515 als Ausgang konfiguriert und mal ne LED drangehaengt um zu ueberpruefen, ob der MCP2515 initialisiert wurde. Leider ebenfalls ohne erfolg. Hat jemand eine Idee was ich falsch mache? Den Quellcode habe ich mal im Anhang angehaengt. Gruss Johannes
Johannes schrieb: > // wait ca. 1ms > for (uint16_t i=0; i<8000; i++); Wie kommst du darauf, daß das 1ms wartet? In welchem C-Buch/C-Spezifikation steht denn sowas?
Ich wollte eigentlich eine delay funktion nehmen, daher ist der Kommentar. Mir geht es nur darum etwas Zeit zu verdroedeln damit der Reset abgeschlossen ist.
@ Johannes (Gast) >Ich wollte eigentlich eine delay funktion nehmen, daher ist der >Kommentar. Dann tu das. _delay_ms() ist deine Funktion. MfG Falk
Gut okay ich werde es aendern. Aber ich glaube das hat nix mit meinem Problem zu tun. Hat denn niemand eine Idee? Gruss
Johannes schrieb: > Gut okay ich werde es aendern. > > Aber ich glaube das hat nix mit meinem Problem zu tun. musst du wissen. Was sagt denn das Datenblatt über das Timing vor, während und nach einem Reset?
Hab nix gefunden, kann man vlt. auch weglassen. Den Reset mach ich weil alle Register auf Defaultwert gesetzt sind und der MCP2515 sich im Konfigurationsmodus befindet.
Also ich bin etwas weiter gekommen. Mittlerweile bekomm ich die SPI Kommunikation wieder hin. (Sehe au grad das ich oben mal ISP geschrieben hab, sorry) Ursache war, das ich den Vss Pin des MCP2515 auf Masse gelegt hatte. Ohne diese Verbindung funktioniert es. Nun frage ich mich aber warum, denn laut Datenblatt steht fuer diesen Pin: Ground reference for logic and I/O pins ausserdem habe ich in den CAN tutorial gesehen, dass er diesen Pin ebenfalls auf Ground gelegt hat. Jemand ne Idee was nun richtig ist? Gruss Johannes
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.