Mit der Butterfly an den CAN Bus?

Gast #471074
Lesenswert?

CAN direkt an den Pins ist mehr was für Igor. Normale Menschen nehmen 
CAN-Controller. Hier sinnvollerweise den MCP2515, und Tranceiver 
SN65HVD23x. Beide können 3,3V. Per USI anzuschliessen. Soweit also kein 
Problem.

Etwas ärgerlicher ist, dass der Schmetterling keinen verwertbaren 
Interrupt-Eingang hat.
Gast #480764
Lesenswert?

Also ich habe jetzt meine Bauteile bekommen.

Den MCP2515 und den SN65HVD231D.
Ich bräuchte jetzt evtl. ein bisschen Hilfe mit dem Schaltplan zwischen 
dem Schmetterling, CAN-Controler und CAN-Tranciever.

Könnt ihr mir da vielleicht helfen?

Spontan hätte ich gesagt, dass ich die beiden Bauteile auf eine neue 
Platine setzen muss und diese dann über Strippen mit dem Schmetterling 
verbinde.
Gast #480787
Lesenswert?

Alternativen:

1: Du verwendest Software-SPI und nimmst dafür die 4 Pins vom 
JTAG-Anschluss - JTAG geht dann natürlich nicht mehr und muss per Fuse 
abgeschaltet werden.

2: Willst du JTAG retten, dann geht auch der normale SPI-Anschluss an 
Port B, an dem auch das Dataflash hängt. Da dessen SS deshalb verbrannt 
ist, muss ein anderer Pin das CS-Signal bedienen. Am einfachsten ist es 
(weil am gleichen Anschluss), du verzichtest auf die Tröte, lötest die 
Brücke R202 aus und verwendest PB5 als CS-Signal für den MCP.

3: USI als SPI. Dem Anschluss fehlt ebenfalls das CS-Signal. Viele freie 
Pins gibt's allerdings nicht. Da wäre beispielsweise der LDR-Pin, der 
bei neueren Lieferungen mangels Fotowiderstand unbenutzt ist. Allerdings 
muss du den vom Board fischen, an Steckern findet sich der nicht.

Der MCP braucht dann noch einen Takt (Quarz+Kondensatoren) und der 
Transceiver ist trivial.

Auf einen Interrupt wirst du m.E. verzichten und mit Polling arbeiten 
müssen. Der einzige externe INT vom Mega169 hängt am LCD und wie/ob sich 
das vereinbaren liesse, ist mir unklar.
Gast #480794
Lesenswert?

PS: In den Varianten 1 und 3 ist ein RC-Glied für den Reset vom MCP2515 
ausreichend. In Variante 2 muss man einen Konflikt mit dem ISP 
verhindern, indem entweder das Reset-Signal vom Butterfly benutzt wird, 
oder dem CS-Pin vom MCP einen Pullup-Widerstand (10K) spendiert wird.
Gast #480798
Lesenswert?

Wenn du ohne JTAG-debugging auskommst, ja. Ich benötige JTAG nur selten. 
Ausserdem ist dann das USI für irgendwelche I2C-Peripherie frei.

Griff ins Klo würde ich nicht sagen. Ist nur nicht der eleganteste Weg 
zu CAN. Mich hatte der fehlende Interrupt davon abgehalten, das Modul 
als Datenlogger zu verwenden. Alles andere hätte gepasst.
Gast #480823
Lesenswert?

> Was hättest du genommen?

MegaX plus MCP2515 plus Dataflash.

Anonsten hängt das von den Randbedingungen ab. Verwendet habe ich dann 
den LPC2119. Nicht weil das die effizienteste Lösung war, sondern weil 
mir im Rahmen des Projektes die diversen AVRs langsam zu Hals raus 
hingen und ich mal was anderes bauen wollte. Der Butterfly hätte mich 
dagegen aufgrund seiner Miminalistik wieder gereizt.
Gast #481451
Lesenswert?

Alles klar...
.. hab jetzt spontan noch Fragen:

