Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 8Mhz CAN mit 1000kbits


von FLorian U. (florian_u)


Lesenswert?

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

von mehr (Gast)


Lesenswert?

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

von FLorian U. (florian_u)


Lesenswert?

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
von Rudolph (Gast)


Lesenswert?

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?

von mehr (Gast)


Lesenswert?

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?

von FLorian U. (florian_u)


Lesenswert?

Danke Rudolph für deine Antwort.

Es ist ein ganz normaler 8 Mhz Grundton Qusraz von Reichelt oder so.
Und 22pF Kondensatoren^^.

von Rudolph (Gast)


Lesenswert?

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.

von FLorian U. (florian_u)


Lesenswert?

Den hier "8,0000-HC49U-S"

Meinst du das macht so einen großen Unterschied?
Dann muss ich die wohl wechseln.

von Peter D. (peda)


Lesenswert?

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?

von Rudolph (Gast)


Lesenswert?

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.

von Steffen R. (steffen_rose)


Lesenswert?

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.

von Rudolph (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Quarze kann man nicht soweit wegziehen, daß der CAN ausrastet.

Autsch.

von Peter D. (peda)


Lesenswert?

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
von Rudolph (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Rudolph (Gast)


Lesenswert?

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...

von Steffen R. (steffen_rose)


Lesenswert?

> Vielleicht findet man irgendeine Beispiel-Init für 1MBaud bei 8MHz.

Er verwendet die im Handbuch angegebene Einstellung, auf die der 
Eingangspost verweist.

von peterguy (Gast)


Lesenswert?

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.

von peterguy (Gast)


Lesenswert?

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.

von Steffen R. (steffen_rose)


Lesenswert?

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.

von FLorian U. (florian_u)


Lesenswert?

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

von Steffen R. (steffen_rose)


Lesenswert?

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.

von Rudolph (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.