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
> 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?
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
> 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?
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
Unter http://intrepidcs.com/modules/CmodsDownload/upload/Software/MBTime.zip 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
Sorry, die Baudrate am SPI ist natürlich einstellbar hat aber trotzdem nix mit den 19200 bps zu tun
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.