www.mikrocontroller.net

Forum: Haus & Smart Home CANopen Protokoll im Assambler


Autor: Chrischio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hat einer von euch schon mal ein CANopen Bus im Assambler Programmiert ?
Ich habe das Problem das ich nirgendwo mal nen Code im Assambler finden 
kann.
Wenn mir einer von euch mal nen Code zuschicken könnte wäre ich sehr 
dankbar.

mfg Christian

Autor: Willivonbienemaya .. (willivonbienemaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chrischio wrote:
> Hallo,
> hat einer von euch schon mal ein CANopen Bus im Assambler Programmiert ?
> Ich habe das Problem das ich nirgendwo mal nen Code im Assambler finden
> kann.
> Wenn mir einer von euch mal nen Code zuschicken könnte wäre ich sehr
> dankbar.
>
> mfg Christian


Da wirste sicher jemand finden. (Ironie)

Hsate du wage Vorstellungen was du erwartest und wieviel Arbeit das 
macht.
Du bist dir scheinbar nicht einmal darüber im klaren, was "Assambler" 
ist.

Autor: Chrischio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich weiss, das ich "Assambler" falsch geschrieben habe, denn es war 
ja auch schon spät!!!
Ich weiss das es sehr viel Arbeit macht das zu proggen!!
Aber ich muss nur wissen wie ich eine Nachricht im Ass"E"mbler uber die 
CAN pins de`s µC sende.
Mehr will ich ja garnicht!
Ich möchte hier kein komplettes Programm haben!
Und wenn mir keiner helfen WILL , dann muss ich eben "das Rad für mich 
neu Erfinden".

Autor: Willivonbienemaya .. (willivonbienemaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist nicht das es falsch geschrieben ist (2 mal).
Das Problem ist dass niemand weiss wie er dir helfen soll, weil niemand 
weiss für welchen Controller der Assemblercode sein soll.

Für was brauchst du das? Studienarbeit ? Diplomarbeit?

Autor: Chrischio (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll für nen 89C51 con Atmel sein!
Brauche das für ein Privates Projekt.
Das programm soll nix anderes machen als, das wenn auf port 1.1 eine 
Spannung anliegt das in ein CANopen Protokoll zu verpacken, das dann von 
einem anderen µC sendet der dann das Protokoll aufnimmt verarbeitet und 
dann an z.B. an port 5.2 einen ausgang schaltet!
Ich brauche den Code im Assembler weil das das einzigste Programm ist 
womit ich wenigstens schon mal ein bisschen was gemacht habe.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> hat einer von euch schon mal ein CANopen Bus im Assambler
> Programmiert ?

Was suchst du genau, CAN-Bus oder CANopen? Letzteres ist ein höheres
Kommunikationsprotokoll (Schicht 7), was auf ersterem (Kommunikations-
schichten 1 und 2) abläuft.

CANopen ist meiner Meinung nach etwas zu komplex, um es in Assembler
zu programmieren. Von mehreren Firmen werden für einiges Geld
entsprechende Bibliotheken angeboten. Die sind aber praktisch alle in
C und für die Einbindung in C-Programme implementiert. Es gibt auch
eine freie Bibliothek, ebenfalls in C: http://www.canfestival.org

> Brauche das für ein Privates Projekt.

Benutzt du in deinem Projekt Komponenten, die per CANopen angesprochen
werden? Wahrscheinlich eher nicht. Dann würde ich auf CANopen
verzichten und die Kommunikation über das "normale" CAN-Bus-Protokoll
abwickeln, das größtenteils bereits in der CAN-Hardware implementiert
und deswegen relativ leicht (auch in Assembler) zu programmieren ist.

> Das programm soll nix anderes machen als, das wenn auf port 1.1 eine
> Spannung anliegt das in ein CANopen Protokoll zu verpacken, das dann
> von einem anderen µC sendet der dann das Protokoll aufnimmt
> verarbeitet und dann an z.B. an port 5.2 einen ausgang schaltet!

Dann pack die Information, die du übertragen willst, in eine normale
CAN-Nachricht, verpasse ihr einen geeigneten Identifier und schicke
sie auf den Bus. Eine CAN-Nachricht kann bis zu 8 Datenbytes
enthalten, was für die von dir beschriebene Anwendung locker
ausreichen sollte.

Das zu programmieren ist nicht schwer, wenn du die CAN-Grundlagen und
die von dir eingesetzte CAN-Hardware verstanden hast. Zu CAN im
Allgemeinen gibt es Infos im Netz (ich würde vielleicht bei Wikipedia
anfangen), zu deiner CAN-Hardware gibt es ein Datenblatt.

Die eigentliche Programmierung besteht dann im Wesentlichen aus den
folgenden Schritten:

- Initialisierung der CAN-Hardware (Einstellen der Bitrate,
  Konfiguration des Nachrichtenfilters usw.)

- Füllen der Sendedaten in einen von der Hardware zur Verfügung
  gestellten Puffer

- Absenden der Nachricht

- Abfrage, ob eine Nachricht empfangen wurde (ggf. durch
  Interrupthandler)

- Auslesen der Nachricht aus Hardwarepuffer

Alles andere wie z. B. Fehlererkennung, die automatische Wiederholung
fehlerhaft übertragener Nachrichten usw. macht die Hardware für dich.

Autor: Willivonbienemaya .. (willivonbienemaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da kann ich nicht helfen, sorry.

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.