Tutorial Arduino programmieren,

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Was heißt das eigentlich genau? Beim STM32 z.b. muss man alles erst einschalten beim AVR nicht(soweit weit ich weiß).
Da bin ich auch mal angestanden. Der STM32 ist bei mir momentan auf Eis gelegt.

Der AVR ist um einiges einfacher als der STM32.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

pluto hat geschrieben:Nicht schlecht.... Ein guter Anfang.... wenn man jetzt noch den USB Port auswählen könnte und den AVR-Typ?

Ich bin ein Schritt weiter gekommen, wen man jetzt AVR-Project anwählt, kommt ein Dialog mit einer ComboBox, bei der man den USB-Port wählen kann.

Anschliesssend kommt folgende Vorlage und die Zielplattform ist auf Embedded, avr, AVR5 eingestellt.

Code: Alles auswählen

program Project1;
 
{$H-}
{$O-}
 
uses
  intrinsics;
 
begin
  // Setup
  repeat
    // Loop;
  until 1 = 2;
end;
 
end.

Jetzt müsste es nur noch die Compiler-Kommandos richtig einstellen.
Dateianhänge
Bildschirmfoto vom 2018-09-01 21-36-20.png
Bildschirmfoto vom 2018-09-01 21-36-20.png (8.07 KiB) 2960 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tutorial Arduino programmieren,

Beitrag von pluto »

Da bin ich auch mal angestanden. Der STM32 ist bei mir momentan auf Eis gelegt.

Ich noch nicht ganz, ich versuche es jetzt mit Rust und STM32.... Aber das mache ich nur zwischendurch... ich werde mich aufjedenfall weiter mit AVR und Lazarus befassen.

Einer hier im Verein hat einige Optimierungsideen für den TWI Unit.... die werde ich mal in meiner unit einbringen und testen... um doppelten Code zu vermeiden

Anschliesssend kommt folgende Vorlage und die Zielplattform ist auf Embedded, avr, AVR5 eingestellt.

Ist das Dialog immer Sichtbar? Oder nur beim erstellen von einem Projekt? Weil unter Linux kann sich der USB Port ändern... Passiert mir recht häufig bei der Arduino IDE...
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Nur beim erstellen des Projects.
Etwas andwres dürfte schwierig werden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

Ich würde an der Stelle "Programm brennen" erstmal nicht rumoptimieren. Dazu gibt es an der Stelle zu viele Optionen:

- verschiedene ATmega und ATtinys
- verschiedene Programmieradapter, USB, seriell, parallel, Gpios

Ich trenne "Programmieren und Kompilieren" von "Brennen". Gebrannt wird mit AVRdude betrieben über den AVR Burn-O-Mat. Oder wenn ich Lockbits setzen muss auch über das AVR Studio 4, weil der Burn-O-Mat keine Lockbits kann. Dafür kann ich aber auch das Programm per FTP auf den Raspi schieben und dann von dort mit dem Burn-O-Mat brennen, dazu kann der AVR und der Raspi woanders im Haus stehen.

Den Arduino über den USB Bootloader direkt brennen ist ein Spezialfall.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Der nächste Schritt ist getan, man kann den Pfad zu averdude einstellen.
Dies ist dann praktisch, wen man averdude von Arduino verwendet, und dies nicht immer am gleichen Ort ist.
Nur die Frage, wie nimmt man dies in das AVR-Project auf, beim erstellen des Project ist dies einfach, aber bei späteren Laden ?

Die Compiler-Kommandos sin Project bezogen und nicht auf die IDE.
Dateianhänge
Bildschirmfoto vom 2018-09-02 18-31-15.png
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tutorial Arduino programmieren,

Beitrag von pluto »

Schön wäre eine zwei Dialoge-Lösung.

Dialog 1: Beim erstellen wird ein Tempalte angelegt.
Dialog 2: Ist immer Sichtbar
- Hier kann der USB-Port ausgewählt werden
- Hier kann der AVR-Typ ausgewählt werden
- Hier kann der Programmer ausgewählt werden.
- Hier kann ein Serieller Monitor geöffnet werden.

Unterstützt die IDE Makros in den Einstellungen?
Die Idee ist: In der Unit könnten Makros hinzugefügt werden. Dieses werden dann "genommen".
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Dialog 2: Ist immer Sichtbar
Ob man so einen Dialog einbauen kann, ist fraglich, aber die Idee wäre schon gut. Wen die geht, wäre vielleicht sogar eine direkte Einbindung eines Serial-Monitor möglich.

Aber wie du schon gemerkt hast, bin ich in der Bearbeitungsphase der IDE.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

Eigentlich sollte doch unter Linux der Pfad zu AVRdude keine Rolle spielen, da in /bin.

Wichtiger sind die Einstellungen für AVRdude, und den Stiefel würd ich mir erstmal nicht anziehen wollen. Schau Dir mal bei AVR Burn-O-Mat an, was man da alles einstellen und setzen kann, von Programmertyp, Schnittstelle, Geschwindigkeit über Controller, Fuses, Brown-Out Einstellungen, Quarzeinstellungen...

Also entweder Du baust eine Minimallösung nur für Arduino, oder das wird ein eigenes Projekt.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tutorial Arduino programmieren,

Beitrag von pluto »

Schau Dir mal bei AVR Burn-O-Mat an, was man da alles einstellen und setzen kann, von Programmertyp, Schnittstelle, Geschwindigkeit über Controller, Fuses, Brown-Out Einstellungen, Quarzeinstellungen...

Ich denke, übertreiben sollten wir erst am Anfang auch nicht, weniger ist mehr....

Also entweder Du baust eine Minimallösung nur für Arduino, oder das wird ein eigenes Projekt.

Genau das ist ja nicht das "Ziel"...

Ich denke, so ein Dialog wäre genau das Richtige.... Die frage ist halt, wie die IDE darauf zugreifen kann.
MFG
Michael Springwald

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Wichtiger sind die Einstellungen für AVRdude, und den Stiefel würd ich mir erstmal nicht anziehen wollen. Schau Dir mal bei AVR Burn-O-Mat an, was man da alles einstellen und setzen kann, von Programmertyp, Schnittstelle, Geschwindigkeit über Controller, Fuses, Brown-Out Einstellungen, Quarzeinstellungen.

Mein Ziel:
Man sollte über Datei neu --> Project ein AVR-Project erstellen können.
Dabei ist wichtig, das man den Programmer und den COM-Port auswählen. Dies sollte man auch während der Laufzeit bequem umstellen können.

Über "Werzeuge Einstelllungen" sollte man averdude auswählen können, dies betrifft vor allem die jenigen die averdude von Arduino verweden.
Über "Project --> Optionen" sollte Com-Port, etc. wählbar sein.

Fuses usw. ist nicht geplant, dafür gibt es andere Tools.

Dialog 2: Ist immer Sichtbar
Dies scheint möglich zu sein. "Ansicht --> Debuggfesnter --> Serial Monitor", da kann man ein grünes Fenster öffnen und währen das Fenster offen ist, kann man normal mit der IDE weiter arbeiten.


Wer will kann die Package mal ausprobieren. Am besten in einer IDE, in welche es egal ist wen etwas nachher nicht mehr geht. Wie gesagt e ist noch nicht fertig.

https://github.com/sechshelme/AVR-Lazar ... VR_Package

Eines noch vor weg. Die Pakage ersetzt nicht das erstellen des AVR-Cross-Compilers.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

Mathias hat geschrieben:Man sollte über Datei neu --> Project ein AVR-Project erstellen können.
Dabei ist wichtig, das man den Programmer und den COM-Port auswählen. Dies sollte man auch während der Laufzeit bequem umstellen können.


Sorry, Programm schreiben und kompilieren und Programm in AVR brennen sind durchaus zwei voneinander trennbare Vorgänge. Du bist das vielleicht vom Arduino so gewohnt, aber zum Beispiel brenne ich mitunter Programme, die ich vor einigen Jahren geschrieben habe, und ich lade auch nicht nach jedem Kompilieren hoch, manchmal will ich einfach nur wissen, ob es kompiliert oder ich schaue mir an, was der Compiler für einen Code erzeugt.

Mathias hat geschrieben:Fuses usw. ist nicht geplant, dafür gibt es andere Tools.


Bei so ziemlich jedem Nicht-Arduino AVR ist das Setzen des Fuses eine der ersten Handlungen, bevor man ein Programm brennt. Taktteiler umstellen, Takt einstellen oder externen Quarz einschalten, Brown-Out setzen, bei einigen Jtag ausschalten...

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tutorial Arduino programmieren,

Beitrag von pluto »

