Hallo, hab jetzt schon einige Erfahrung in Sachen PIC gesammelt. Und nun geht es zu einem neuen Thema: dem CAN-Bus. Dazu hab ich auch gleich ein paar Fragen: - Wie kann ich mittels Assembler den CAN-Bus steuern? Welcher PIC benutzt wird, ist egal. Sollte nur ein PIC16F... oder PIC18F... sein. - Hat jemand Code-Bsp. mit Schaltplänen (wegen Trancreciver etc.)? - Stimmt es, dass es keinen Master/Slaves gibt, sonder nur Nodes (im Standard-Modus), die dann ein Signal aussenden und der der PIC, den es interessiert, es abfängt und auswertet? Dass wären meine Fragen. Jedoch frag ich mich auch, ob dieser Bus überhaupt nötig ist. Will ein System ähnlich eines Haus-Buses bauen, jedoch nicht so komplex. Es gibt: - 2 Nodes (A und B) mit 2x16 Bildschirm + LED'S - 1 Node (C) mit 2x16 Bidlschirm + LED's + Tasten - 1 Node (D), dass nur mit einem PC in Verbindung steht Gesedet wird meistens von den Node D zu den anderen und von den entsprechenden Nodes wieder zurück. Jedoch kann es später auch vorkommen, dass Kommunikation zwischen den Nodes (z.B. A und C) stattfindet. Evtl. wird das System (je nachdem, wie gut es jetzt klappt), noch größer. Könnten am Ende bis zu 20 Nodes werden (im Idealfall). Sollte das Alternativ-Protokoll auch nicht ins schleudern bringen. Datenraten von bis zu 500kbits sollte das Alternativ-Protokoll auch beherschen. Gibt es eigentlich Alternativen zum CAN-Bus in diesem Bsp? Bisher habe ich zum CAN-Bus nur Info's auf sprut gefunden, aber leider keinen Code. Wäre über Hilfe erfreut! MfG Julian
Habe hier eine Antwort gepostet: http://www.fernando-heitor.de/component/option,com_smf/Itemid,121/topic,3773.msg19244/topicseen,1/#new
Kurze Antworten zu deinen Fragen: - Meinst Du CAN Ansteuerung ohne CAN-Baustein, d.h. Protokoll 'zu Fuß' abarbeiten? Ist theoretisch möglich, ist aber absolut sinnfrei. Entweder man nimmt einen Controller mit integrierten CAN oder man nimmt einen externen CAN-Controller wie den MCP2515 von Microchip. Dazu einen Bustransceiver wie den TJA1040, AT6660 oder MCP2550. Beispiele zur Ansteuerung findet man einige im Netz, ist recht einfach. Voraussetzung ist aber eine gewisse Grundkenntnis des CAN-Bus, aus deinen Ausführungen entnehmeich da gewisse Defizite. - Wie gesagt, lese Dir die Grundlagen durch (zu Hauf im Netz), da wird einem auch relativ schnell klar, dass alle Busteilnehmer gleichberechtigt sind. Man spricht von Nodes, das ist richtig. - Alternative wäre der RS485-Bus, ist vielleicht für den Anfang besser zu durchschauen. Allerdings muß man hier selber für Ordnung auf dem Bus sorgen (wer darf wann was senden), was die Sache schon wieder kompliziert macht. Hat man beim CAN-Bus die grundsätzliche Kommunikation funktionierend ist die Implementation hier SEHR einfach. Vorausgesetzt man muss nicht irgendwelchen Normen entsprechen. - Sowohl RS485 als auch CAN können mit 500kbit arbeiten, in einer Ausbreitungslänge eines Hauses finde ich die Baudrate dann aber schon grenzwertig. Man muss schon sehr auf korrekte Abschlüsse und ordentliche Busverlegung achten. Weniger Probleme würden niedrigere Baudraten machen. Warum so hoch, was soll da denn noch drübergehen? Oder hast Du Angst wegen der Latenzen? Wäre unberechtigt, selbst bei 50kbit bekommst annehmbare Verzögerungszeiten für dein dargestelltes System (wie gesagt, wenn nicht gerade nebenher MP3s darüber versendet werden)
Die 500kbits wären für mein geplantes System schon nötig. Zwar im aktuellen Status NOCH nicht, später dann eben doch. Gut, varianten gibt es ja viele. Könnte mir aber keiner ein fertiges Beispiel posten. Kann von mir aus auch in C sein. Ich finde einfach nix passendes :( Würde mir nämlich mal gerne eine fertige Programmstruktur ansehen. Bsp. für Can-Bus (egal, ob extern Controler oder interner) für den PIC in C oder Assembler, kennt keiner soeine Seite. Kann ruhig (bzw. ist besser) sehr einfach gehalten sein. Das einzigste, was ich gefunden habe, ist: http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515 Leider aber für den AVR :(
Bin wieder fündig geworden: http://www.mput.de/projects/electronic/can/Verteilte-TemperaturRegelung-CAN.html werde doch leider nicht so schlau daraus, wie die das angestellt haben. Könntet ihr mir das kurz erklären und sich evtl. einer erbaremen, ein ganz einfaches Code-Bsp. zu schreiben?
Die Vorlage von www.kreatives-chaos.com habe ich auch verwendet, um damit den MCP2515 anzusteuern, ebenfalls mit einem PIC unter C. In erster Näherung kann man das 1:1 übernehmen. Meine Sources kann ich Dir aber nicht geben, sind kommerziell verwertet...
Könntest du mir evtl. ein paar Punkte sagen, die man ändern müsste.
Wie gesagt, im ersten Ansatz erstmal nur die SPI-Routinen, die müssen auf den PIC übertragen werden. Der Rest kann 1:1 so bleiben, wirklich!
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.