mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation mit CAN zwischen MCP2512 und 80c592


Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe ein Controllerboard mit einem 80c592 der zur Kommunikation CAN 
verwendet(sourcecode habe ich).

Nun möchte ich mit meinem ATMega128 uber einen MCP2515 mit dem 80c592 
komunizieren. Dei kommunikation mit dem MCP2515 funktioniert, doch die 
beiden CAN-Controller scheinen sich nicht zu verstehen ;-). Ich nehme 
an, dass es an der Baudrate liegt, schaffe es aber nicht die richtigen 
Registerwerte für meinen MCP2515 zu berechnen(ich verstehe es einfach 
nicht ;-) )

Baudrate ist 19200 Bps
Taktfrequenz MCP2515: 11,0592 MHz

Taktfrequenz 80c592 11,0592 MHz

BTR0=0x51
BTR1=0x76

Da durch BTR0 und BTR1 die genauen Busspezifikationen angegeben sind, 
sollte es ja kein Problem sein das ganze auf den MCP2515 umzubauen, aber 
es funktioniert bei mir nicht. Ich habe schon die verschiedensten werte 
für CNF1 CNF2 und CNF3 ausprobiert, aber der 80c592 versteht mich nicht 
;-)

Hat irgendwer eine Idee wie ich auf die Werte für CNFx aus BTRx 
berechnen kann?

mfg,

Stefan

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Baudrate ist 19200 Bps

Das hört sich nicht nach CAN-Bus an. Ich kenne den MCP nicht, aber 
verwechselst du evtl UART-Bautrate und CAN-Baudrate?

Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist 100%ig CAN.

MCP2515 ist ein CAN-Bus-Controller und der P80c592 ist ein 8051 mit 
integriertem CAN-Bus-Controller.

Baudrate 19,2 kbps

mfg,

Stefan

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> MCP2515 ist ein CAN-Bus-Controller

Ich weiß, aber den steuerst du mit dem Mega über serielle Schnittstelle 
an. Kommen da die 19200Bps ins Spiel?

Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, der MCP2515 wird via spi angesprochen, und da habe ich keine 
einstellbare Baudrate. Die 19200bps sind sicher am CAN! Ist auch im 
sourcecode des 80c592 so kommentiert.

mfg

Stefan

Autor: mnr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter 
http://intrepidcs.com/modules/CmodsDownload/upload...
kannst du ein Tool downloaden, mit dem Sich das alles schön berechnen 
läßt.

ABER: 19200Baud und XTAL 110952 gehen damit nicht zu berechnen, da 
irgendwie zu krumm...

Grüße,
Matthias

Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, die Baudrate am SPI ist natürlich einstellbar hat aber trotzdem 
nix mit den 19200 bps zu tun

Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Tool habe ich natürlich auch schon verwendet aber ich werde daruas 
net schlau.

Wenn ich rechts oben 11.0592 Mhz und 19.2 kbps einstelle, liefert mir 
das Tool 6 Vorschläge Tq=24, 18, 16, 12, 9 und 8 mit jeweils 0% fehler. 
Aber das Tq muss ja mit dem des 80c592 übereinstimmen. Oder verstehe ich 
das falsch?

lg,

Stefan

Autor: Stefan Hütter (stefan_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,

Ich habe hier auch ein Gateway das am selben CAN-Bus hängt und mit den 
80C592 kommuniziert. Davon habe ich auhc den Source-Code. Im Gateway ist 
ein SJA1000T verbaut und ein 80C517. BTR0=0x51 und BTR1=0x76.

Das würde bedueten(laut Datenblatt):
SJW<1:0>=1;
BRP<5:0>=17;

SAM=0;
TSEG2.<2:0>=7;
TSEG1.<3:0>=6;

Laut datenblatt habe ich dann ein t_scl=2*t_clk*(BRP+1), wobei 
t_clk=1/(11,0592*10^6)

t_syncseg = 1 * t_scl
t_tseg1 = t_scl * (TSEG1 + 1)
t_tseg2 = t_scl * (TSEG2 + 1)

t_bit = t_syncseg + t_tseg1 +t_tseg2 = t_scl * ( 1 + (TSEG1 + 1) + 
(TSEG2 + 1))=16

Bitrate = 1/t_bit = 19200 bps

für den MCP2515 würde das dann so auschaun:
CNF1:

SJW<1:0>=1;
BRP<5:0>=17; //da die selbe anzahl von segmenten da ist, gleich wie beim 
SJA1000t

CNF2:

BTLMode = 1 //da ja PHSEG2 über CNF3 eingestellt wird
SAM = 0
PHSEG1<2:0>=5 //da jetzt min. ein Propagtion segment da ist(hat der 
SJA1000 nicht
PRSEG<2:0>=0 //damit nur ein Propagtion segment da ist

CNF3:

SOF=0
WAKFIL=0
x
x
x
PHSEG2<2:0>=7

Tq=2*(BRP+1)*t_osc //ist dann gleich t_scl

t_syncseg = 1 * Tq
t_PHSEG1 = Tq * (PHSEG1 + 1)
t_PHSEG2 = Tq * (PHSEG2 + 1)
t_PRSEG = Tq * (PRSEG + 1)

damit habe ich wieder meine t_bit = 16 * Tq und damit auch die selbe 
Bitrate von 19200 bps.

Wenn ich mir jetzt am Oszi den Canbus anschaue, ist der mit dem MP2515 
ca um den faktor 20 schneller als der des Gateways mit dem SJA1000T. Wo 
liegt mein gedankenfehler?

mfg,

Stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.