- 3D-Druck Einstieg und Tipps         
Seite 40 von 41 ErsteErste ... 3038394041 LetzteLetzte
Ergebnis 391 bis 400 von 405

Thema: Alternative zu Flashnnn.exe

  1. #391
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54

    Eierlegendewollmilchsau trifft auf Arduino Uno R3

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    der letzte Beitrag in diesem Thread ist nun schon fast zwei Jahre her, da wird es Zeit...

    Für mein neues Projekt habe ich mir einen Arduino Uno R3 zugelegt. Den Arduino-Editor finde ich nicht so dolle und habe deshalb probiert, den Arduino mit der Eierlegendenwollmilchsau zu programmieren. Das ist mir z.T. auch gelungen, aber ich bin daran gescheitert, die mitgelieferten Bibliotheken des Arduino einzubinden. Dazu war es mir wichtig, die Verzeichnisstruktur der Arduino-Software (incl. Compiler) unverändert zu lassen. Auf diesem Wege könnte ich die originale IDE weiterhin nutzen und ohne Probleme auch Updates einspielen.

    Hat sich jemand daran schon probiert?

    Ulli
    Geändert von ukuchel (23.04.2013 um 21:15 Uhr)

  2. #392
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    53
    Beiträge
    396
    Hi Ulli,

    die Libraries kannst Du über den Makefile einbinden.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Makefile.png
