Forum: Compiler & IDEs Kommunikationsproblem zwischen ATMega32 und MCP2515 ueber ISP


von Johannes (Gast)


Angehängte Dateien:

Lesenswert?

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

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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?

von Johannes (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  Johannes (Gast)

>Ich wollte eigentlich eine delay funktion nehmen, daher ist der
>Kommentar.

Dann tu das. _delay_ms() ist deine Funktion.

MfG
Falk

von Johannes (Gast)


Lesenswert?

Gut okay ich werde es aendern.

Aber ich glaube das hat nix mit meinem Problem zu tun.
Hat denn niemand eine Idee?

Gruss

von Karl H. (kbuchegg)


Lesenswert?

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?

von Johannes (Gast)


Lesenswert?

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.

von Johannes (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.