C DVK90CAN1 - erste Schritte / verstehe nur Bahnhof

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hallo ins Forum,

ich melde mich als blutiger Anfänger gleich mal mit einem ganzen Sack voll Fragen :|

Kurz zur Vorgeschichte:
Mein Ziel ist das Abhören vom CAN bzw. einzelne Botschaften einzuspeisen. Ein Kollege (selbst im Besitz eines STK500) hat mir als passenden uC direkt den AT90CANxxx ergoogelt. Ein passendes Eva-Board hat er auch gefunden, also rein ins kalte Wasser.

Als erstes habe ich Atmel Studio 6 installiert. Mit den Project-Wizzards dachte ich an einfachen Start (kenne das Visual Studio und die MFC). Aber jetzt bin ich nur noch ratlos. Nichtmal ein "Hello World" bekomme ich hin.

Wird der AT90CAN128 überhaupt unterstützt? Kein Wizzard scheint mir dafür geeignet.
Also ein reines C Projekt gestartet, aber dann fehlten gleich zu Beginn passende Header Dateien...
Immerhin konnte ich in der Zwischenzeit einen Build durchführen und habe nun *.hex und *.elf

Jetzt will ich also mein erstes Ergebnis auf das DVK90CAN1 bzw. in den AT90CAN128 flashen - aber wie? Brauche ich mehr als Atmel Studio 6 und Eva-Board?

Mein Fragenkomplex:
Hätte ich besser mit einem STK500 die ersten Schritte machen sollen?
Ist das DVK90CAN1 tatsächlich so ein Exot?
Brauche ich einen externen Programmer (den ich beim STK500 ja nicht benötige)?
Wenn ja, welchen?
Wo finde ich aktuelle Dokus zum DVK90CAN1 Revison 1.1?
Ist für dieses Board AVR Studio 4 die bessere Wahl (alle gefundenen Bsp. sind dafür)?

Danke, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

erstmal herzlich willkommen bei uns. :hello:

Verrate uns erstmal wo dieser CAN-Bus sich befindet. Ist es in einem Fahrzeug? Wenn ja, sollte es Dir klar sein, dass Du durch jegliche Modifikationen die BE für's Fahrzeug verlierst und im Falle eines Falles kann es hässlich werden. Das nur als Anmerkung, mehr werde ich dazu nicht schreiben.

Wenn Du AtmelStudio startest, kommt die StartPage. Da gehst Du auf "New Project..." und unter "Installed Templates" klickst Du "C/C++" an, dann hast Du auf der rechten Seite eine Liste, in der wählst Du "GCC C Executable Project" aus (also den ersten in der Liste), gibst noch dem Kind einen Namen (unten in der Liste unter "Name") und klickst auf "OK". Nun kommt ein weiteres Fenster, das sich "Device Selection" nennt. Unter "Device Family" kannst Du dann einfach "megaAVR, 8-bit" auswählen und weiter rechts gibt es ein Feld, wo man was reinschreiben kann. Dort schreibst Du "at90can" rein und schon hast Du links in der Liste nur noch drei MCUs, unter anderem auch Deinen AT90CAN128. Diese auswählen und auf "OK" klicken. Fertig.

Achja, die geöffnete .c Datei (heißt genau so wie Dein Projekt), kannst Du direkt nach "main.c" umbenennen. Das finde ich persönlich praktischer, ist aber Geschmacksache.

Damit ist Deine Frage, ob der AT90CAN128 unterstützt wird, beantwortet.

Dann willst Du Dein ELF-File also auf die MCU flashen. Nun, da brauchst Du entweder einen ISP/JTAG Programmer oder einen STK500, wo Du das Board drauf stecken kannst. Es ist ja quasi ein Zusatzboard, kann aber auch StandAlone betrieben werden.

ISP-Flasher: AVRISP mkII

Alternativ kannst Du Dir das hier holen:
Debugger: AVRDragon

Damit kannst Du dann nicht nur flashen, sondern auch noch debuggen auf der echten Hardware. Und einen ISP-Interface hast der Dragon auch.

Beide Geräte werden von AtmelStudio direkt unterstützt.

Die Doku zu Deinem Board DVK90CAN1 findest Du beim Hersteller, sprich Atmel.

Die Version vom Studio ist egal, wichtig ist die Sprache in der Du entwickelst.

Ein Rat von mir, bevor Du mit CAN anfängst, solltest Du Dir Grundkenntnisse in den Mikrocontroller aneignen. Du hast die MCU vollständig in der Hand, Du programmierst das BIOS, die Treiber und das Betriebsystem. CAN kommt da noch mal extra drauf. Es ist auf jeden Fall kein Zuckerschlecken.

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

Danke für Deine Willkommensgrüsse und die Antworten.

Mein erstes "Projekt" hatte ich genau wie von dir beschrieben aufgesetzt. Hat zwar ca. nen halben Tag gedauert, aber immerhin war ich auf dem richtigen Weg. Deine Beschreibung ist für mich deswegen umso wertvoller.
Ich hatte die Hoffnung, dass mein Eva-Board irgendwie direkter unterstützt wird. Für das STK600 gibt es unter Templates/AtmelBoards ja einiges. Und auch bei den ASF examples ist das STK600 aufgeführt. Ich bin nur verunsichert, warum das STK500 dort nicht aufgeführt ist :confused:

Erfordert das STK600 einfach "mehr drumherum" ?

Flashen geht also nicht ohne Zusatzhardware. Das hatte ich wegen Standalone-Fähigkeit erwartet/erhofft.
Die von Dir erwähnten AVRDragon und AVRISP mkII werden im Atmel Studio unter "Supported Tools" des uC genannt. Sehe ich das richtig, dass diese Tools die Programmer, Debugger,... sind?
Jetzt ist unter diesen Tools das STK500 nicht aufgeführt - aber das STK600 schon :help:

Bzgl. Doku habe ich schon die beigelegte CD, Atmel und diverse Foren durchwühlt. Alle Beschreibungen sind auf die Board-Revision 1.0 ausgerichtet. Dort ist zumindest eine Steckerleiste für die I/O Ports aufgelötet, der Lichtsensor bestückt und - manchmal - die beiden 40-poligen Stiftleisten am Rand (zum Aufstecken auf das STK500) bestückt.
Ich habe Board-Rev 1.1: Kein LDR, keine Stiftleisten für I/O und STK500 Konnektivität. Darüberhinaus ist das im Manual beschrieben Testprogramm (LED-Blinken) nicht vorhanden. Das Board habe ich von Reichelt, also hoffentlich kein zerflashtes.

Bzgl. CAN:
Ja, es geht um einen Fahrzeug-CAN. Dass es dabei viele Klippen gibt habe ich erwartet, wenn auch nicht in diesem Ausmass. CAN-Manipulationen mit CANalyzer und CAPL sind mir nicht fremd. Hast Du mir eventuell mehr Infos zu den potentiellen rechtlichen Problemen? (gerne auch als PM)

Danke, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

ich schreibe heute Abend was dazu.

CANalyzer und CAPL hört sich nach Vector Informatik an, ich arbeite als Softwareentwickler dort :)

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

mit Vector Informatik liegst Du natürlich richtig. Schöne Produkte entwickelt ihr da.

Vielen Dank, dass Du Dir für mich so viel Zeit nimmst :)

Und nach dem Prinzip Finger-Arm schiebe ich gleich noch eine Frage nach :eek:
Ich habe ein Paket mit Beispielen gefunden. Unter anderem jeweils ein *.c und *.h für bequemeres Ansteuern der LEDs sowie Auslesen der Taster.
In den *.c wird nicht nur die korrespondierende *.h inkludiert, sondern zusätzlich eine config.h
Diese config.h liegt aber nicht bereit. Dafür finden sich diverse unterscheidliche config.h bei anderen Beispielen.
Eine davon habe ich meinem Projekt hinzugefügt - und konnte dann auch compilieren.

Ist es "normal", dass die ersten Schritte so erschwert werden? Oder ist das DVK90CAN1 eben eher was für den fortgeschrittenen Bastler?

Danke, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

ich quote es mal:

Ich hatte die Hoffnung, dass mein Eva-Board irgendwie direkter unterstützt wird. Für das STK600 gibt es unter Templates/AtmelBoards ja einiges. Und auch bei den ASF examples ist das STK600 aufgeführt. Ich bin nur verunsichert, warum das STK500 dort nicht aufgeführt ist :confused:

Erfordert das STK600 einfach "mehr drumherum" ?

Ich denke es ist viel einfacher, das STK500 Board ist ja schon etwas älter, deswegen hatte Atmel einfach kein Bock mehr das Board in AS6 mit aufzunehmen.

Das STK600 frißt ja alles, angefangen von megaAVR bis hin zu den UC3.

Auch wenn STK600 dort nicht aufgeführt ist, macht es nichts, die MCU ist ja unabhängig vom Board.

Flashen geht also nicht ohne Zusatzhardware. Das hatte ich wegen Standalone-Fähigkeit erwartet/erhofft.
Die von Dir erwähnten AVRDragon und AVRISP mkII werden im Atmel Studio unter "Supported Tools" des uC genannt. Sehe ich das richtig, dass diese Tools die Programmer, Debugger,... sind?

Jein.

Der AVRISP mkII ist ein reiner Programmer.

Der Dragon ist sowohl Debugger als auch Programmer. Der Dragon hat hat einen ISP-Anschluß (nur flashen), JTAG (debug + flashen), HV (programmieren über high voltage), debugWire (wie der Name schon sagt, ein Debugger). Es ist halt so, dass nicht jede MCU über einen JTAG-Interface verfügt (wobei die größeren es haben), deswegen kannst Du sie dann nur über debugWire oder gar nicht debuggen. ISP ist aber immer da, darüber wird die MCU geflashed. Über JTAG geht sowohl flashen als auch debuggen.

Gerade für Anfänger halte ich persönlich einen Debugger für wichtig. Die "Erfahreneren" können da eher sehen, woran es happert, aber oft ist es schon sehr hilfreich zu sehen, was tatsächlich in den Register steht.

Jetzt ist unter diesen Tools das STK500 nicht aufgeführt - aber das STK600 schon :help:

Okay, das ist dann auch die Erklärung, warum STK500 nicht am Anfang auftaucht, das wird vom AS 6 gar nicht unterstützt.

Bzgl. Doku habe ich schon die beigelegte CD, Atmel und diverse Foren durchwühlt. Alle Beschreibungen sind auf die Board-Revision 1.0 ausgerichtet. Dort ist zumindest eine Steckerleiste für die I/O Ports aufgelötet, der Lichtsensor bestückt und - manchmal - die beiden 40-poligen Stiftleisten am Rand (zum Aufstecken auf das STK500) bestückt.
Ich habe Board-Rev 1.1: Kein LDR, keine Stiftleisten für I/O und STK500 Konnektivität. Darüberhinaus ist das im Manual beschrieben Testprogramm (LED-Blinken) nicht vorhanden. Das Board habe ich von Reichelt, also hoffentlich kein zerflashtes.

Das kann einfach sein, dass sie bei der Rev 1.1 etwas eingespart haben, kommt ja häufig vor. Aber das Board hat sowohl JTAG als auch ISP Interfaces, also perfekt. Mit dem Dragon könntest Du die MCU auch debuggen.

Bzgl. CAN:
Ja, es geht um einen Fahrzeug-CAN. Dass es dabei viele Klippen gibt habe ich erwartet, wenn auch nicht in diesem Ausmass. CAN-Manipulationen mit CANalyzer und CAPL sind mir nicht fremd. Hast Du mir eventuell mehr Infos zu den potentiellen rechtlichen Problemen? (gerne auch als PM)

Danke, Jens

Das Problem ist halt, dass am CAN Bus noch sowas wie ABS, ESP und der ganze Geraffel dran hängt. Wenn Du mit Deinen Exterimenten die Kommunikation irgendwie beeinträgtigst, sprich Buscollision oder weiß der Geier was, gehen die SGs in's Notprogramm und Ruhe ist. Dann hast Du halt kein ABS. Aber sollte es krachen und es kommt raus, wird die Versicherung versuchen Dir einen Strick draus zu drehen und da kann es häßlich werden. Da musst Du nämlich beweisen, dass Deine Modifikationen nichts mit dem Unfall zu tun haben und genau das ist alles andere als einfach. Das muss man halt im Hinterkopf behalten.

Und nach dem Prinzip Finger-Arm schiebe ich gleich noch eine Frage nach :eek:
Ich habe ein Paket mit Beispielen gefunden. Unter anderem jeweils ein *.c und *.h für bequemeres Ansteuern der LEDs sowie Auslesen der Taster.
In den *.c wird nicht nur die korrespondierende *.h inkludiert, sondern zusätzlich eine config.h
Diese config.h liegt aber nicht bereit. Dafür finden sich diverse unterscheidliche config.h bei anderen Beispielen.
Eine davon habe ich meinem Projekt hinzugefügt - und konnte dann auch compilieren.

Ist es "normal", dass die ersten Schritte so erschwert werden? Oder ist das DVK90CAN1 eben eher was für den fortgeschrittenen Bastler?

Danke, Jens

Naja, in der config.h kann alles mögliche drin sein, irgendwelche Macros für die Konfiguration. Das kann man machen, aber ob man es macht, ist immer so eine Sache. Viele (mich inklusive) machen zum Beispiel eine separate .c-Datei, in der die ganzen ISRs drin sind. Das mache ich aber nur bei der Cortex-MCU, beim Atmega mache ich sowas nicht.

Der AT90CAN128 scheint ein Atmega mit einem integrierten CAN-Controller zu sein, also was änliches wie ATA6613 nur mit LIN. Deswegen egal auf was für einem Board er drauf ist, die MCU ist wichtig. Das drumherum ist nur die Peripherie. Solange die MCU von der IDE unterstützt wird, ist der Rest völlig egal. Diese EVA-Boards sind ganz nett, wenn Du reinschnuppern willst oder wenn Du ein Projekt vor Augen hast. Aber am Ende wird eh eine eigene Schaltung dafür gebaut. Oder das Projekt verworfen. Ich habe hier ein EVA-Board von Steitec.net liegen. Da ist ein LPC1768 drauf. Die MCU wird von der IDE unterstützt, aber das Board kennt die IDE ist. Und? Wenn interessiert es? MCU + Debugger werden unterstützt, also passt es.

Da die MCU nur einen CAN-Controller drauf hat, brauchst Du noch einen CAN-Transceiver. Da kann ich Dir den TJA104x empfehlen, ist bombensicher das Teil. Ist für High-Speed. Für LowSpeed müsste ich nachschauen.

Das Board scheint auch eher etwas älter zu sein. Vielleicht gibt es deswegen nicht so viele Beispiele dafür. Oder es ist einfach nicht zu sehr verbreitet.

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

Deine Ausführungen helfen mir ungemein. Dafür vielen Dank :)
So langsam reift in mir die Erkenntnis, dass ich viel zu optimistisch war. Das Dragon sieht für mich auch nicht nach "Ready to use" aus (im Gegensatz zum AVRISP).

Hierzu habe ich dann aber doch noch eine Frage:
Da die MCU nur einen CAN-Controller drauf hat, brauchst Du noch einen CAN-Transceiver. Da kann ich Dir den TJA104x empfehlen, ist bombensicher das Teil. Ist für High-Speed. Für LowSpeed müsste ich nachschauen.
Kann ich die MCU mit den Fähigkeiten einer CANcardXL vergleichen und analog zu den CANcab benötige ich den vor Dir genannten TJA104x (inkl. Zusatzschaltung)?

Danke, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

na dass Du zu optimistisch bist, habe ich Dir ja gleich gesagt. :D

Wieso, der Dragon ist Ready-to-use, einstecken und debuggen. Du brauchst dann halt eben die zwei Kabel, für ISP (6-polig) und JTAG (10-polig). Die Stecker dafür kriegst Du bei Reichelt für npaar Cent und das Kabel selbst kannst ja aus dem alten IDE-Kabel basteln. So habe ich es gemacht.

Ja genau, die MCU ist dann sowas wie unsere CANcardXL ohne Kabel. Dann brauchst Du ja noch die Kabel dazu, wo die Transceiver drin sind, zum Beispiel CANcab251 (opto), 1040, 1050, etc.

Die Zahl in der Bezeichnung (251, 1040, 1050) sagt Dir, welcher Transceiver drin ist PCA82C251, TJA1040, TJA1050 und so weiter.

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

ich werde mir jetzt doch noch das Dragon anschaffen. Dass ich mir die dazu passenden Kabel basteln muss ist halt eine weitere potentielle Fehlerquelle, die ich in meinem jetztigen Stadium gerne ausgeschlossen hätte. Aber wirklich kompliziert ist es ja nicht ;)

Auf dem DVK90CAN1 ist zum Glück schon ein CAN-Transceiver drauf (Atmel ata6660). Wenigstens ein Problem weniger...
Ich denke dass ich bald mit weiteren Fragen aufschlage, wenn ich den Dragon in Betrieb nehme.

Grüsse, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

achwas, die Kabel zu basteln ist echt ein Scherz. Einfach 1:1 verbinden und fertig, ist überhaupt nicht schwer.

Ja, der Transceiver ist schon drauf, habe ich gestern gar nicht gesehen. Na dann viel Spaß und gutes Gelingen.

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

die Inbetriebnahme des Dragon ging erstaulicherweise recht einfach :)
Nachdem ich mein erstes kleines C-Projekt geflasht hatte trat auf jeden Fall eine Veränderung ein. Mein Freunde ist kaum in Worte zu fassen :cool:

Der zweite Schritte hätte Compilieren und Flashen des im Eva-Board Manual abgedruckten Basis Test Programms sein sollen. Das Bsp ist in Assembler, doch leider wird bei mir in AtmelStudio6 bei einem Assembler Projekt kein *.elf File erzeugt (nur ein *.hex). Aber beim flashen mit AtmelStudio6 muss zwingend ein *.elf File angegeben werden...

Ein bisschen bei den Optionen gesucht und im Internet gestübert hat mich nicht weitergebracht.
Es gehört zwar nicht mehr in diesen Bereich, aber wenn Du adhoc eine mögliche Lösung hättest ;)

Ansonsten bedanke ich mich nochmal ganz herzlich für die Hilfe bei meinen ersten Schritten :)

Grüsse, Jens
 

Hemi

Aktives Mitglied
Premium Benutzer
30 Nov 2008
1,079
17
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hi Jens,

wenn Du im AS auf "Device Programming" (das ist oben in der Leiste eine IC mit dem Blitz drauf) gehst, dann Deinen Programmer und Device auswählst, kannst Du unter Memories ein File zum Flashen auswählen, es ist dann ein HEX oder ELF File.

Damit müsste es gehen, probier es aus.

Ja, der Dragon ist schon ein putziges Ding, einstecken, Treiber installieren und tut.

Grüße
Heinrich
 

AngehenderAmateur

Neues Mitglied
27 Dez 2012
7
0
0
Sprachen
Hi Heinrich,

kaum macht man's richtig ... Ich hatte immer nur bei "Production File" geschaut :banghead:

Mit dem Assembler *.hex scheint etwas nicht zu stimmen, denn Funktion kann ich keine erkennen. Ist mir aber auch ziemlich latte, da mein C-Projekt ja prima funktioniert.

Grüsse, Jens
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)