Hallo, ich arbeite mit selbigem MCP2515 am Mega16 unter Bascom.
Die Kommunikation hab ich bei mir am Laufen,
um Deinen Code zu debuggen müsste man mal diesen
am Besten mal sehen, das machts leichter.
Hallo,
ich habe einen MCP2515 per SPI an einem AT-Mega128 hängen. Wenn ich aber die Config-Register beschreibe (z.B. CNF1) und wieder auslese, steht nicht das in dem Register was ich reingeschrieben habe. Die SPI-Kommunikation funktionierrt einwandfrei, das hab ich mir mit dem Oszi angeschaut, und wenn ich das Statusregister abfrage, kommt auch der richitge Wert, (Initialisierungswert laut Datenblatt) . Befor ich das Register beschriebe führe ich einen Softwarereset des MCP2515 durch, danach sollte er im Konfigurationsmodus sein. Hat von Euch einer eine Idee, was ich falsch mache?
MFG und Danke für Hinweise!
Hallo, ich arbeite mit selbigem MCP2515 am Mega16 unter Bascom.
Die Kommunikation hab ich bei mir am Laufen,
um Deinen Code zu debuggen müsste man mal diesen
am Besten mal sehen, das machts leichter.
Vor den Erfolg haben die Götter den Schweiß gesetzt
Hi Arok,
welche SPI Geschwindigkeit hast den ? Probier einfach mal langsammer zu werden ... längere Leitungen unschöne Verlegung .. können auch solche probleme verursachen...
hatte bei mir mal solche Auswirkungen
Hallo
Ich quäle mich schon länger mit dem MCP2515 rum. aber ich bekomme kein laufendes Programm zusammen. In C gibt es genug hinweise, jedoch kann ich nichts damit anfangen.
Wenn jemand einen Code in Basic hat würde ich mich sehr freuen.
Hallo,
ich hatte ein ähnliches Problem, die CNFx Register wollten meine Werte auch nicht behalten. Ich habe die Register dann 2x hintereinander mit dem Wert beschrieben und dann hats geklappt.
Auch musst du bei einigen Headers, die im Internet sind, aufpassen, da stimmen teilweise die Registeradressen nicht.
MfG
Danke für Deine Antwort
Die Registeradressen dürften gepeichert bleiben. nur Krig ich die Komunikation nicht hin.
Kannst Du eventuell mal mein Programm ansehen ??
Danke Manfred
aha, nen ersten Fehler hab ich schonmal ausgekuckt:
Du verwendest Hardware SPI:
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16 'Test mir Atmega wegen HardwareSPI
und weiter im Code dann:
Spiout Mcphilf , 1
Set Css
Das kann schonmal klemmen.
Der SPI hat nen Ausgangspuffer, den Du mit SPIOUT beschreibst.
Nun braucht die Übertragung aber n kleines Weilchen, weil die Daten
ja seriell rausgeschoben werden. Beim SPIOUT-Befehl bin ich mir nicht sicher,
ob das Programm an der Stelle anhält bis dieDaten raus sind, oder obs weiter läuft.
Es könnte in zweitem Falle dann geschehen, das Du den Chip Select setzt,
bevor die Daten dann auch wirklich drüben sind.
ich gehe da so vor:
Spdr = Mcphilf
Do
Loop Until Spsr.spif = 1
Set Css
Das Seelbige haste auch so ziemlich in allen Kommunikationsroutinen
für den MCP drinne. Das Spsr.spif hättste auch schon bei den
C-Sample-Codes sehen können
Vor den Erfolg haben die Götter den Schweiß gesetzt
Hallo
Danke für Deine Antwort.
aber ich komm da nicht ganz mit.
Meinst Du eventuell so:
Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
Print "Reg: " ; Adress ; " Val: " ; Daten
Reset Css
Spdr = Spi_write
Do
Loop Until Spsr.spif = 1
Set Css
Reset Css
Spdr = Adress
Do
Loop Until Spsr.spif = 1
Set Css
Reset Css
Spdr = Daten
Do
Loop Until Spsr.spif = 1
Set Css
End Sub
Gruß Manfred
nö, eher so:
Sub Mcp2515_write_register(byval Adress As Byte , Byval Daten As Byte)
Print "Reg: " ; Adress ; " Val: " ; Daten
Reset Css
Spdr = Spi_write
Do
Loop Until Spsr.spif = 1
Spdr = Adress
Do
Loop Until Spsr.spif = 1
Spdr = Daten
Do
Loop Until Spsr.spif = 1
Set Css
End Sub
Vor den Erfolg haben die Götter den Schweiß gesetzt
Hallo
Ich habe es ausprobiert, so wie Du es beschrieben hast. Die Schleife Loop Util.... wartet auf eine Antwort, dass die Nachricht gesendet worden ist. Ich hoffe ich verstehe das richtig. Leider bekomme ich keine Antwort.
Was soll ich tun ??
Danke im voraus
Manfred
Lesezeichen