Hallo, nachdem ich mein lcd-display wieder zum laufen bekommen habe, gehe ich wieder meiner eigentlich aufgabe dem CAN nach. Dieser hat auf dem dspicdem2 Board mit einem dspic30f4011 funktioniert.
Jetzt habe ich ein dspic30f6011a und es funktioniert nicht.
Ich habe einen 8MHz quarz angeschlossen mit einem PLL 8. Daraus Folgt FCY=FOSC*PLL/4=8MHz.
das BRP habe ihc =0 gesetzt.
TQ=2*((BRP+1)/FCY)=250ns. Die Baudrate vom CAN soll 250kHz (1Bit=4us) sein. Daraus folgt, dass ein Bit aus 16 TQ besteht. diese habe ich wie folgt verteilt
Synchronizations Segment = 1TQ
Propagations Segment = 5TQ
Phase Segment 1 = 5TQ
Phase Segment 2 = 5TQ
Damit habe ich dei 16 TQ verteilt. Die Sprungweite habe ich auf 3TQ gesetzt.
wenn ich das ganze am CANalyzer anschliesse, wird mein CAN aber nicht gefunden. setze ich diesen auf 250kHz, dann bekomme ich nur Error-Frames.
Die Regeln für die Verteilung
Propagations Segment + Phase Segment 1 >= Phase Segment 2
Phase Segment 2 >= Sprungweite
muss ich noch weitere sachen berücksichtigen?
Oha, ich hatte mich verschrieben. Ich meinte, ich habe ein PLL von 4. Der Rest der Berechnung ist auch mit PLL=4 berechnet.
wo steht das, dass man durch 2 teilen muss? Im Datenblatt steht, dass durch 4 geteilt wird.
Bei den 16 Bit PICs wird durch 2 geteilt, und ich denke die dspic sind aus der gleichen Familie. Aber wenn in deinem Datenmblatt durch 4 steht, dann wirds nicht so sein.
Aber bei solchen Sachen rechne ich nicht. Schätzen, etwas ausgeben und mit Scope oder LA messen und die Schätzung korrigieren. Geht schneller, als in zwei Foren nachzufragen.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
nun ja, ist ja nicht so, dass ich nichts probiere.
habe die anzahl der TQs in den einzelnen Phasen verändert, aber zu keinem erfolgreichen Ergebnis gekommen. Da ich ja eigentlich meiner Meinung nach alles richtig eingestellt habe und es trotzdem nicht funktioniert, würde ich auch in vielen Foren Nachfragen, ob man dabei doch noch mehr sachen berücksichtigen muss, damit das funktioniert.
Und wenn es funktioniert würde ich es gerne mit absicht machen und nicht einfach try and error.
Bevor ich es vergesse, möchte ich mich für eure antworten bedanken. Das Problem hat zwar ein bisschen gedauert, habe es aber letztendlich herausgefunden (schon am Montag).
Das Problem war, dass ich meinen CAN galvanisch mit einem ISO7221A entkopple. Dies habe ich zumindest gedacht, aber auf meiner Platine ist ein ISO7220 drauf. So wurde das CAN High/Low signal verfälscht, bzw. kam erst gar nicht an. Auch meine eingestellten TQs funktionieren jetzt.
Glückwunsch und Danke für den abschließenden Bericht zur Lösung.
Lesezeichen