Hey, kann mir jemand einen Tip geben, warum ich meinen AT90Can128, der mit 3.3V und 8 Mhz zusammen mit einem Max13054 Can Transceiver läuft, nicht mit 1MBit/s auf den CANBUS senden kann? Mit 500kBit/s geht alles ganz wunderbar. Ich hab die Einstellungen aus dem Datenblatt des AT90Can verwendet. Also für CANBIT1 = 0x00, CANBIT2 = 0x04, CANBIT3= 0x12. Das kommische ist, dass es mit 500kbits geht und mit 1000kbits nichtmehr. Also denke ich nicht, dass irgendwo ein Fehler in der Software bzw kein grober Schnitzer in der Hardware ist. Wenn ihr im Datenblatt bei den Beispieleinstellungen für die CANBITS schaut, sind da 2 Anmerkungen dran, die ich nicht genau verstehe. Auf Seite 268 des Datenblattes. Sind die relevant? Danke
Du musst dir die ganze Zeile im Datenblatt zu Herzen nehmen, nicht nur die 3 Register, die Du verstehst. Wenn Du Dich nicht ins Thema (Bit-Timing) reinknien wills (ganzes Datenblatt lesen), solltest Du uns wenigstens deine gesamten Settings mitteilen. Nur so besteht, die Chance, dass sich irgendwer für Dich der Sache annimmt. Also BRP = ? PRS = ? PHS1 = ? PHS2 = ? SJW = ? SMP = ? ...wahrscheinlich ist bei dir der SMP = 1, was mit BRP=0 kollidiert... sagt meine Kristallkugel - mehr Info mehr Gewissheit. Gruss
Aso, ja die ganzen sachen die du wissen willst sind ja in den CANBits drin. Aber ich kann das ganze auch nochmal auflisten. BRP = 0, da CANBT1 = 0x00 PRS = 2, da CANBT2 = 0x04 PHS1 = 1, da CANBT3 = 0x12 PHS2 = 1, da CANBT3 = 0x12 SJW = 0, da CANBT = 0x04 SMP = 0, da CANBT3 gerade Also bei mr BRP und SMP = 0, deine Kristallkugel hatte unrecht:-)
:
Bearbeitet durch User
Es kann gut sein, dass Deine 8MHz eben nicht genau 8MHz sind, bei 500kBit fällt das noch nicht unbedingt auf, bei 1MBit aber eben schon. Platine, Quarz und die Kondensatoren sollten bessern zueinander passen, der übliche Murks mit irgendeinem Quarz und 22pF dazu passt dann nicht. Also, welcher Quarz genau, und welche Kondensatoren?
Sorry, mein Fehler habe mich verwirren lassen durch die CANB(I)Tx Schreibweise. Warum weisst Du, dass es am Sender liegt? Empfänger auch richtig auf 1000 kbits konfiguriert? Hast Du ein Oszi zur Verfügung?
Danke Rudolph für deine Antwort. Es ist ein ganz normaler 8 Mhz Grundton Qusraz von Reichelt oder so. Und 22pF Kondensatoren^^.
Aha, "8,0000-HC49U-S" oder "8,0000-HC18"? Die sind beide mit CL=32pF angegeben, damit sind 22pF völlig raus. Probier es mal mit je 56pF für die Kondensatoren.
Den hier "8,0000-HC49U-S" Meinst du das macht so einen großen Unterschied? Dann muss ich die wohl wechseln.
FLorian Unbekannto schrieb: > Meinst du das macht so einen großen Unterschied? Nein. Quarze kann man nicht soweit wegziehen, daß der CAN ausrastet. Wenn es schwingt, ist alles o.k. Die Timing-Bits sind allerdings ne Wissenschaft für sich. Irgendein Bit gibt den Synchronisationsslot an, der muß mindestens 1 sein. Bei 8 Slots hat man nicht viel Spielraum. Ich nehme immer 16MHz. Vielleicht findet man irgendeine Beispiel-Init für 1MBaud bei 8MHz. Du kannst auch erstmal den Vorteiler auf 2 setzen und versuchen, mit 8 Slots die 500kBaud zu konfigurieren. Schafft überhaupt die Gegenstelle mit nem anderen Device die 1MBaud?
FLorian Unbekannto schrieb: > Meinst du das macht so einen großen Unterschied? Oh ja, erstens schwingt Deine Quarz jetzt eher zufällig noch und zweitens eben nicht mit 8,000 MHz sondern eher mit 7,96 MHz oder so.
Der Samplepoint ist arg weit vorn. Wie sehen die Signale auf deinem Bus aus? Bei deinen Registerangaben hast Du das +1 vergessen. Damit können die CAN Experten hier wenig anfangen.
Rudolph schrieb: > eben nicht mit 8,000 MHz sondern eher mit 7,96 MHz oder so. Rudolph schrieb: > Autsch. Zeig mir den Quarz, den Du um 40kHz ziehen kannst. 100Hz Ziehbereich ist schon sehr viel. Die Kapazitäten muß man nur im Low-Power Modus genau einhalten, sonst schwingt er nicht oder instabil. Im Full-Swing Modus ist das unkritisch. Häng einfach mal nen Frequenzmesser ran (an PC7 und CKOUT-Fuse setzen) und miß nach.
:
Bearbeitet durch User
Peter Dannegger schrieb: >> Autsch. > > Zeig mir den Quarz, den Du um 40kHz ziehen kannst. Pfeiff auf die 40kHz oder sonst einen konkreten Wert, mit den falschen Kondensatoren vertrimmst Du den Quarz aber sehr wohl so weit, dass CAN bei 1MBit nicht mehr funktioniert. 40kHz sind 0,5% von 8MHz, das ist beim CAN schon zuviel für 1MBit. Ein Beispiel? Reichelt 16,0000-HC49U-S mit 22pF laufen lassen und der CAN läuft ganz sicher nicht mehr auf 1MBit am AT90CAN128. Die Datenpakete sind so lang, dass es nach hinten raus einfach wegdriftet, eine Botschaft mit 1 Byte Nutzdaten hat schon 40 Bit, selbst wenn der Sample-Point am Anfang perfekt sitzt, gegen Ende sicher nicht mehr. Zusätzlich hat auch der Empfänger keine ideale Taktquelle.
Rudolph schrieb: > Pfeiff auf die 40kHz oder sonst einen konkreten Wert, mit den falschen > Kondensatoren vertrimmst Du den Quarz aber sehr wohl so weit, dass CAN > bei 1MBit nicht mehr funktioniert. > 40kHz sind 0,5% von 8MHz, das ist beim CAN schon zuviel für 1MBit. Erzähl keine Märchen, 40kHz Abweichung erreichst Du nie und nimmer. Wie gesagt, miß dochmal nach, wenn Du einmal 22pF und einmal 56pF verwendest. Das macht vielleicht 100Hz (0,00125%) aus, das ist dem CAN sowas von schnuppe.
Mal so als Zahlenwerte, nach VW sind für die Datenrate einzuhalten: 500kBaud +/- 0,3% enstprechend pro Bit 2µs +/- 0,3% Bei 8MHz darf der Quarz also nur um 24kHz daneben liegen oder 6ns pro Bit - weil es eben nicht nur jeweils ein Bit ist, sondern viele hintereinander weg. Und dann reden wir ja noch darüber, dass nächstes Jahr noch laufen soll und nicht nur bei 25°C...
> Vielleicht findet man irgendeine Beispiel-Init für 1MBaud bei 8MHz.
Er verwendet die im Handbuch angegebene Einstellung, auf die der
Eingangspost verweist.
Also bei meinem Freescale S12X Controller den ich vor ein paar Jahren für mein CAN Trace tool verwendet habe wurde im Datenblatt darauf hingewiesen, dass der Quartz für den 1Mbit Betrieb bestimmte Voraussetzungen in Bezug auf die Genauigkeit erfüllen muss. Ich könnte mir vorstellen dass dies ebenso für Atmel Controller gilt.
Grad nochmal nachgeschaut. Im S12XEP100 Datenblatt steht z.B.:
1 | The clock source has to be chosen such that the tight oscillator tolerance requirements (up to 0.4%) of the |
2 | CAN protocol are met. Additionally, for high CAN bus rates (1 Mbps), a 45% to 55% duty cycle of the |
3 | clock is required. |
4 | If the bus clock is generated from a PLL, it is recommended to select the oscillator clock rather than the |
5 | bus clock due to jitter considerations, especially at the faster CAN bus rates. |
Wir hatten im Allgemeinen bisher wenig Probleme mit 1MBit mit unseren Entwicklungsaufbauten (Raumtemperatur, kurze Leitungen). Wenn es mal Probleme gab, lag es an der Signalqualität. Wir nutzen oftmals nur Flachbandkabel und verbinden Kreuz die Quere. Das geht bei 1MBit schonmal schief. Bei niedrigen Bitraten ist auch die Anzahl der Abschlußwiderstände für solch einen Versuchsaufbau wenig relevant (>=1). Bei 1MBit passe ich da schon genauer auf. Wir haben den Samplepoint immer recht weit hinten bei 87.5%, wenns geht. Beim TO liegt er bei 63%. Und mir ist nicht klar, ob hier schon der Hinweis eingerechnet ist, dass bei BRP=0 der Samplepoint noch eine Bitzeit eher kommt.
Steffen, das hatte ich auch gesehen. Aber ich weiß auch nicht, was ich ändern muss, damit er etwas früher kommt. Ich mein, dass is ja die empfohlene Einstellung. Als Empfänger Hardware benutzen wir das CANCASE XL. Also keine billig Hardware. 12 Mhz geht am AT90 auch nicht mein ich bei 3.3V. Das heißt meine Rahmenbedingungen sind gesetzt. PS: Vielen Dank für eurer Engagement mir zu helfen!!! Daumen hoch
Weil man manchmal nicht dran denkt: - CKSEL ist auf Quarz gestellt? Wenn nicht, hätten eigentlich die 500k auch nicht gehen dürfen. Oft hört man, dass es besser funktioniert, wenn alle Geräte den gleichen Samplepoint nutzen. Daher ggf. mal die Einstellungen am CANCASE variieren. Und weil du 3.3V erwähnst: Auch die TxCAN und RxCAN delays sind länger als bei 5V. Keine guten Voraussetzungen für 1MBit.
FLorian Unbekannto schrieb: > Als Empfänger Hardware benutzen wir das CANCASE XL. Also > keine billig Hardware. Aber die billigsten Quarze die man finden kann aus ner Tüte Schüttgut. :-) Hast Du denn jetzt mal spasseshalber die Kondensatoren getauscht? Auch wenn ich sicherlich mit den 40kHz übertrieben habe weil ich nicht 7,999x schreiben wollte, das der CAN bei falschen Kondensatoren am Quarz nicht funktioniert habe ich mir nicht einfach so ausgedacht, das ist mir so passiert. Quarz, 16MHz, CL=32 und 22pF Kondensatoren dran, 500kBit lief noch, 1MBit nicht. Kondensatoren auf 56pF gewechselt -> CAN lief stabil auf 1MBit. Mit einem 90CAN128.
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.