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
Wenn du sowieso schon Hardware von Creatives Chaos nutzt, dann schau dir doch mal die CAN-Bibliothek von denen an. Vielleicht findest du dort Denkanstöße bzw. sogar die Lösung. Oder alternativ kannst du ja auch die Bibliothek nutzen, falls du es nicht unbedingt selbst programmieren willst. Hier die Bibliothek: http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek
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.
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.
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.
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...
Ich glaube ich weiss warum er gemeckert hat. Ich bab es so geschriebenen spi_putc = (0x91); Aber ich versuche es morgen noch mal.Hab mich erst mal geerdet.
Mario schrieb: > Ich glaube ich weiss warum er gemeckert hat. > Ich bab es so geschriebenen > spi_putc = (0x91); > > Aber ich versuche es morgen noch mal.Hab mich erst mal geerdet. Ah, na dann kann es nicht klappen. Okay, viel Erfolg morgen!
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.