Hallo. Ich arbeite gerade mit einem Atmega32 (16Mhz) und dem MCP2515 (16Mhz), der per SPI angeschlossen ist. Meine Frage ist, ob der Can-Controller irgendwo beim Operieren Pausen braucht? Vielleicht weiss das Jemand, bzw. schon ausprobiert hat. Die Pause beim Initialiesieren nach dem Software-Reset kann ich ihm gerne geben, damit der Quarz anschwingen kann. Danach will ich aber Gas geben, und insbesondere beim Register lesen/schreiben möchte ich keine waitus/ms, delays oder Sonstiges haben. Klar, kann ich das ausprobieren, aber falls es zu den Übertragungsfehlern kommt, merkt man diese evtl. nicht sofort, und sich nachher bei der Fehlersuche den Po aufreisst. Also, hat das Jemand schon probiert, bzw. weisst das GENAU bescheid? Konnte im Datenblatt keine Infos dazu finden. Danke Gruss Alex S.
Ich habe den MCP2515 verwendet und mir ist nichts dergleichen bekannt. Gibt es einen konkreten Anlass für diese Frage, wie etwa "Es tut nicht und mir fällt sonst nichts mehr ein"?
Nein, es gibt keinen Anlass. Als ich damit angefangen habe, bin ich auf die Codes von den Anderen zurückgegriffen, weil ich keine Lust hatte (oder nicht konnte) alles von vorne selbst anzufangen. Und in den Subroutinen zum Lesen/Schreiben sind teilweise Pausen drin. Den Code habe ich mittlerweile komplett verstanden, und auch auf meine Bedürfnisse geändert, aber die Subroutinen habe ich unangetastet gelassen, da es kein Bedarf war, diese die ändern. Gruss Alex
Naja, genau genommen gibt es schon Betriebsanforderungen, wo man warten sollte. Wenn Du versucht über Ein-Byte-Befehle zwei Nachrichten mit unterschiedlichen IDs über ein und die selbst Sendemesseagebox zu senden, dann läßt sich die erste Nachricht laden und absenden. Wenn Du jetzt aber sofort versuchst die gleiche Sendemessagebox mit anderen Werten (insbesondere einer anderen ID) zu beschreiben, während diese Messagebox sich noch im Sendemodus befindet, dann sind die Register schreibgeschützt. Mit SPI kann man schneller die Register beschreiben, als der Controller deren Inhalt dann sendet. An diesem Problem hatte ich eine Zeit lang gesessen, bis ich es herausgefunden hatte. Da habe ich dann eine Abfrage des Sendestautus mit eingebaut. Jetzt läuft es gut. Andererseits habe ich keine Probleme mit Waits, weil mein Treiber im Idle-Modus läuft und eine Zustandsmaschine hat.
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.