Gibt es irgendwie die Möglichkeit online fertig geätzte Platinen zu 
bestellen?

Wie nennt man diese kleinen Stecker für einzelne Pins, damit ich die 
Kabel nicht auf den Schmetterling löten muss sondern einfach son Pin 
auflöte und die Kabel draufstecke?
Gast #482355
Lesenswert?

Mit welchen Pins muss ich denn am OBD2 Stecker arbeiten?

06 - CAN_Hi
14 - CAN_Low
05 - Signal_Ground

Das heißt ein Kabel mit 4 Adern würde mir vollkommen ausreichen vom OBD2 
zum mController?
Gast #483779
Lesenswert?

Nächste Frage. Ich möchte so langsam anfangen das Programm zu schreiben. 
Empfehlt ihr mir hierzu BASCOM oder eher C ?

In Bascom müsste ich mich kurz einarbeiten, C wäre evtl. für mich 
leichter, da ich C++ behersche (mehr oder weniger).

Wenn Ihr mir BASCOM rät, könnt ihr mir dann sagen, welche die aktuelle 
Version ist?
Gast #483803
Lesenswert?

>In Bascom müsste ich mich kurz einarbeiten, C wäre evtl. für mich
>leichter, da ich C++ behersche (mehr oder weniger).

Und wenn du mit Bascom "arbeitest" gehst du uns damit auf den Keks...

Da du C++-Kenntnisse hast, solltest du sie nutzen.
Gast #483843
Lesenswert?

Okay, dann nutze ich die.
Dann ergibt sich aber meine nächste Frage :)

Ich habe bisher noch nicht für mikrocontroler programmiert. Für meine 
C++ Programme habe ich meistens Dev-C++ benutzt oder MS Visual Studio 
2005.

Wenn ich jetzt nicht mit AVR Bascom arbeite, wie connecte ich dann zum 
Schmetterling und lade die Daten rüber?
Gast #483877
Lesenswert?

Habe auch mitlerweile etwas auf der Homepage hier gefunden :)

Im Netz habe ich folgendes Dokument zur Geschwindigkeit gefunden.

ID: 0x741
0x09 0x31 0x03 0x61 0x00 0x0B

Für die Umrechnung der Geschwindigkeit in einen realen Wert gilt das 
gleiche wie bei der
Drehzahl, mit Ausnahme des Umrechnungsfaktors. In einem Forum [2] haben 
wir gelesen,
dass dieser 1/128 sei, was sich allerdings als falsch herausstellte. 
Nach ein paar
Überlegungen sind wir auf 1/96 gekommen. Mit diesem Faktor kommt der 
Wert dem Tacho
sehr nahe.
0x0931 / 96D =
2353D / 96D = 24,5 km/h

Was sagt mit das 0x09, 0x31, usw.
Gast #484130
Lesenswert?

Du brauchst entweder das SPI des ATmega169 (PortB0..3) oder irgendwelche 
sonstigen Portpins. Wenn du das SPI benutzen kannst (Bootloaderbetrieb), 
dann hast schon Hardware, die grösstenteils die Kommunikation für dich 
übernimmt. Wenn du "irgendwelche" Portpins benutzt, muß du das SPI in 
Software nachbilden (auch nicht so schwierig).
Du brauchst 4-5 Pins: MOSI (Daten zum MCP2515), MISO (Daten vom 
MCP2515), SCK (Takt), /SS (Chipselect-Signal, damit der MCP2515 
feststellen kann, dass er gemeint ist) und vielleicht noch eine 
Interruptleitung vom MCp2515 zum AVR - das ist aber optional...
Gast #484188
Lesenswert?

Generell kann ich das nehmen, was der Schmetterling mir zur Verfügung 
gibt. Es ist ja nur dieses Projekt, dass ich mit dem realisieren möchte.
Wenn du mir empfiehlst den SPI zu nehmen, dann mach ich das auch so :)

Wobei dein Vorredner vom JTAG gesprochen hat.
Gast #484963
Lesenswert?

>Wobei dein Vorredner vom JTAG gesprochen hat.

