MCP2515 Bitrate

Gast #3570916
Lesenswert?

Hallo

Ich versuche mich am CAN - Testboard von kreatives-chaos.
Habe es soweit am laufen.
Nun stelle ich mich an. Das Ding läuft mit dem Beispielcode auf 125 
kbps.
Das sieht in der Konfiguration dann so aus:

spi_putc((1<<PHSEG21)); // Bitrate 125 kbps at 16 MHz  CNF 3
spi_putc((1<<BTLMODE)|(1<<PHSEG11)); //CNF 2
spi_putc((1<<BRP2)|(1<<BRP1)|(1<<BRP0)); //CNF 1

Das sollte in hex
CNF1 = 7
CNF2 = 90
CNF3 = 2
bedeuten wenn ich mich nicht irre.

Ich bin zu blöd es mit 100 kbps in die Reihe zu bekommen.
Das müsste in hex dann so aussehen
CNF1 = 9
CNF2 = 91
CNF3 = 1

Ich bekomme einfach nicht die drei Zeilen "spi_putc" zustande.
Ich denke mal CNF 1 sollte so aussehen
spi_putc((1<<BRP3)|(1<<BRP0)); //CNF 1
Aber der Rest ?? :-((

Wäre über einen kleinen Anschubser sehr dankbar

Gruß Mario
#3570942
Lesenswert?

Du hast also die korrekten Werte schon "ausgerechnet"?
Dann wirst du ja wissen, wie du das gemacht hast, oder?

spi_putc (0x01); //CNF 3
spi_putc (0x91); //CNF 2
spi_putc (0x09);  //CNF 1

Sollte dann ja erst mal funktionieren :-)
Kannst dir ja hinterher die passenden Bits noch heraussuchen, damit es 
wieder lesbar wird.
Gast #3570949
Lesenswert?

Danke euch erst mal für die schnellen Antworten. Ich hab mich natürlich 
auf der Seite umgesehen.Die Werte hab ich dort gefunden.Komme mit dieser 
Bitumrechnung nicht klar.Wenn ich die Werte in hex übertragen möchte 
meckert mein Compiler.
Gast #3570963
Lesenswert?

Das kann ich Dir jetzt gar nicht genau sagen.Hab wahrscheinlich zu viel 
rum gemehrt.Ich benutze sonst immer Codevision.Da ist ja doch einiges 
anders.Habe dafür leider kein passendes Beispiel gefunden.Den 90can128 
habe ich mit 100 kbps sendemäßig am laufen.Aber mit GCC stelle ich mich 
an.Ich werde es morgen mit den hex Werten noch mal versuchen.Vielen Dank 
erst einmal.
Gast #3570965
Lesenswert?

Mario schrieb:
> meckert mein Compiler.

Was sagt er denn genau?
Denn eine Zeile wie

spi_putc(0x09);  //CNF 1

ist für den Compiler genau das gleiche wie

spi_putc((1<<BRP3)|(1<<BRP0)); //CNF 1


Ich habe die anderen Bitwerte mal nachgeschaut.
spi_putc(0x91); //CNF 2
mußte dann lauten:
spi_putc((1<<BLTMODE) | (1<<PHSEG11) | (1<<PRSEG0));

spi_putc (0x01); //CNF 3
müßte so aussehen:
spi_putc(1<<PHSEG20);

Das nur mal so auf die Schnelle. Schau mal ins Datenblatt. Ab Seite 42 
stehen die Register- und Bitbeschreibungen für die Bit Timing Registers.

Aber nochmal die Frage: Was kommt für eine Fehlermeldung, wenn du beim 
spi_putc() eine Zahl angibst? Das wundert mich doch sehr...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren