Forum: Mikrocontroller und Digitale Elektronik CAN Bus in C


von Flo M. (flosinho)


Lesenswert?

Hallo,

ich schreibe z.Zt. meine Bachelorarbeit. Aufgabe ist die Steuerung einer 
Modellbau Servo über den CAN Bus. Als Sprache für den CAN soll C 
dienen.(einzige was ich kann) Ich habe als größten (und einzigen Erfolg) 
eine Uhr in C programmiert. Ich habe das CAN Prinzip verstanden, aber 
den Aufbau in C bekomm ich nicht hin. Als Controller soll der 
Microsoftstick Plus dienen. Ich finde keinen Ansatz für den CAN, deshalb 
möchte ich nicht "copy and paste" machen! Bloß aktuell wird es für mich 
zu abstrakt den Aufbau logisch in C zu schreiben.

von Martin (Gast)


Lesenswert?

> Microsoftstick Plus

Link?

von Michael L. (Firma: Ingenieurbüro Lehr) (ml-net)


Lesenswert?

CAN wirst du nicht programmieren können wenn dein Mikrokontroller keine 
eingebaute CAN Hardware hat. In Software ist das fast unmöglich. Schon 
gar nicht für einen Anfänger. Also, was hast du für Hardware?

von Flo M. (flosinho)


Lesenswert?

der Link: http://en.microstickplus.com/
der hat ein CAN Modul eingebaut.

von Phil J. (sunflower_seed)


Lesenswert?

Wenn man bedenkt das ich nicht ma mein Studium auf die Reihe kriege aber 
so ne Aufgabe lösen könnte...

Nehme mal an du meinst das hier 
http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=TCAD001
und die Implementierung der CAN Hardware ist für dich egal.

Wenn du was lernen willst:

Lies für den Anfang das GCC Tutorial und versuch zu verstehen wie 
Microcontroller funktionieren und wie man in Register schreibt und aus 
ihnen liest.

CAN Nachrichten werden üblicherweise in C als structs zusammengebastelt.


Wenn du nix lernen willst:

Klicke im obigen Link auf Examples. Lade Das ECAN Beispiel runter und 
pass es an.
Könnte allerdings doof kommen wenn du nix kapierst und dann hier doofe 
Fragen stellst (nur so als Hypothese ;-) )

von Flo M. (flosinho)


Lesenswert?

wie Controller funktionieren ist mir bewusst. (Deswegen ja das Bsp. mit 
der Uhr)
Ich studiere keine Informatik, deswegen Gratulation, dass du das kannst!
Das ECAN Bsp. kenne ich auch, aber verstehe davon noch nicht allzu viel.

von c-hater (Gast)


Lesenswert?

Flo Muster schrieb:

> ich schreibe z.Zt. meine Bachelorarbeit. Aufgabe ist die Steuerung einer
> Modellbau Servo über den CAN Bus. Als Sprache für den CAN soll C
> dienen.(einzige was ich kann) Ich habe als größten (und einzigen Erfolg)
> eine Uhr in C programmiert. Ich habe das CAN Prinzip verstanden, aber
> den Aufbau in C bekomm ich nicht hin.

Dann kannst du wohl kein Bachelor werden...

So'ne primitive Scheiße korrekt umsetzen zu können, wird (zu Recht!) 
sogar von IT-Facharbeitern verlangt. Die können sich aber unter 
bestimmten Umständen wenigstens noch damit herausreden, daß ihnen 
irgendwelches benötigte Wissen nicht vermittelt wurde.

Bei einem Bachelor zieht das aber nicht mehr. Der hat per Definition in 
der Lage zu sein, sich zur Realisierung des Projektes ggf. fehlendes 
Wissen selbstständig zu erarbeiten. Es wird sogar gefordert (und als 
Bildungsinhalt vermittelt), daß er die zur Selbst-Aufschlauung nötigen 
Aufwendungen korrekt in das Projektbudget einkalkuliert...

Das ist natürlich ziemlich fies, denn der Delinquent muß dazu wenigstens 
soviel Kenntnisse haben, um das ganze Ausmaß des Kenntnismangels 
wenigstens halbwegs korrekt einschätzen zu können...

Aber was solls, es gibt kein grundgesetzlich verankertes Recht, daß das 
Arbeitsleben Spaß machen muß. Gewöhn' dich dran!

von Dr. Sommer (Gast)


Lesenswert?