Sorry, Programm schreiben und kompilieren und Programm in AVR brennen sind durchaus zwei voneinander trennbare Vorgänge. Du bist das vielleicht vom Arduino so gewohnt, aber zum Beispiel brenne ich mitunter Programme, die ich vor einigen Jahren geschrieben habe, und ich lade auch nicht nach jedem Kompilieren hoch, manchmal will ich einfach nur wissen, ob es kompiliert oder ich schaue mir an, was der Compiler für einen Code erzeugt.

Richtig, dass geht mit der Arduino IDE ebenfalls z.b. kann man strg+u drücken, dann wird es kompiliert und hochgeladen oder man drück strg+r dann wird es nur kompiliert. Feine Sache...

Ich finde, wir sollten das so einfach wie möglich machen, keiner möchte ständig mit drei oder vier Programmen "Gleichzeitig" Arbeiten:
1. IDE
2. Der Kompiler(hier ist das Linken und soweiter schon drin)
3. Das Programm zum Hochladen

Bei so ziemlich jedem Nicht-Arduino AVR ist das Setzen des Fuses eine der ersten Handlungen, bevor man ein Programm brennt. Taktteiler umstellen, Takt einstellen oder externen Quarz einschalten, Brown-Out setzen, bei einigen Jtag ausschalten...

Das ist richtig, aber es gibt Default Einstellungen. Die Arduino IDE nutzt diese die in den bord.txt drin stehen. Ich habe sie mir mal ausgeben lassen.
Aber Zur Zeit betrachten wir ja sowieso nur zwei AVR Typen z.b. den atMega328 und den atTiny, dafür kann man Standard Werte nehmen.

Ich finde, es geht gar nicht so um die Tiefe der Details, dass man möglich viel angeben muss. Ich habe mir z.b. im Internet ein Fuses Rechner raus gesucht um einige Arduino Nanos zu "Retten", die nicht nicht über USB Bespielen konnte. Hat sogar geklappt. Es reicht, wenn man einfach die Fuses erst mal direkt angeben kann.
(finde ich auf jedenfall)... das Ufert sonst ganz schnell aus.
Wenn noch mehr MC dazu kommen sollten.
MFG
Michael Springwald

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

pluto hat geschrieben:Aber Zur Zeit betrachten wir ja sowieso nur zwei AVR Typen z.b. den atMega328 und den atTiny, dafür kann man Standard Werte nehmen.


Ich will Dich ja nicht deprimieren, aber es gibt einige Dutzend ATtiny mit unterschiedlichen Konfigurationen.

Der ATmega wird mit 8MHz internem Takt ausgeliefert, teilt auf 1MHz runter. Im Arduino Nano läuft er mit 16MHz externem Quarz. Wenn Du da die Fuses für CLKDIV8 und Quarz nicht umschaltest, wunderst Du Dich, warum Dein Controller für 1 Sekunde 16 Sekunden braucht.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tutorial Arduino programmieren,

Beitrag von pluto »

Ich will Dich ja nicht deprimieren, aber es gibt einige Dutzend ATtiny mit unterschiedlichen Konfigurationen.

Das weiß ich. Darum habe ich ja auch geschrieben: Zur Zeit, die anderen atTiny's haben aber in der regel noch weniger Flash....
Es gibt auch viele atMega328.

Der ATmega wird mit 8MHz internem Takt ausgeliefert, teilt auf 1MHz runter.

Beim atTiny weiß ich, das der intern mit 1 MHZ läuft ohne Bootloader und mit läuft er da.. z.b. mit 8 mhz.

Im Arduino Nano läuft er mit 16MHz externem Quarz. Wenn Du da die Fuses für CLKDIV8 und Quarz nicht umschaltest, wunderst Du Dich, warum Dein Controller für 1 Sekunde 16 Sekunden braucht.

Das ist schon klar. Und nun kommen noch andere Plattformen wie der ESP oder der STM und nun? Vom ESP gibt es auch verschiedene Varianten. Den NodeMCU, den Wemos D1mini, meistens laufen sie aber auf ein ESP8266-Mod-E dann gibt es noch den ESP32..... vom STM32 gibt es sehr, sehr viele Varianten....

Wenn wir sie aber alle berücksichtigen, wird es NIE was...Wir sollten erst mal die "wichtigsten" rauspicken zum Beispiel, die die bereits unterstützt werden, wie der atMega328 und der atTiny85-20 und weitere bei "bedarf" hinzufügen.

Arduino hat dafür ein "Board.txt"... Das Thema ist recht komplex...
MFG
Michael Springwald

Antworten