Forum: Mikrocontroller und Digitale Elektronik PIC18F ECAN compile time options


von Martin L. (martin_l60)


Lesenswert?

Hallo

Ich bin gerade dabei mir einen 18F2580 für CAN zu konfigurieren. Ich 
benutze den 18C Compiler und die ECAN 'C' Routines laut application Note 
AN878.

Der Bus arbeitet mit 11-bit Nachrichten bei 128kB.

so nun muss ja die ECAN.def angepasst werden. Ich finde folgende 
Definitions.

// SJW value - Value must be between 1-4 inclusive.
#define ECAN_SJW_VAL 2
//
// BRP value - Value must be between 1-64 inclusive.
#define ECAN_BRP_VAL 4
//
// PHSEG1 value - Value must be between 1-8 inclusive.
#define ECAN_PHSEG1_VAL 8
//
// PHSEG2 value - Value must be between 1-8 inclusive.
#define ECAN_PHSEG2_VAL 8
//
// PROPSEG value - Value must be between 1-8 inclusive.
#define ECAN_PROPSEG_VAL 8

irgendwie hier muss ich die Taktfrequenz einstellen. Das ist ja schön 
und gut - leider geht aus dem AN leider nicht hervor wie genau sich die 
Werte ergeben.

Der PIC läuft mit einem 4Mhz Kristal.

Hab ich was übersehen - überlesen?

Gruß Martin

von René (Gast)


Lesenswert?

Hallo Martin,

schau mal ins Datenblatt vom PIC18F2580. Im Kapitel 23.0 ECAN Module 
findest du die Brechnungsgrundlagen für die von dir angegebenen Defines.
Du musst allerding vorerst die reale Takfrequenz von deinem PIC 
bestimmen. Das findest du unter 2.0 im Datenblatt. Anschließend kannst 
du den BRP (Baud Rate Prescaler) entsprechend konfigurieren.

Gruß René

von Martin L. (martin_l60)


Lesenswert?

hi

Also ich muss sagen ganz klar ist mir nicht was Tq und Tbit wirklich 
sind. Insbesondere der Zusammenhang zwischen Noominal Bit Time und X mal 
Tq ist mir noch schleierhaft.

Aber soweit hab ich mal folgende Rechnung auf Seite 335 nachvollzogen. 
Einfach von hinten sozusagen.

Nun ich hab ein 4MHz Crystal und arbeiteim HSPLL Mode -> Fosc = 16MHz
Baudrate ist 125KBd

Daraus folgt:

Nominal Bit Rate = 125Kb/s
Tbit = 1/125Kb/s = 8µs

Mit NBT = 8 Tq ergibt sich dann:

Tq = 8µs / 8 = 1 µs

Tq = (2 * (BRP+1))/Fosc
BRP+1 = (Tq * Fosc)/2 = (1µ * 16)/2 = 8

---> BRP muss ich auf 8 einstellen.

Richtig?

von René (Gast)


Lesenswert?

Hallo nochmal,

also wenn man sich nicht unbedingt in die CAN Theorie einarbeiten möchte 
gibt es ein einfache Möglichkeit.

http://intrepidcs.com/support/mbtime.htm

Mit diesen kleinen Tool kannst du dir für die 125Kb/s die Werte für die 
jeweiligen Segmente erzeugen lassen. Diese Einstellungen sind notwendig 
um die Physik der CAN-Kommunikation zu gewährleisten.
Wie der BRP für deine Anwendung zu wählen ist, wird dir dort auch 
vorgegeben.
In meinem aktuellen System haben wir für unseren Controller bereits 
einen fertig vorkonfigurierten CAN-Stack erhalten, so dass ich mich bis 
jetzt zum Glück auch noch nicht in alle Tiefen reindenken musste. Ich 
hoffe du kommst damit etwas weiter.

Gruß René

von Martin L. (martin_l60)


Lesenswert?

Super Tip - vielen Dank.

Werde ich gleich probieren.

Martin

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.