Ich bin von deinem Schaltplan ausgegangen.
Das Butterfly-Board kenne ich nicht weiter.
Wenn da noch mehr am SPI hängt, musst du dem MCP2515 eine eigene 
/SS-Leitung spendieren.

>Jetzt habe ich nur noch Schwierigkeiten zwischen Controller und
>Tranciever.

Am MCP2515 gibt es die Pins "TXCAN" und "RXCAN".
"D" des SN65hvd231 kommt an "TXCAN" und "R" an "RXCAN".
Gast #484989
Lesenswert?

>Ich bin von deinem Schaltplan ausgegangen.
>Das Butterfly-Board kenne ich nicht weiter.
>Wenn da noch mehr am SPI hängt, musst du dem MCP2515 eine eigene
>/SS-Leitung spendieren.

Ich habe das ganze jetzt mal so abgeändert:
http://87.230.7.215/digifahrt/schaltplan.jpg

Hier ne grafische Beschreibung vom Schmetterling:
http://elmicro.com/images/pf-atavrbfly.jpg

Dank euch hätte ich dann soweit schonmal das Kabelzeug, sofern ihr mich 
jetzt auf die richtigen Pins am Schmetterling lenkt.

Ich muss - und will - mich wirklich schonmal bei euch bedanken. Ohne 
eure Hilfe wäre ich noch lange nicht soweit.
Gast #484992
Lesenswert?

Dass CAN Controller und Transceiver Strom brauchen, ist hoffentlich nur 
zwecks Vereinfachung des Schaltbildes nicht eingezeichnet.

Dem MCP muss man zusätzlich auch noch Takt beibringen, und ein RC-Glied 
für  Reset. Das steht freilich alles im Datasheet.
Gast #485004
Lesenswert?

>Dass CAN Controller und Transceiver Strom brauchen, ist hoffentlich nur
>zwecks Vereinfachung des Schaltbildes nicht eingezeichnet.

Ja, das wäre bei meiner Zeichnung zu unübersichtlich geworden.

>Dem MCP muss man zusätzlich auch noch Takt beibringen, und ein RC-Glied
>für  Reset. Das steht freilich alles im Datasheet.

