Hallo alle,
ich weiss, dass es hiewr schon etliche male diskutiert wurden ist, aber
ich habe zugegebenermaßen leider noch keine passende antwort bekommen.
Ich suche eine Möglichkeit, an den AT90CAN128 die CAN-Datenleitung
anzuschließen. ICh weiss jetzt nicht, ob ich einen CAN-Transreciever
oder sowas brauche. BEi Reichelt habe ich u.A. sowas: SN 65HVD251D
(Best-Nr.) gefunden. KAnn ich das benutzen oder brauche ich etwas
anderes?
Du brauchst auf jeden Fall einen Transceiver.
Dein 65HVD251D müsste gehen.
Ich nehme immer den PCA 82C251 T.
Vref unconnected und RSlope mit Widerstand gegen Masse. Welcher
Widerstand kommt auf die CAN Geschwindigkeit an.
RX und TX an den Atmel.
na das nenne ich mal eine superschnelle und qualifizierte Antwort!
Danke!
Hast Du auch ein fundamentales Beispiel mit Schaltung und GCC-Code? Bei
diesen ganzen Beispielprojektem im Netz finde ich mich als Anfänger
nicht zurecht.... Trotzdem Danke!
@nene
Auch wenn das jetzt ganz böse klingt, aber das Schaltungsbeispiel
findest Du im Datenblatt des 65HVD251D beachten (Spanungsbereich
beachten!) und die Software empfehle ich dringend selber zu schreiben.
Der Grund warum die Beispiele im Internet so komplex und unverständlich
sind ist, dass, das der Can-Bus etwas komplizierter ist, als die
USART-Schnittstelle mit zahllosen Einstellungen für Timing,
Timing-Tolleranz usw.
By the Way
Ich habe kein Beispiel im Internet gefunden, dass funktioniert hätte.
Wenn der Compiler nicht schon mit zig Fehlermeldungen abbrach lief
spätestens nach dem Ausspielen nix mehr. Und viele Sachen die da mit
eingebunden und benutzt werden braucht man nicht unbedingt.
Im wesentlich einverstanden mit der Antwort - muehsam. Lies doch den
ausgezeichneten Artikel von Fabian Greif:
http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515
Auch wenn er fuer andere Hardware geschrieben ist, er ist eine
ausgezeichnete Einfuehrung. Ich halte die Dokumentation des AT90CANxxx
im Bereich CAN fuer aeusserst duerftig, die des mcp2515 ist viel besser.
Viele Eigenschaften des AT90CAN habe ich erst aus Extrapolieren vom
mcp2515 verstanden, ganz abgesehen von den Erklaerungen im Dokument von
Fabian Greif.
Noch ein paar Bemerkungen: ich bin vom mcp2515 auf den AT90CAN
umgestiegen weil der SPI Zirkus zum internen Verschieben der Daten
unnoetige Komplexitaet und Aufwand schafft, nicht unproblematisch in
einer interruptgesteuerten Echtzeitanwendung. Auch hat der AT90CAN in
seinen Spezifikationen viele Vorteile (z.B. Vielfalt der MoBs), auch die
Architektur ist sauberer (trotz der Verschleierung durch unsaubere
Dokumentation) - bleib bei der Wahl des AT90CAN!
Ich habe mir auch die Bibiliotheksvariante der erwaehnten Software und
ihre AT90CAN Variante angeschaut, gleiche Meinung wie schon
ausgesprochen: interessant als Anregung, aber zweifelhaft als Schablone
zum einfach Kopieren - der erwaehnte Artikel ist eine glueckliche
Ausnahme.
Ehe Du anfaengst zu programmieren: die Beispiele sind verhaeltnismaessig
leicht uebertragbar wenn Du ohne Interrupts arbeitest, mit Interrupts
brauchst Du erst ein Konzept ueber die Echtzeitumgebung (falls
benoetigt, meiner Meinung nach einfachstes: Idle Loop + Signalisierung
von den Interrupt Handlern + Callback Handler von der Idle Loop zu den
Anwendungen).
Mir hat bei der Entwicklung der AT90CAN Software geholfen, dass ich
schon laufende MCP2515 Module hatte, und die Funktion der neu
entwickelten AT90CAN Bausteine im Dialog mit den funktionierenden Moduln
pruefen konnte - ein aehnliches Vorgehen koennte auch woanders helfen
(und den MCP2515 nach Vorlage zum Laufen bringen ist eine gute Uebung
zum Anfangen).
@Juergen Harms: Gibt es auch keine nützliche, leicht übertragbare
Bibliotheken, mit dem ich einfach ein PDO(ID, LEN, Data[0]...Data[7])
uebertragen kann? Mehr will ich eigentlich gar nicht machen. Achso, und
die Baudrate muss ich auf 500 stellen. ID-zuweisung ich denke ich auch
ganz sinnvoll.
Ich habe keine gefunden. Der Grund ist wohl, dass jeder der in solch ein
Abenteuer einsteigt den AT90CAN fuer ein wohl eher komplexes und fuer
ihn spezifisches Projekt braucht, das Ganze (oh deutsche
Rechtschreibung!) fuer "Einsteiger" zu vereinfachen und banalisieren ist
dann ein erheblicher Mehraufwand.
Florian Greif hat das im wesentlichen mit seinen Kollegen (Aachener
Chaos Klub - Roboterklub?, oder irgend sowas, ich habe mir die Referenz
nicht aufgehoben) getan, aber das Resultat ist in meinen Augen zu
komplex. Aehnlicher Schluss bei den Bibliotheksprozeduren bei
http://www.chip45.com/, fuer mich auch nicht das Gelbe vom Ei.
Ich haette Lust meine Bibliothek einmal aus ihrer Anwendung
herauszuloesen und in ein paar einfache Demo Beispiele einzugliedern.
Mit dem dazu gehoerigen Begleittext schaetze ich das auf eine Woche
Arbeit - vielleicht im Winter.
Es ist ja nicht so, dass wir Dir die Sachen vorenthalten wollen,
aber das Problem ist eben, dass Du es damit nicht zum laufen bringst,
obschon es eben bei uns super läuft.
Ging schneller, als ich dachte. Hier ist der Artikel [[CAN Bibiliothek
für AT90CAN Prozessoren]] (Links zur Software liegen am Ende des
Textes).
Ich nehme an, dass der Betrieb mit Interrupts zum "Schnuppern" nicht
ganz ideal ist - bin aber ueberzeugt, dass eine Anwendung, die CAN
sinnvoll einsetzt, ohne Interrupts kaum zu denken ist.