CANopen Protokoll im Assambler

#561161
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.
Gast #561202
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".
Gast #561268
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.
Gast #561313
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren