Atmel ATmega/Arduino Entwicklung allgemeine Fragen

  • Hallo,


    da Atmel ATmega und Arduino in vielen Projekten rund um den VDR immer wieder gerne genommen werden, mache ich hier mal einen Thread auf in dem allgemeine Fragen geklärt werden können.


    Hier erstmal ein paar Links zum Thema:
    Atmel Seite zum ATmega
    AtmelStudio Entwicklungsumgebung
    Debugger AVR Dragon
    Debugger JTAGICE3


    VDR-Projekte:
    VDR-Wakeup
    Arduatmo - Ambilight auf Arduino-Basis


    Der Anfang ist gemacht.


    Tschüß Frank

  • Danke Erstmal,


    Wegen des Dragon Debuggers ein paar Fragen:


    1. Zum Debuggen brauche ich wohl eine JTAG Verbindung zum Flashen die ISP.
    Sowie ich das Verstehe würde JTAG den Port C des Atmel Teilweise Anspruch nehmen.


    2. Kann ich meine alten Projekte unter der Arduino IDE erstellt ohne Änderung des Sourcecodes mit dem AVR Studio Compilieren (und Debuggen), wenn ich die Arduino Lib's mit einlinken lasse.
    Wenn Ja - Was ich dann alles machen muss must du mir noch sagen. Ich spreche jetzt nicht von den Custom Libs sondern erstmal von denen die beim Arduino Standard dabei sind.


    3. Die Arduinos arbeiten normalerweise mit einem Bootloader, jetzt soll die Applikation aber bei 0x0000 Starten - Ich fasse die Fusebits
    ungerne an. IHMO muss man das Bootrst bei den Arduinos umdrehen ?


    Grüße Rudi

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • 1. Zum Debuggen brauche ich wohl eine JTAG Verbindung zum Flashen die ISP.
    Sowie ich das Verstehe würde JTAG den Port C des Atmel Teilweise Anspruch nehmen.

    Über JTAG wird auch programmiert.
    JTAGICE mkII müsste etwa so angeschlossen sein:

    Code
    Pin 1 (TCK)     A3    Black  3
    Pin 2 (GND)     GND   White  6
    Pin 3 (TDO)     A1    Grey   1
    Pin 4 (VTref)   VTref Purple 2
    Pin 5 (TMS)     A2  
    Pin 6 (nSRST)   RESET Green  5
    Pin 7 (Vsupply)       Yellow
    Pin 8 (nTRST)         Orange
    Pin 9 (TDI)     A0    Red    4
    Pin 10 (GND)          Brown


    2. Kann ich meine alten Projekte unter der Arduino IDE erstellt ohne Änderung des Sourcecodes mit dem AVR Studio Compilieren (und Debuggen), wenn ich die Arduino Lib's mit einlinken lasse.
    Wenn Ja - Was ich dann alles machen muss must du mir noch sagen. Ich spreche jetzt nicht von den Custom Libs sondern erstmal von denen die beim Arduino Standard dabei sind.

    Die Arduino Libs lassen sich in das Atmel Studio integrieren. Da gibt es Hilfen und Installer im Internet. Leider habe ich nicht genau dokumentiert, wie ich das gemacht habe. Ich habe da jetzt glaube ich Templates, die ein Arduino Project einrichten. Muss ich bei Gelegenheit mal schauen. Bis übernächste Woche bin ich aber meist unterwegs.


    3. Die Arduinos arbeiten normalerweise mit einem Bootloader, jetzt soll die Applikation aber bei 0x0000 Starten - Ich fasse die Fusebits
    ungerne an. IHMO muss man das Bootrst bei den Arduinos umdrehen ?

    Da musste glaube ich nichts angepasst werden.


    Tschüß Frank

  • Moin,
    Ich habe das hier gefunden.
    Werde es damit versuchen wenn ich Zeit dazu habe.


    Bei Erfolg bestelle ich mir den Dragon.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Hallo,

    Moin

    Was heist hier Moin. Kommst du auch zum HaVUT?


    Ich habe das hier gefunden.
    Werde es damit versuchen wenn ich Zeit dazu habe.

    Ich glaube, dass habe ich auch verwendet.


    Tschüß Frank

  • Servus ;D ,

    Was heist hier Moin. Kommst du auch zum HaVUT?

    Nein, ich komme aus dem tiefen Süden unseres schönen Landes.
    Aber ich habe schon viel mit den Leuten gepostet, das es manchmal schon bei mir durchkommt.
    Ist ja auch sehr praktisch die sagen dies zu jeder Tageszeit.



    Mit dem Atmelstudio scheint es schon mal teilweise zu klappen, ich kann das "Hello World" template compilieren.
    Voreingestellt ist der ATmega 328, damit klappt es, wenn ich aber auf meinen ATmega 2560 wechsle und compilieren will kommt das:

    Zitat

    Error 1 skipping incompatible C:\Users\Mein\Documents\Atmel Studio\Libs\ArduinoCore\libcore.a when searching for -lcore 1 1 ArduinoSketch3
    Error 2 cannot find -lcore 1 1 ArduinoSketch3
    Error 3 ld returned 1 exit status collect2.exe 0 0 ArduinoSketch3

    Nachtrag:
    Scheint ein bekanntes Problem zu sein:

    Code
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-g++.exe" -o ArduinoSketch3.elf  assemblySupport.o global.o main.o support.o   -Wl,-Map="ArduinoSketch3.map" -Wl,--start-group -Wl,-lcore -Wl,-lm  -Wl,--end-group -Wl,-L"C:\Users\Mein\Documents\Atmel Studio\Libs\ArduinoCore" -Wl,-L"C:\Users\Mein\Documents\Atmel Studio\Libs\Arduino" -Wl,-L"C:\Users\Mein\Documents\Atmel Studio\Libs\Public"  -Wl,--gc-sections -mrelax -mmcu=atmega2560 
    skipping incompatible C:\Users\Mein\Documents\Atmel Studio\Libs\ArduinoCore\libcore.a when searching for -lcorecannot find -lcorecollect2.exe(0,0): ld returned 1 exit status
    		make: *** [ArduinoSketch3.elf] Error 1


    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

    Einmal editiert, zuletzt von rudirabbit ()

  • Hallo,


    ich wundere mich zwar über das Thema in diesem Forum hier, aber egal, vielleicht könnt ihr mir eine Frage beantworten.
    Ich bastele mit dem ATmega 644 für eine Heizungssteuerung herum. Den Controller programmiere ich bisher mit PonyProg über RS232 und das ISP Interface. Das geht mit einem 64-Bit System nicht mehr und ich muss jedes Mal einen Alt-PC mit XP bemühen, auf Dauer langsam und lästig. Daher bin ich auf der Suche nach einem Prommer mit USB-Anschluss und Software lauffähig unter Windows 8.


    Nun meine Frage:
    Programmieren / Debuggen kann man mit dem AVR Dragon über das JTAG-Interface auf Port C, welches bei meiner Hardware leider belegt ist.
    Ist das Programmieren mit dem AVR Dragon auch über das ISP Interface möglich? Mir ist der Unterschied zwischen SPI und ISP in diesem Zusammenhang nicht klar. In der Hilfe vom Atmel Studio ist die Rede von "SPI(ISP)".

    Gruß Norbert

  • Unter 64bit Windows gibts doch den Kopatibilitätsmodus. Geht damit nicht? Ansonsten kann ich nicht weiter helfen, hab gerade erst begonnen, mich mit dem Theme zu beschäftigen.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Leider konnte ich PonyProg (v207c, letzte mir bekannte Version) weder damals unter Win7 64-bit noch jetzt unter Win8 im Kompatibilitätsmodus installieren.


    In einer virtuellen Umgebung (XP-Mode oder Hyper-V) kann man zwar PonyProg starten, aber man bekommt den seriellen Port nicht wirklich heraus. Ich habe bisher nur einen selbstgebauten Einfachprommer aus einigen Widerständen und einem Transistor für COM => ISP.


    Hat jemand Erfahrungen mit AVRISP oder AVR Dragon aus dem Hause Atmel?

  • Hi,
    Vorsichtig würde ich behaupten, dass man mit dem AVR Dragon via ISP flashen kann, aber halt nicht debuggen.
    Aber mal warten was Frank dazu sagt.


    Bin ja auch an dem Thema dran, kann aber meinen Arduino Code für den 2560 nicht im Studio Compilern.
    Der Code für den UNO (Atmega 328 ) geht seltsamerweise.



    Hast du schon überlegt mit einem Bootloader zu arbeiten ? (Das ganze sollte dann auch unter Win 8 funktionieren, mit dem passendem Monitorprogramm)
    Ich finde die Bootloader Technik ist bei den Atmels schon gut gemacht
    Der User Code fängt auch dort ab 0x0000 an, der Bootloader liegt in einem seperaten Bereich des Atmel.


    Was zuerst ausgeführt werden soll wird über die Fusebits geregelt..


    Ich bastele mit dem ATmega 644 für eine Heizungssteuerung herum

    Genau dies hatte ich auch vor, habe mich wohl etwas übernommen.
    Denn ich wollte einen Atmel im Heizungskeller (Nebengebäude) der die Heizung steuert und via 433 MHZ Funkstecke zum Wohnhaus Daten sendet und umgekehrt.


    Leider schaut es mit der Reichweite der billig 433 MHZ Module nicht so gut aus, ich schaffe ca. 15 Meter dann ist Ende.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • ich wundere mich zwar über das Thema in diesem Forum hier

    VDR Portal » VDR Hardware » Allgemein Alles was sonst noch im oder mit VDR verwendet werden kann
    Dazu gehören auch ATmega und Arduino.


    Programmieren / Debuggen kann man mit dem AVR Dragon über das JTAG-Interface auf Port C, welches bei meiner Hardware leider belegt ist.
    Ist das Programmieren mit dem AVR Dragon auch über das ISP Interface möglich? Mir ist der Unterschied zwischen SPI und ISP in diesem Zusammenhang nicht klar. In der Hilfe vom Atmel Studio ist die Rede von "SPI(ISP)".

    ISP = In System Programmable
    SPI = Serial Peripheral Interface
    JTAG = Joint Test Action Group


    ISP ist eine Möglichkeit Chips direkt in der Schaltung zu programmieren. Dazu kann SPI mit MOSI, MISO, SCK oder JTAG mit TCK, TDO, TMS, TDI oder Debugwire (RESET) benutzt werden.


    In einer virtuellen Umgebung (XP-Mode oder Hyper-V) kann man zwar PonyProg starten, aber man bekommt den seriellen Port nicht wirklich heraus. Ich habe bisher nur einen selbstgebauten Einfachprommer aus einigen Widerständen und einem Transistor für COM => ISP.

    Diese einfachen Adapter benutzen den seriellen oder parallelen Port nur um auf einzelnen Pins high und low zu klimpern. Das ist sehr Timing kritisch und funktioniert auch nicht mit USB-Adaptern oder ähnlichem. Bootloader benutzen die serielle Schnittstelle ganz "normal" und funktionieren daher auch über USB-Adapter. Der Bootloader muss aber erstmal über ISP (SPI oder JTAG) drauf gespielt worden sein.


    Zum Debuggen braucht man aber zwingend die JTAG Pins. Bei einigen ATmegas (48, 88, 168, 328 ) reicht auch RESET (Debugwire).


    Tschüß Frank

  • Der Bootloader muss aber erstmal über ISP (SPI oder JTAG) drauf gespielt worden sein.

    Den Bootloader kann er mit PonyProg und seinem Com->ISP Adapter auf den Atmel bringen.
    Zumindest wird das hier so beschrieben.


    Der Link ist nur als Beispiel zu sehen, welcher Bootloader am besten passt müsste man googlen.
    Evtl. diesen


    IHMO wäre die Bootloaderlösung eine kostengünstige Methode den Atmel unter Win8 komfortabel zu flashen.

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber


  • avrdude müßte den ponyprog adapter unterstützen. Probier den adapter doch mal damit. avrdude ist bei der arduino SW dabei und läuft auch unter w7/64, eigentlich müßte das funzen.

  • IHMO wäre die Bootloaderlösung eine kostengünstige Methode den Atmel unter Win8 komfortabel zu flashen.

    Arduinos werden mit installiertem Bootloader ausgeliefert. Der sollte auch in den Arduino Templates unter Atmel Studio erhalten bleiben. Wenn man seine programmierten Erzeugnisse also dann weitergibt sollte es für Arduino Nutzer also kein Problem sein das Programm im Ardunio einzuspielen.


    Ich habe mich mal schlau gemacht, mit welchem Programm man HEX-Files über den Bootloader in den Arduino bekommt.
    Mit AVRdude lässt sich es machen. Bei 32u4 muss man vorher den Bootloader mit Resetbutton oder Öffnen der seriellen Schnittstelle mit 1200 Baud aktivieren.
    Hier ist es beschrieben: http://nicholaskell.wordpress.…rdo-upload-from-makefile/


    Tschüß Frank

  • Mit einem tool namens arduino-uploader zum Beispiel, ich kenne aber nur eine ältere Version davon.. http://www.arduinodev.com/arduino-uploader/


    Ich hab auch mal selbst ein Programm mit Lazarus gebaut, was Intel hex files via arduino bootlader in einen arduino lädt. Je nach aarduino und chip muss dass ein wenig unterschiedlich gemacht werden, aber das Prinzip ist gut beschrieben:


    virtuellen com öffnen, baudrate einstellen (je nach arduino, meist 1200Bd) und com wieder schließen. Danach innerhalb eines bestimmten Zeitfensters avrdude starten und das hexfile hochladen.

  • Hallo,
    Prinzipiell sollten auch andere !Arduino Bootloader funktionieren, wenn man noch keinen Bootloader drauf kann wohl nach eigenem Gusto vorgehen.
    Oder eben den Arduino Loader nehmen.


    Mit dem Atmel Studio bin ich nun schon etwas weiter, ich kann Arduino Code für den 2560 Compilern.
    Das ganze ist ein bisschen umständlich, da man die core.a die der Arduino Compiler für die CPU erzeugt hat in die Ordner des Atmel Studios kopieren muss.
    Für jede Cpu gibt es wohl eine eigene core.a.


    In meinen Projekten verwende ich aber fremde Lib's (z.b Virtualwire) , die in das Studio integriert werden müssen.
    Bei der Arduino IDE reicht es aus wenn diese in dem Lib Verzeichnis liegen, beim Atmel Studio nicht ganz.


    Was man machen muss steht hier, nur mache ich offensichtlich was falsch....

    Zitat

    6. Open Atmel Studio, and open the library solution in {My Documents}/\Atmel Studio\ArduinoLibrariesSource


    7. Compile each library, and copy the .a output file to the {My Documents}\Atmel Studio\Libs\Arduino directory.

    Man muss also aus jeder Lib ein *.a File erzeugen, das klappt bei mir aber nicht. :O

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Mal ne Frage hier. Wer kann mir denn Platinen layouten/entwerfen? Ich hab da leider keine grosse Anhnung von. Gibts da ne Firma die sowas macht?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Mal ne Frage hier. Wer kann mir denn Platinen layouten/entwerfen?

    Schau dir mal Eagle an, wenn die Free Version ausreicht....

    VDR 1 (SD) : ASRock A330 GC, 1 GB RAM, TT- FF Karte rev. 2.3, 7'' TFT, Lirc X10 - Selbstbau Gehäuse - Suse 11.3 (64) vdr-1.7.10 diverse Plugins
    VDR 2 (HD) : MSI G41M-P25, 2 GB RAM, E6700 2x3.20GHz, Gainward GT220, 2TB HD, Lirc X10, TT S2-3600 USB, TT S2-1600, - Suse 11.3 (64) NvidiaTreiber 260.19 vdr-1.7.18 - xineliboutplugin 1.0.90 cvs, xine-lib 1.1.90 , s2-liplianin DVB Treiber

  • Hab ich schon, aber ohne Basiswissen kann ich da lange reinschauen. ;)

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Mal ne Frage hier. Wer kann mir denn Platinen layouten/entwerfen?


    Mit Fritzing kann man in der "Steckplatinen-Ansicht" Schaltungen entwerfen oder nachbauen und anschliessend die Platine
    anzeigen bzw. routen lassen. Auch die (Arduino) Bauteil-Bibliotheken sind nützlich.

    Hab ich schon, aber ohne Basiswissen kann ich da lange reinschauen. ;)


    Das gibt es hier oder hier zum Beispiel.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!