Ich habe eine Idee, die vom Speicherplatz her eng werden könnte und muß
erstmal gucken, bevor ich Hardware aufbaue, erstmal Nano eingestellt.
Es sind die libraries für OLED, SD-Karte und AD-Wandler notwendig, dazu
etwas eigener Code, um zyklisch Werte zu holen und auf die Karte / in
das Display zu schreiben.
1
#include<SPI.h>
2
#include<Wire.h>
3
#include<Adafruit_GFX.h>
4
#include<Adafruit_SSD1306.h>
5
#include<Adafruit_ADS1015.h>
6
#include<SD.h>
Kompiliere ich mit der IDE 1.7.4, habe ich 93% Speicherbedarf:
Ich sehe natürlich, dass <SPI.h>, <Wire.h> und <SD.h> mit der IDE
mitgeliefert wurden und unterschiedliche Versionen sind, also tausche
ich die testweise mal aus - ändert nichts am Ergebnis, die 1.8.9 will
weniger Platz als die 1.7.4 brauchen.
Die 1.8.9 zeigt mir "runtime.tools.avr-gcc-5.4.0-atmel3.6.1", eine
gleichartige Ausgabe macht die 1.7.4 leider nicht.
Hat jemand schon mal ähnliches beobachtet und eine Erklärung dafür?
---
Des weiteren fällt mir auf, dass ich in der 1.8.9 'old Bootloader'
auswählen kann, aber egal ob alt oder neu, es werden immer "30720 Bytes"
als verfügbar anzeigt. Ist das die Sache mit den falschen Fuses, die IDE
setzt lediglich eine andere Baudrate für den Upload?
Entweder guckt man, wo die Arduino-Umgebung den GCC hinpackt und testet
die Version; du bist ja selbst zumindest bei der neueren 1.8.9
draufgekommen.
Oder du machst es wie ich, der keine Arduino-Umgebung installiert hat
bzw. nur am Handy gerade sitzt und guckt sich die Release-Notes an.
https://www.arduino.cc/en/Main/ReleaseNotes> ARDUINO 1.8.6 2018.08.23> ...> [core]> * Updated toolchain to gcc 5.4.0
Da kannst jetzt auch weiter runterscrollen und die GCC-Version vor der
1.8.6 finden.
Nico W. schrieb:> Entweder guckt man, wo die Arduino-Umgebung den GCC hinpackt> und testet die Version;> du bist ja selbst zumindest bei der neueren 1.8.9 draufgekommen.
Du gehst davon aus, dass der gcc-5.4.0 rund 10% effizienter kompiliert
als der gcc-4.8.3 ?
> guckt sich die Release-Notes an
Meine 1.7.4 stammt aus der Zeit, wo Arduino in zwei Gruppen zerstritten
war (.org / .cc) und kommt in den Release-Notes bei A*.cc nicht vor.
Klar, im Verzeichnis nach 'gcc' gesucht, findet sich die Compilerversion
4.8.3.
Auf jeden Fall muß meine 1.7.4 erhalten bleiben, ältere Geräte mit I2C
wollen unter der 1.8.9 nicht funktionieren, inkompatibles Bastelzeugs.
Manfred schrieb:> Kompiliere ich mit der IDE 1.7.4, habe ich 93%Manfred schrieb:> Kompiliere ich mit der 1.8.9, zeigt die nur 84%:
das ist mir auch schon aufgefallen, bei anderen abweichenden Versionen,
aber egal, das wäre nicht so mein Problem, aber bringt GCC austauschen
was oder klemmts dann in der IDE beim Aufruf?
Manfred schrieb:> Des weiteren fällt mir auf, dass ich in der 1.8.9 'old Bootloader'> auswählen kann
Das scheint mir ein 'bug' oder Sicherheitsdenken zu sein, ich habe alle
meine Nano328p und miniPRO328p im Bootloader angepasst und auch die
Fuses und die board.txt korrigiert.
Bootloder Optiboot, Fuses gesetzt, upload auf 57k6 wieder reduziert, die
115k klemmten zu oft mit wUSB und am USBwebserver.
eine größere als 1.8.9 ist unter win7 x64 immer noch nicht verfügbar,
somit ist nur der raspi up to date, leider aber zu schwach dafür!
Hallo,
die Arduino IDE Version 1.8.12 gibts schon eine Weile und läuft ab Win7.
Seit ein paar Versionen davor hat die IDE den avr-gcc 7.3 standardmäßig
aktiv. Konnte man davor nachinstallieren für die Leute die es wußten
bzw. sich dafür interessiert haben. Das alles geht leider aus der
Release Note nicht hervor. Man könnte denken die IDE hat immer noch den
avr-gcc 5.4 dabei.
Vermutlich kann gcc 7.3 deinen Code besser optimieren. Das muss nicht
immer so sein. Nur wenn du die SD Lib und eine grafische Display Lib
nutzt, kann es eng mit dem RAM werden. Der Compiler kann nur globale und
static lokale Variablen vorab addieren und dir anzeigen. Ich möchte
damit nur sagen, falls es zwar kompiliert aber unerklärlichen Mist zur
Laufzeit macht, könnte es am RAM liegen. Hast ja nur 2kB. Die vollen
32kB Flash kannste auch nicht nutzen, weil der Bootloader noch 2kB
wegnimmt.
Möchte damit weiter sagen, falls du diese Grenzen sprengst, kannste auf
einen "Arduino Mega2560" wechseln oder wenn die Bauform zu groß ist zu
einem "Arduino Nano Every". Letztere hätte den neuen ATmega4809 drauf,
auch mit deutlich mehr RAM/Flash.
Veit D. schrieb:> die Arduino IDE Version 1.8.12 gibts schon eine Weile und läuft ab Win7.
nicht 64 bit!
schrieb ich aber auch!
Joachim B. schrieb:> eine größere als 1.8.9 ist unter win7 x64 immer noch nicht verfügbar,
habe es ja gerade letzte Woche probiert!
Veit D. schrieb:> Vermutlich kann gcc 7.3 deinen Code besser optimieren.
die Unterschiede waren immer marginal und änderten nichts am Ergebnis!
Am schlimmsten ist die Verschwendung der Adafruit LIB für das Display,
am ESP egal, am nano ein no go!
Veit D. schrieb:> falls es zwar kompiliert aber unerklärlichen Mist zur> Laufzeit macht, könnte es am RAM liegen. Hast ja nur 2kB
ich weiss mit der LCD5110-Basic habe ich locker 900 Byte und mehr übrig,
das läuft rund!
Veit D. schrieb:> falls du diese Grenzen sprengst, kannste auf> einen "Arduino Mega2560" wechseln
never, dann würde ich mir die restlichen ATmega1284p aufbauen mit 16KB
SRAM
https://www.mikrocontroller.net/attachment/244383/m1284p_m328p.jpghttps://www.mikrocontroller.net/attachment/240970/strafarbeit_web.jpghttps://github.com/JChristensen/mini1284
doppelt so viel wie der m2560 hat
aber mit dem ESP32 hat auch Charme!
Joachim B. schrieb:> Manfred schrieb:>> Kompiliere ich mit der IDE 1.7.4, habe ich 93%> Manfred schrieb:>> Kompiliere ich mit der 1.8.9, zeigt die nur 84%:>> das ist mir auch schon aufgefallen, bei anderen abweichenden Versionen,
Mir ist es eher per Zufall aufgefallen, aber der geringere Bedarf an
Programmspeicher käme mir entgegen.
> aber egal, das wäre nicht so mein Problem, aber bringt GCC austauschen> was oder klemmts dann in der IDE beim Aufruf?
Die Antwort kann ich nicht liefern, ich habe nicht vor, komplettes
revers engineering der A*-IDE zu betreiben.
> Manfred schrieb:>> Des weiteren fällt mir auf, dass ich in der 1.8.9 'old Bootloader'>> auswählen kann>> Das scheint mir ein 'bug' oder Sicherheitsdenken zu sein, ich habe alle> meine Nano328p und miniPRO328p im Bootloader angepasst und auch die> Fuses und die board.txt korrigiert.
In der 1.8.9 haben Nano und Nano-Old die gleichen Fuses. Ich meine, das
wurde vor Jahren hier schon einmal diskutiert: Optiboot eingeführt, aber
die Anpassung der High Byte Fuses verpennt.
> Bootloder Optiboot, Fuses gesetzt, upload auf 57k6 wieder reduziert, die> 115k klemmten zu oft mit wUSB und am USBwebserver.
Mir fällt nicht ein, warum man nicht einfach UNO auf Nano oder ProMini
flashen können sollte, es ist der gleiche Professor. Ich habe mal
testweise einen Nano auf Optiboot umgeflasht, aber noch keinen Grund
gesehen, das generell zu tun.
Veit D. schrieb:> Vermutlich kann gcc 7.3 deinen Code besser optimieren.
Du meinst, noch besser als der 5.4.0, der in der IDE 1.8.9 steckt?
> Nur wenn du die SD Lib und eine grafische Display Lib> nutzt, kann es eng mit dem RAM werden.
Das sehe ich gelassen, mit der SD-Lib hatte ich noch keinen Ärger. Neu
wird jetzt das OLED Display, aber ich habe nur wenig Daten zu
verarbeiten. Solange die IDE bis 70..75% RAM anzeigt, wird das gutgehen.
> Möchte damit weiter sagen, falls du diese Grenzen sprengst, kannste auf> einen "Arduino Mega2560" wechseln oder ..
In meiner konkreten Idee soll es einen erträglichen Stromverbrauch
haben, mechanisch halbwegs klein werden und am Akku laufen - das wird
ein ProMini mit 8 MHz werden. Wenn der Programmplatz nicht reicht, muß
ich den Optiboot drauf flashen.
Arduino Nano Every kannte ich noch nicht, der hat zumindest mal eine
vernünftige Bauform, im Gegensatz zu Uno und Mega. Meine IDE kennt den
noch nicht. Da muß ich aber schon fast überlegen, ob nicht ein ESP32 die
bessere Wahl wäre.
Hallo,
Joachim B. schrieb:> Veit D. schrieb:>> die Arduino IDE Version 1.8.12 gibts schon eine Weile und läuft ab Win7.>> nicht 64 bit!>> schrieb ich aber auch!>> Joachim B. schrieb:>> eine größere als 1.8.9 ist unter win7 x64 immer noch nicht verfügbar,> habe es ja gerade letzte Woche probiert!
übersehe ich jetzt irgendwas ? Die 1.8.12 läuft natürlich auf Win7
64Bit? Auch alle vorigen laufen ohne Probleme.
Gruß aus Berlin
Michael
Manfred schrieb:> Da muß ich aber schon fast überlegen, ob nicht ein ESP32 die> bessere Wahl wäre.
denke ich auch!
headless ist wlan genial, OTA auch, läuft an jeden USB Steckernetzteil
bei mir, flash und RAM im Überfluß, nervig nur die I2C Pegelwandlung für
5V Boards, aber das ist leicht lösbar.
Hallo,
>> die Arduino IDE Version 1.8.12 gibts schon eine Weile und läuft ab Win7.> nicht 64 bit!
Ich kann das nicht nachvollziehen. Die IDE läuft schon seit Jahren auf
64 Bit Windows 7, 8 und 10.
> Arduino Nano Every kannte ich noch nicht, der hat zumindest mal eine> vernünftige Bauform, im Gegensatz zu Uno und Mega. Meine IDE kennt den> noch nicht.
Du musst in der Boardverwaltung "Arduino megaAVR Boards"
nachinstallieren, aktuell v1.8.5
Wegen avr-gcc 7.3 mit der IDE. Ab IDE v1.8.12 wird das Paket "Arduino
AVR Boards" automatisch installiert, aktuell v1.8.2. In älteren IDEs
kann man das selbst nachinstallieren und hat den aktuelleren avr-gcc.
Hallo,
und wegen der Display Lib. Mag sein das die Lib von Adafruit nicht
gerade optimal ist. Ich meine die funktionieren zwar, sind meistens aber
nur lieblos hingerotzt. Ihre Produkte müssen damit "nur" funktionieren.
Die Eierlegendewollmilchsau ist derzeit:
https://github.com/olikraus/u8g2
Nur sollte man wissen das jede "Spielerrei" mit Grafikdisplay
zusätzlichen Speicher benötigt. Ohne gehts nun einmal nicht. Das heißt
alle Features mit Bedacht auswählen.