Forum: Mikrocontroller und Digitale Elektronik Umwandler von Serieller Schnittstelle auf CAN-Bus


von Florian (ist verzweifelt!!!) (Gast)


Lesenswert?

Hallo AVR-Freunde!!

Ich bin verzweifelt:

Ich will das Protokoll der Seriellen Schnittstelle in ein CAN-Bus 
Protokoll umwandeln.

Ich lerne zurzeit erst den Codevision-Editor und kann nur den Timer 
programmieren, wenns hochkommt ein wenig mit dem UART-Baustein!


Kann mir jemand helfen??

PS: Nebenbei gesagt: PC-seitig verwende ich VS C# 2005!!

Danke schon im voraus!!

von crazy horse (Gast)


Lesenswert?

Hm, mal schaun:
die serielle Schnittstelle hat erstmal kein Protokoll in dem Sinne, das 
wird erst durch eine Software gebildet. Beim CAN sieht das ein bisschen 
anders aus, da werden die Daten in einen rel. komplexen frame verpackt.
Was genau willst du machen? Es ist rel. einfach, Daten von der seriellen 
Schnittstelle auf einen CAN-Bus zu senden, noch einfacher ist es 
andersrum. Die Probleme lauern hauptsächlich im timing des ganzen, da 
beide Systeme natürlich nur begrenzte Bandbreite haben. Wenn man 
schneller Daten sendet, als das andere verarbeiten kann, hat man ein 
Problem. Buffer helfen, wenn der Datenstrom diskontinuirlich ist, 
ansonsten kommt man um ein handshake nicht herum. Und gerade das geht 
wiederum auf dem CAN-Bus eigentlich überhaupt.
Also schreib einfach mal genau, was du machen willst und was VS C#2005 
ist.

von Dirk D. (dirkd)


Lesenswert?

Versuch mal genauer zu beschreiben was Du machen willst

Z. B. Welche Komponenten sind beteiligt?

Willst Du nur eine CAN-Interface, daß Du an die serielle Schnittstelle 
des PCs anschließend willst?

Oder willst Du über einen AVR auf den CAN-Bus zugreifen?

Du solltest Dich auch erst einmal etwas in den CAN-Bus einlesen.

Du kannst z. B. nicht UART Daten 1 zu 1 auf den CAN-Bus schreiben. UART 
ist zeichenorientiert, CAN ist Botschafts-orientiert.

Infos
http://www.me-systeme.de/canbus.html
http://www.mikrocontroller.net/articles/CAN-Bus

von Florian (ist verzweifelt!!!) (Gast)


Lesenswert?

Hallo Danke erst mal für die Meldung!!

Ich will softwareseitig einen Datenrahmen vom PC über die serielle 
Schnittstelle auf den Atmega16 schicken. Dieser Datenrahmen soll dann in 
ein ein Can-Bus Botschaftsrahmen (Can-Bus Protokoll) umgewandelt werden 
(Identifier und so).
Es soll also ein simples Gateway programmiert werden.(was für mich schon 
zu komplex ist)

Es wird angenommen, dass der PC keinen Can-Bus integriert hat.

Danke hast du vielleicht ein ähnliches Programm oder gute Ideen parat.

mfg Florian

PS: Das Programm ist Visual Studio 2005 C# Express version wenn du dich 
dann besser auskennst.

von Florian (ist verzweifelt!!!) (Gast)


Lesenswert?

Die Bausteine sind:

STK501 CAN Bus Platine
STK500 Platine
und
AVR Atmega16

Danke

von crazy horse (Gast)


Lesenswert?

wenn du schnelle Ergebnisse willst, empfehle ich dir die Kombination mit 
dem SPI-CAN-Controller MCP2515. Mach dir eine kleine Platine mit dem 
MCP, dazu einen CAN-Transceiver.

Willst du das STK501 verwenden, solltest du dir einen AT90CAN128 
besorgen, der hat den CAN-Controller schon on Chip.

von Florian (ist verzweifelt!!!) (Gast)


Lesenswert?

Hallo!

Ich habe leider diese Boards schon gekauft und will es darum mit diesen 
versuchen!
Kennst du dich vielleicht auch mit diesen Bausteinen aus???

Wäre echt gigantisch wenn du dich da auch auskennen würdest.

Danke für deine mitHilfe!!!

lg Florian

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Die STK501 CAN Bus Platine ist nur der Transceiver mit Secker und 
Hühnerfutter, und erfordert einen AT90CAN128.
Mit dem Mega16 wirst du da nichts.
Möglichkeit, die du jetzt hast: AT90CAN128 (AVR mit 
CAN-Kernerweiterung)besorgen oder den MCP2515 von Microchhip, ein 
CAN-Controller, der über die SPI angesprochen wird.

von crazy horse (Gast)


Lesenswert?

Hm, sinngleich stand das schon 2 posts höher :-)

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Das stand da vorhin noch nicht! ;-)

von Michael S. (mst)


Lesenswert?

@Florian:

Bitte jetzt nicht falsch verstehen, ABER:

Falls du an Software-CAN denkst, lass dir von jemand der vor dem 
90CAN128 mit dem Mega128 Software CAN realisiert hat sagen, wenn du dich 
nur mit Timer und USART auskennst, VERGISS ES !!!

crazy horse's Vorschlag ist da der schnellere, sichere und sinnigste 
Weg, wenn du schon Hardware gekaufst hast, musst du halt akzeptieren, 
das von dem Zeugs evtl. etwas nicht brauchbar ist! ...oder halt gleich 
CAN128, aber wurde ja schon geschrieben...

Gruß Micha,

PS: Software-CAN mit 125kHz auf ATMega128@16MHz mit alles was 
dazugehört... (Bit-Stuffing, PolynomCRC, Identifier, ACK, etc...) ---> 
Das Teil war während der Sende und Empfangsphase echt am straucheln...

von Florian (ist verzweifelt!!!) (Gast)


Lesenswert?

Wenn ihr meint!!

Ich habe schon eine Hilfe bekommen die zu gabrauchen ist!

Aber danke trotzdem

mfg Flroian

von _CH_ (Gast)


Lesenswert?

Hallo,

wenn der Eigenbau nicht funktioniert, dann kann man sowas auch kaufen... 
Vielleicht ist das das richtige für dich?!

http://condalo.de/pid137.html

Gruß,
Christian

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.