Hits:	8
Größe:	59,3 KB
ID:	25218

    Gruss,
    Osser

  3. #393
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54
    Hallo Osser,
    das ging ja schnell.

    Ich habe bislang probiert, die Verzeichnisse der Bibliotheken im makefile einzutragen. Leider hat das nicht funktioniert. Auch das Einbinden des "wichtigsten" Arduino header files (Arduino.h) direkt ins Programm hat nicht funktioniert.

    Die originale IDE vom Arduino geht einen etwas anderen Weg und transformiert zunächst den Programmcode automatisch im Hintergrund:

    http://arduino.cc/en/Hacking/BuildProcess

    Und diese Transformation habe ich noch nicht auf die Eierlegendewollmilchsau anpassen können.

    Gruss,
    Ulli

  4. #394
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    53
    Beiträge
    396
    Hi Ulli,

    poste bitte ein Zip-Archiv mit einem Library incl. Header Files.
    Das was ich bei Googlitsch gefunden habe ist alles C++.

    Gruss,
    Osser

  5. #395
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54
    Hallo Osser,

    ich habe jetzt ein wenig weiter mit meinen Arduino Uno R3 Board rumprobiert:

    1.
    Prinzipell ist es ziemlich einfach, die Eierlegende Wollmilchsau zum Programmieren des Arduino einzusetzen, solange der Code in C geschrieben wird und die Hardware mit Hilfe eigener Bibliotheken angesteuert wird.
    Im Makefile muss lediglich MCU=atmega328p gesetzt werden. Dann klappt schon mal das Compilieren. Das Flashen erfolgt dann mit avrdude und der Kommandozeile -v -p atmega328p -c arduino -P com17 -D -U flash:w:"%AF_HEXFILE%":a. Die Version von avrdude sollte aktuell sein, sonst enthält die Datei avrdude.conf nicht den Arduino Treiber. Den richtigen Com-Port erfährt man im Hardware-Manager sobald man das Arduino-Bord das erste Mal in Betrieb nimmt und den Treiber installiert hat.

    2.
    Unter dem Stichwort "Cduino" kommt man über Google auf eine Seite zum gleichnamigen Projekt. Dort hat sich der Autor die Mühe gemacht, einige Bibliotheken in reinen C-Code zu übersetzen.

    3.
    Mein Ziel ist es aber, die Bibliotheken und die Compilerversion direkt aus dem Ordner, in dem sich die komplette und unveränderte Arduino-Installation befindet, zu nutzen: http://arduino.cc/en/Main/Software. Den Arduino-Ordner habe ich als Unterordner zur Eierlegenden Wollmilchsau angelegt, um die Pfadangaben möglicht einfach zu halten. Die Bibliotheken befinden sich dort "einige Etagen tiefer" im Ordner cores.
    Einen Ansatz für ein neues makefile habe ich unter: http://playground.arduino.cc/Learning/CommandLine gefunden. Am Anfang des makefile findet sich eine ausführliche Anleitung. Leider ist es mir trotzdem noch nicht gelungen, das von mir gewählte Testprogramm zu compilieren.

    //Testprogramm
    // Blink: Turns on an LED on for one second, then off for one second...

    #include <Arduino.h> //statt WProgram.h

    // Pin 13 has an LED connected on most Arduino boards.
    int led = 13; // give it a name:

    // the setup routine runs once when you press reset:
    void setup()
    {
    pinMode(led, OUTPUT); // initialize the digital pin as an output.
    }

    // the loop routine runs over and over again forever:
    void loop()
    {
    digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1000); // wait for a second
    digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }
    Ich werde es weiter probieren.

    Gruss
    Ulli
    Geändert von ukuchel (27.05.2013 um 22:11 Uhr)

  6. #396
    Erfahrener Benutzer Begeisterter Techniker Avatar von Osser
    Registriert seit
    31.10.2006
    Ort
    Köln
    Alter
    53
    Beiträge
    396
    Hi Ulli,

    also grundsätzlich startet mein Proggi zum Compilieren das Kommandoskript make_all.cmd

    Zum Testen solltest Du im Projektverzeichnis eine Konsole öffnen (cmd.exe) und dann folgendes ausführen:
    set AF_AVRDIR= <pfad zu AVR, also z.B. c:\WinAVR-20100110>
    make_all.cmd


    Dann kannst Du die Datei make_all.cmd so lange anpassen bis das Projekt sauber compiliert.
    Den Inhalt der Datei make_all.cmd fügst Du dann in Asuroflash Options/C++ configuration im Tab Make all ein.
    Ab dem Zeitpunkt benutzt Asuroflash genau diese Einstellungen zum Compilieren.

    Viel Glück beim Testen.

    Grüße,
    Osser

  7. #397
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54

    Mit dem Kopf durch die Wand ...

    Hallo Osser,
    um überhaupt erst man ein Erfolgserlebnis zu bekommen, habe ich Deinen Ratschlag befolgt und bin dabei ganz einfach mit dem Kopf durch die Wand.
    Ich habe mir mein Beispielprogramm:

    // Blink: Turns on an LED on for one second, then off for one second...

    # include "Arduino.h"

    // Pin 13 has an LED connected on most Arduino boards.
    int led = 13; // give it a name:

    // the setup routine runs once when you press reset:
    void setup()
    {
    pinMode(led, OUTPUT); // initialize the digital pin as an output.
    }

    // the loop routine runs over and over again forever:
    void loop()
    {
    digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1000); // wait for a second
    digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }
    mit der original Arduino-IDE 1.0 compilieren lassen. Die Compilermeldungen habe ich ganz einfach in den pn-Editor kopiert, die entsprechenden Befehle extrahiert, den Rest gelöscht und die AsuroFlash-Variablen eingefügt. Herausgekommen ist folgendes:

    @set path=%AF_PRGDIR%\Arduino\hardware\tools\avr\bin\;% path%
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_PRJDIR%\%AF_SOURCE_FILES% -o%AF_PRJDIR%\%AF_SOURCE_FILES%.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\WInterrupts.c -o%AF_PRJDIR%\WInterrupts.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring.c -o%AF_PRJDIR%\wiring.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_analog.c -o%AF_PRJDIR%\wiring_analog.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_digital.c -o%AF_PRJDIR%\wiring_digital.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_pulse.c -o%AF_PRJDIR%\wiring_pulse.c.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_PRJDIR%\%AF_SOURCE_FILES% -o%AF_PRJDIR%\%AF_SOURCE_FILES%.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\WInterrupts.c -o%AF_PRJDIR%\WInterrupts.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring.c -o%AF_PRJDIR%\wiring.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_analog.c -o%AF_PRJDIR%\wiring_analog.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_digital.c -o%AF_PRJDIR%\wiring_digital.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_pulse.c -o%AF_PRJDIR%\wiring_pulse.c.o
    avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\wiring_shift.c -o%AF_PRJDIR%\wiring_shift.c.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\CDC.cpp -o%AF_PRJDIR%\CDC.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\HID.cpp -o%AF_PRJDIR%\HID.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\HardwareSerial.cpp -o%AF_PRJDIR%\HardwareSerial.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\IPAddress.cpp -o%AF_PRJDIR%\IPAddress.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\Print.cpp -o%AF_PRJDIR%\Print.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\Stream.cpp -o%AF_PRJDIR%\Stream.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\Tone.cpp -o%AF_PRJDIR%\Tone.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\USBCore.cpp -o%AF_PRJDIR%\USBCore.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\WMath.cpp -o%AF_PRJDIR%\WMath.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\WString.cpp -o%AF_PRJDIR%\WString.cpp.o
    avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I%AF_ARDCORES% -I%AF_ARDTYPES% %AF_ARDCORES%\main.cpp -o%AF_PRJDIR%\main.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\WInterrupts.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\wiring.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\wiring_analog.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\wiring_digital.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\wiring_pulse.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\wiring_shift.c.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\CDC.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\HID.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\HardwareSerial.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\IPAddress.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\Print.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\Stream.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\Tone.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\USBCore.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\WMath.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\WString.cpp.o
    avr-ar rcs %AF_PRJDIR%\core.a %AF_PRJDIR%\main.cpp.o
    avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o %AF_PRJDIR%\%AF_SOURCE_FILES%.elf %AF_PRJDIR%\%AF_SOURCE_FILES%.o %AF_PRJDIR%\core.a -L%AF_PRJDIR% -lm
    avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 %AF_PRJDIR%\%AF_SOURCE_FILES%.elf %AF_PRJDIR%\%AF_SOURCE_FILES%.eep
    avr-objcopy -O ihex -R .eeprom %AF_PRJDIR%\%AF_SOURCE_FILES%.elf %AF_PRJDIR%\%AF_SOURCE_FILES%.hex
    Eingetragen habe ich diesen Befehlsblock im Config-Menue unter Make all. Ein makefile ist dann nicht mehr notwendig. Das Fenster Make file im Config-Menue bleibt also leer.
    Das Aufräumen erfolgt durch einige wenige Befehle im Fenster Make clean im Config-Menue:

    del %AF_PRJDIR%\*.o
    del %AF_PRJDIR%\*.a
    del %AF_PRJDIR%\*.eep
    del %AF_PRJDIR%\*.elf
    Zusätzlich zu den Standardvariablen zeigt
    AF_ARDCORES in den Arduino-Ordner ..\hardware\arduino\cores\arduino und
    AF_ARDTYPES in den Arduino-Ordner ..\hardware\arduino\variants\standard (Uno-Board!)

    Die Arduino-Installation befindet sich im Verzeichnis von AsuroFlash im Unterordner Arduino.

    Das ganze Verfahren ist sicher alles andere als professionell, aber immerhin ein Ansatz, der schon mal funktioniert.

    An der makefile-Vorlage, die ich weiter oben erwähnt habe, bin ich bislang gescheitert.

    Gruss
    Ulli
    Geändert von ukuchel (05.01.2014 um 17:40 Uhr) Grund: Fehler im Code

  8. #398
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54

    Beitrag ... Fortsetung

    Der nächste Schritt ist das Einbinden von weiteren Bibliotheken, z.B. zum Ansteuern eines LCD-Displays. Dazu habe ich die zunächst beiden Dateien "LiquidCrystal.h" bzw. "LiquidCrystal.cpp" aus der Arduino Installation in mein Projektverzeichnis kopiert und in mein Testprogramm includiert:

    // HalloWelt: ....

    # include "Arduino.h"
    # include "LiquidCrystal.h"
    # include "LiquidCrystal.cpp"


    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

    // the setup routine runs once when you press reset:
    void setup()
    {
    lcd.begin(16, 2); // Set up the LCD's number of columns and rows.
    lcd.print("hello, world!"); // Print a message to the LCD.
    }

    // the loop routine runs over and over again forever:
    void loop()
    { // Note: line 1 is the second row, since counting begins with 0).
    lcd.setCursor(0, 1); // Set the cursor to column 0, line 1.
    lcd.print(millis()/1000); // Print the number of seconds since reset.
    }
    Das Compilieren und das Flashen klappen einwandfrei.

    Die beiden oben genannten Dateien dürfen nicht in das AsuroFlash-Projektverzeichnis aufgenommen werden, da sonst sie Variable AF_SOURCE_FILES mehrere Einträge enthält. Dann funktioniert das Compilieren mit meiner "Kopf durch die Wand"-Methode nicht.

    Gruss
    Ulli
    Geändert von ukuchel (04.06.2013 um 12:51 Uhr)

  9. #399
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54

    Nachtrag: Projekt-Pfadnamen mit Leerzeichen

    Wenn der Pfadname eines Projektes Leerzeichen enthält, ist in make_all und make_clean

    AF_PRJDIR

    komplett (!) durch

    "AF_PRJDIR"

    zu ersetzen. Sonst gibt der Compiler Fehlermeldungen aus.
    Alle anderen Installationsverzeichnisse enthalten bei mir keine Leerzeichen.
    Hier müssen u.U. ebenfalls Anpassungen vorgenommen werden.

    Ulli

  10. #400
    Benutzer Stammmitglied
    Registriert seit
    25.04.2007
    Beiträge
    54
    Hallo Osser,
    ich arbeite zur Zeit "immer noch" oder besser gesagt "mal wieder" mit der Kombination Arduino <> AsuroFlash.
    Dabei nutze ich ziemlich viel das integrierte Terminalprogramm und habe hier einige Verbesserungsvorschläge.
    Wenn Du Zeit und Lust hast, AF ein wenig weiterzuentwickeln, stelle ich meine Vorschläge gerne hier ins Forum.
    Gruss
    Ulli

Seite 40 von 41 ErsteErste ... 3038394041 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress