Forum: Mikrocontroller und Digitale Elektronik Atmega8 kann MCP2515 per SPI nicht ansprechen


von Lynn S. (Firma: Gecko) (wolke)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe mein Problem bereits im MCP2515 Tutorial von Kreatives-Chaos 
gepostet, Eintrag vom 9. Juli 2009 
http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515
Leider konnte dort der Fehler auch nicht gefunden werden (ich habe die 
100nF Kondensatoren wie dort im Forum empfohlen bei jedem IC zwischen 
VCC und GND hinzugelötet). Im Anhang habe ich den Schaltplan meines 
Boards (die neuen Kondensatoren sind noch nicht eingezeichnet).

Ich habe ein Atmega8 der läuft mit einem 8MHz Quarz (ich habe den 
Resonator vom Schaltplan durch einen Quarz ersetzt) und ein MCP2515 mit 
16MHz. Die Quarze laufen einwandfrei, habe ich gemessen. Die SPI 
Schnittstelle funktioniert auch, ich kann mit einem anderen Atmega8 
kommunizieren. Wenn ich das Testprogramm des Tutorials 
(http://www.kreatives-chaos.com/file_download/21) laufen lasse, kommt 
die Fehlermeldung "Fehler: kann den MCP2515 nicht ansprechen!" über die 
serielle Schnittstelle. Das Makefile des Testprogramms habe ich auf die 
8MHz angepasst, der Rest der SPI Ports ist identisch wie diejenigen beim 
Testboard + Testprogramms des Tutorials.

Ich habe auch einen eigenen Code für die Ansprechung des MCP2515 
geschrieben (auch verglichen mit den vielen Threads über dieses Thema 
hier im Forum, Wartezeiten eingefügt etc.), auch dort kommt immer FF 
wenn ich versuche aus dem CNF1 Register zu lesen.

Den SPImkII Programmer habe ich auch schon abgehängt und es geht immer 
nocht nicht.

Habt ihr eine Idee, was ich noch überprüfen kann? Fehlt noch ein Pullup 
Widerstand irgendwo? Wenn ja, wo und wieviel Ohm?

Einen kaputten MCP2515 schliesse ich aus, habe diesen auch schon 
ausgewechselt.

Vielen Dank für Eure Hilfe,

Lynn

von Lutz (Gast)


Lesenswert?

Schuß ins Blaue: Du hast die Frequenzen/Baudraten angepaßt, aber die 
Funktion mcp2515_init()
1
// test if we could read back the value => is the chip accessible?
2
  if (mcp2515_read_register(CNF1) != ((1<<BRP2)|(1<<BRP1)|(1<<BRP0))) {
3
    return false;
4
  }
in der mcp2515.c (die liefert die Fehlermeldung) fragt "hardcoded" nach 
gesetzten Bits für den Baud Rate Prescaler. Verfolge den Pfad mal 
weiter.

von Lynn S. (Firma: Gecko) (wolke)


Lesenswert?

Hallo,

Besten Dank für Deine Antwort.

Ich habe mittlerweile das selbe Board nochmals gebaut, nun mit den 100nF 
Kondensatoren eingeplant (waren vorher reingebastelt) und einen 8MHz 
Quarz anstelle eines Resonators. Und dieses Board funktioniert!
Keine Ahnung was falsch war...

Gruss,
Lynn

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.