Forum: Haus & Smart Home CANopen Protokoll im Assambler


von Chrischio (Gast)


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

von Willivonbienemaya .. (willivonbienemaya)


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.

von Chrischio (Gast)


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".

von Willivonbienemaya .. (willivonbienemaya)


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?

von Chrischio (Gast)


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.

von yalu (Gast)


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.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Da kann ich nicht helfen, sorry.

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
Noch kein Account? Hier anmelden.