www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC: CAN-Bus(?) via Assembler ansteuern


Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Harald A. (embedded)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Leider aber für den AVR :(

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin wieder fündig geworden:
http://www.mput.de/projects/electronic/can/Verteil...


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?

Autor: Harald A. (embedded)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könntest du mir evtl. ein paar Punkte sagen, die man ändern müsste.

Autor: Harald A. (embedded)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.