Ich muss ehrlich gesagt zugeben, dass ich da noch nicht so ganz 
durchsteige. :(
Gast #485006
Lesenswert?

Eigentlich wurde weiter oben schon auf so ziemlich alles Beachtenswerte 
hingewiesen...
- AVR SPI Schnittstelle ist wenn recht erinnert nicht so wie im 
Schaltplan gezeichnet an J400 herausgeführt. Vgl. Schaltpläne in 
Butterfly User Guide
- Ist geplant CS des MCP2515 mit dem /SS-Pin des AVR zu verbinden? Der 
AVR-/SS_Pin ist bereits durch Chipselect des Dataflash-Speichers belegt. 
Anderen AVR-Pin nutzen (verfügbare s.o.). Vgl. ATmega169 Datenblatt, 
Dataflash-Datenblatt und auch Schaltplan im BF user guide: PB0/Dataflash 
select und PE7/Dataflash reset.
- Butterfly soll nicht mit 5V betrieben werden (s.o.), der genutzte 
CAN-Transceiver ist aber wenn recht erinnert ein 5V-Typ. Werden zwei 
Spannungen (5V für Transceiver und 3,x für BF) bereitgestellt? Evtl. 3V 
CAN-Transceiver nehmen (vgl. z.B. www.ti.com). Bei "mixed voltage" evtl. 
Pegelanpassung erforderlich (s.o.).
- Falls Stromversorgung über Auto-Bordnetz: DSE-FAQ beachten.
- Falls der MCP2515 beim AVR einen Interrupt ausloesen soll: 
Interrupt-Leitung des MCP z.B. mit einem der Pins des USI-Connectors 
verbinden (in Software dann per Pin-Change auswerten). Interrupt muss 
nicht sein, man kann den MCP auch stetig abfragen ("pollen") (s.o.).

Das Projekt lässt sich mit einem Butterfly+MCP2515+CAN-Transceiver 
realisieren. Aber vielleicht erstmal ein wenig mit dem Butterfly alleine 
herumspielen und Datenblätter/User Guide lesen. Mit dem vorhandenen 
Dataflash kann sich auch mit der SPI-Funktionaliät vertraut machen. 
Später MCP2515 per SPI ankoppeln und im Loopback-Mode CAN-Nachrichten 
senden/empfangen "üben".

Martin Thomas
Gast #485015
Lesenswert?

SN65HVD231 ist ein 3,3V-Typ. Das passt schon.

Der Anschluss an den JTAG-Stecker bietet den Vorteil, dass alle zwingend 
benötigten Pins am gleichen Stecker sind, also nicht erst eingesammelt 
werden müssen. Nur läuft das dann halt nicht als Hardware-SPI, sondern 
als Software-SPI.

@Stephan:

Software-SPI = SPI via expliziter Programmierung der einzelnen Portpins 
ohne Benutzung des SPI-Moduls des Controller, Bit für Bit, Zustand für 
Zustand. Ist eigentlich kinderleicht - vorausgesetzt man versteht die 
entsprechenden Signaldiagramme vom Datasheet.

Wenn du nicht in der Lage bist, im Datasheet vom MCP2515 die Schaltungen 
für den Quarzoszillator und für Reset zu finden, dann füchte ich du hast 
mit diesem Projekt ein bis zwei Nummern zu hoch gegriffen und sollest 
erst einmal mit den Grundkenntnissen in (a) Elektronik 
(http://www.elektronik-kompendium.de/) und (b) Controllerprogrammierung 
(http://www.mikrocontroller.net/articles/AVR-Tutorial) anfangen.
Gast #485057
Lesenswert?

> Etwas ärgerlicher ist, dass der Schmetterling keinen verwertbaren
> Interrupt-Eingang hat.

@A.K.
Verstehe ich nicht. PB und PE bieten doch PCINT und der analog 
Komparator würde sich auch noch anbieten ???
Gast #486563
Lesenswert?

@A.K.

>Wenn du nicht in der Lage bist, im Datasheet vom MCP2515 die Schaltungen
>für den Quarzoszillator und für Reset zu finden, dann füchte ich du hast
>mit diesem Projekt ein bis zwei Nummern zu hoch gegriffen und sollest
>erst einmal mit den Grundkenntnissen in (a) Elektronik
>(http://www.elektronik-kompendium.de/) und (b) Controllerprogrammierung
>(http://www.mikrocontroller.net/articles/AVR-Tutorial) anfangen.

Ich glaube das mitlerweile auch, dass dieses Projekt etwas zu hoch war. 
Dachte das wird wesentlich einfacher.
Leider werde ich nicht genügend Zeit haben, um mich allgemein in die 
Materie einarbeiten zu können.
Muss das irgendwie auf das Projekt bezogen machen. Ich hatte ja auch 
schon 1 Jahr Digitaltechnik in der Schule, von daher sollte ich einwenig 
Basis wissen mitbringen können, was ich allerdings auffrischen muss.
Gast #489004
Lesenswert?

Folegndes:
Ich habe jetzt das AVR Studio und will so langsam anfangen den Code 
zusammen zu bekommen.
Was ist denn die einfachere Variante, muss nicht zwigend die säuberste 
sein. Das System muss nur laufen.

Ich habe gesehen, dass ich beim AVR Studio die "Debug platform" angeben 
muss.
Was soll ich dor einstellen?
Gast #494286
Lesenswert?

Sofern ich hier noch irgendwie Hilfe bekomme, dann folgendes:

Wegen dem Software-SPI. Ich habe mich da einwenig eingelesenm und musste 
feststellen, dass der Aufbau der so aussieht:

CONFIG SPI = Soft, Din = Pinb.7, Dout = Pinb.6, SS = None, Clock = 
Pinb.5

Sind das nur diese 4 Variablen, mit denen ich Arbeite?

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