Forum: Mikrocontroller und Digitale Elektronik MCP2515 und falsche Baudrate


von Gerhard (Gast)


Lesenswert?

Was passiert? Hat da jemand Erfahrungen?
Hintergrund: ich möchte mir einen CAN-Mithorcher basteln, der nach 
Möglichkeit seine CAN-Baudrate selbst einstellen kann, bis es passt.
Ja, steht bestimmt irgendwo im Datenblatt, aber ich finde das ziemlich 
verwirrend :-(, also mit rtfm ist mir nicht wirklich geholfen.

von Thomas Forster (Gast)


Lesenswert?

Gerhard schrieb:
> Was passiert?

Es werden Error-Frames erkannt und REC wird hochgezählt.

RTFM Kapitel 6.7?

von Gerhard (Gast)


Lesenswert?

Ok, danke, funktioniert. Ich lese einfach den Counter aus
temp= mcp2515_read_register (REC);
Wenn grösser 10, neue Baudrate probieren. Geht sicher eleganter mit 
Interrupt, muss aber nicht sein, braucht man ja nur am Start. Gefundene 
Baudrate dann in den Eeprom und beim nächsten Reset erstmal damit 
beginnen. So oft wechselt man ja nicht.

von Dieter M. (Gast)


Lesenswert?

Falls die Error frames doch stören:
CAN-Controller in den Listen-only Mode setzen
-> kein Akn, keine Error frames
REC auslesen,
falls 0 nochmal gucken ob wirklich etwas empfangen wurde
- nicht das der Bus einfach gerade leer ist ;-)

von Thomas F. (igel)


Lesenswert?

Dieter M. schrieb:
> CAN-Controller in den Listen-only Mode setzen
> -> kein Akn, keine Error frames
> REC auslesen,

Funktioniet das? Im Datenblatt Kapitel 10.3 steht:

The baud rate can be detected empirically by testing
different values until valid messages are received.

und weiter:

Listen-Only mode is a silent mode, .... The error
counters are reset and deactivated in this state.

Liest sich für mich, man muss solange durchprobieren bis man etwas 
empfängt.

von Stefan  . (phreakshow)


Lesenswert?

MCP2515 hängt ja per SPI dran. Ich gehe davon aus, dass der 
angeschlossene µC keinen eigenen CAN-Controller hat (OT: Warum nimmt man 
eigentlich immer µC ohne CAN, und flanscht dann den MCP2515 an?).

Ich würde vom CAN-RX Pin des CAN-Transceivers hochomig auf einen Pin des 
Mikrocontrollers gehen, und dort per Capture messen wie lang ein Bit 
ist.
Das geht natürlich nur bei Busaktivität.

von Dieter M. (Gast)


Lesenswert?

@Thomas Forster
Verdammt, Du hast Recht!
Also doch gucken, ob etwas empfangen wurde, falls keine Error frames 
erwünscht sind

von H.Joachim S. (crazyhorse)


Lesenswert?

Stefan M. schrieb:
> (OT: Warum nimmt man
> eigentlich immer µC ohne CAN, und flanscht dann den MCP2515 an?)

a: weil man eine passende Platine da hat
b: weil es nur wenige MCs mit mehr als einem CAN-Controller gibt
c: weil man schon fertige und gut funktionierende Software hat
d: weil ein CAN-AVR um die 5€ kostet, und die Kombi Mega88+MCP2515 <2,50

also, es gibt schon Gründe

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.