Soll das ein Witz sein? Das zählt als Bachelor- Arbeit?  Verschenkt 
deine Hochschule Bachelortitel? Das programmier ich dir noch vor der 
Mittagspause, in einer beliebigen Programmiersprache auf einem 
beliebigen Mikrocontroller. Und du musst dafür auch noch im Forum 
fragen?!

von Flo M. (flosinho)


Lesenswert?

Ich studiere Maschinenbau! Ich habe nur ein Mikrocontroller-Modul 
gehabt! Ich finde es hervorragend, dass Informatiker (berufl. oder 
hobbymäßig) sich über sowas Gedanken machen. Die Programmierung ist 
lediglich ein Teil meiner Bachelorarbeit (WARUM muss ich mich hier dafür 
verteidigen und das Thema wird vollständig verfehlt?) Wenn mir jmd. 
helfen möchte - GERNE. Wenn jemand weiter über den Verfall deutscher 
Bildungsgüter diskutieren möchte, dem empfehle ich das Forum der Bild.

von Phil J. (sunflower_seed)


Lesenswert?

>Ich studiere keine Informatik
Dito.

>aber verstehe davon noch nicht allzu viel.

Dann erzähl doch einfach mal, was du nicht verstehst oder wo es momentan 
hängt.
Dann wird es vielleicht etwas konstruktiver.

von Flo M. (flosinho)


Lesenswert?

Es hängt am Anfang. Der Controller ist der MCP2551; welche Bibliotheken 
müssen eingebunden werden? und vor allem: Der Aufbau des CAN Frames in 
C....Wie wird das dargestellt?

von Claus M. (energy)


Lesenswert?

Flo Muster schrieb:
> Ich studiere Maschinenbau! Ich habe nur ein Mikrocontroller-Modul
> gehabt! Ich finde es hervorragend, dass Informatiker (berufl. oder
> hobbymäßig) sich über sowas Gedanken machen.

Da braucht es keinen Informatiker, jeder Etechniker würde das auch 
hinbekommen. Aber bei Maschinenbauern setzt es ja bekanntlich aus, wenn 
man Teile nicht anfassen kann.

von Phil J. (sunflower_seed)


Lesenswert?

Der MCP2551 ist kein CAN Bus Controller.
Den Job übernimmt dein Mikroprozessor.
Das Ding ist nur der Bustreiber, dieser hängt am CAN Output des 
Prozessors.

Am besten die Bibliotheken die du für CAN brauchst, beziehungsweise die 
Routinen die freundlicherweise ja für dich schon bereit liegen.

Der CAN Frame ist wie bereits erwähnt in der Regel (ich habe das 
Beispiel nicht angesehen) ein struct und wird einer Sendefunktion 
übergeben...

Hast du in etwa eine Ahnung wie dein Programmablauf schematisch aussehen 
muss?

von Flo M. (flosinho)


Lesenswert?

Phil J. schrieb:
> Hast du in etwa eine Ahnung wie dein Programmablauf schematisch aussehen
> muss?

Nein. Aber immerhin weiß ich nun schon, dass der PIC als CAN Controller 
dient.
Ich soll das mittels MplabX machen, der PIC ist ein 24hj64gp502, welcher 
Compiler soll dafür benutzt werden?

von Michael L. (Firma: Ingenieurbüro Lehr) (ml-net)


Lesenswert?

wenn du MPLAp installierst kannst du den Compiler gleich auswählen, eine 
frei Version ist dabei. Dann laufen auch die Libraries von Microchip 
problemlos.

von Peter P. (Gast)


Lesenswert?

Zu dem Compilern - schau mal auf folgende Seite:
http://www.microchip.com/pagehandler/en_us/devtools/mplabxc/

Zu deinem PIC - schau mal auf folgende Seite:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en534556

Wo kommen die CAN-Frames her? Wer erzeugt diese?
Und wie schauen die CAN-Frames überhaupt aus?
Was ist darin enthalten?
Hast du eigentlich 2 von den PICs/Evalboards?

von Flo M. (flosinho)


Lesenswert?

Danke für alle Antworten. Also zur Geschichte, ich hatte erst 2 Explorer 
16 Boards mit dem zusätzlichen ECAN Aufsatz. Ich habe nun den Microstick 
erhalten und es so verstanden, dass der Stick die Servo über CAN steuern 
soll. Ohne die anderen Boards.

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.