INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Attiny85 zu wenig Speicher
07.01.2019, 22:57
Beitrag #1
Attiny85 zu wenig Speicher
Ich möchte meinen 328P durch einen Attiny85 ersetzen.
Die Herausvorderung mit dem Attiny85 macht viel Spaß und ich komme auch gut voranSmile

Im Momemt bin ich nur am testen der Grundfunktionen I2C-LCD und BME280.
Jetzt komme ich aber so langsam an ein Problem an das ich an allerwenigsten gedacht habe, der SpeicherSad
Dabei habe ich mit meinem Programm noch gar nicht angefangen und es soll auch noch eine HC-12 Anbindung und eine Sleep Funktion hinzu kommen.

Code:
#include <MyAttinyBME280.h>
  #include <TinyWireM.h>
  #include <LiquidCrystal_attiny.h>

  #define GPIO_ADDR     0x38
  LiquidCrystal_I2C lcd(GPIO_ADDR, 16, 2);

  #define BME2801_Ic2Add 0x76
  MyAttinyBME280 bme1(BME2801_Ic2Add);
  uint8_t h1;
  float   t1;
  int led = 3;

void setup() {
  bme1.setHumiditySensing();
  bme1.init();
  lcd.init();
  lcd.backlight();
  pinMode(led, OUTPUT);
}

void loop() {
  MessenBME280();

  lcd.clear();
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);

  lcd.setCursor(0, 0);
  lcd.print(t1);
  delay(2000);

  lcd.setCursor(0, 1);
  lcd.print(h1);
  delay(2000);

  digitalWrite(led, HIGH);
  delay(200);
  digitalWrite(led, LOW);
  delay(1000);  
}

void MessenBME280() {
  bme1.startSingleMeas();
  t1 = bme1.readTemp();
  h1 = bme1.readHumidity();
}

Speicherverbrauch sieht im Moment so aus:
Der Sketch verwendet 6636 Bytes (81%) des Programmspeicherplatzes. Das Maximum sind 8192 Bytes.
Globale Variablen verwenden 129 Bytes (25%) des dynamischen Speichers, 383 Bytes für lokale Variablen verbleiben. Das Maximum sind 512 Bytes.

Bei meinem fertigen Sketch für den 328P (soll in den Attiny85) sieht es so aus (kann aber noch etwas optimiert werden):
Der Sketch verwendet 11644 Bytes (37%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 719 Bytes (35%) des dynamischen Speichers, 1329 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Ich vermute mal, dass die libryries den meisten Platz verbrauchen und das optimieren an meinem code gar nicht viel bringt.

Wie ist das mit den Variablen?
Sind das die der libraries + meine?
Macht es einen Unterschied ob einen Variable einen kurzen oder einen langen Name hat?

Was für Möglichkeiten gibt es um Speicher zu sparen und was wäre der nächst größere Chip (wobei mit der Attiny85 sehr gefällt)?

Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 07:23
Beitrag #2
RE: Attiny85 zu wenig Speicher
Hallo Harry,
ich selber nehme z.zt. den ESP32.
Da kann man so richtig gasgeben, Speicher satt und deutlich flotter als der Attiny.
Habe den 85 mal ausprobiert und war wegen der Leistung natürlich enttäuscht, war aber klar.

HtH
Shrimps



(07.01.2019 22:57)Harry schrieb:  Ich möchte meinen 328P durch einen Attiny85 ersetzen.
Die Herausvorderung mit dem Attiny85 macht viel Spaß und ich komme auch gut voranSmile

Im Momemt bin ich nur am testen der Grundfunktionen I2C-LCD und BME280.
Jetzt komme ich aber so langsam an ein Problem an das ich an allerwenigsten gedacht habe, der SpeicherSad
Dabei habe ich mit meinem Programm noch gar nicht angefangen und es soll auch noch eine HC-12 Anbindung und eine Sleep Funktion hinzu kommen.

Code:
#include <MyAttinyBME280.h>
  #include <TinyWireM.h>
  #include <LiquidCrystal_attiny.h>

  #define GPIO_ADDR     0x38
  LiquidCrystal_I2C lcd(GPIO_ADDR, 16, 2);

  #define BME2801_Ic2Add 0x76
  MyAttinyBME280 bme1(BME2801_Ic2Add);
  uint8_t h1;
  float   t1;
  int led = 3;

void setup() {
  bme1.setHumiditySensing();
  bme1.init();
  lcd.init();
  lcd.backlight();
  pinMode(led, OUTPUT);
}

void loop() {
  MessenBME280();

  lcd.clear();
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);

  lcd.setCursor(0, 0);
  lcd.print(t1);
  delay(2000);

  lcd.setCursor(0, 1);
  lcd.print(h1);
  delay(2000);

  digitalWrite(led, HIGH);
  delay(200);
  digitalWrite(led, LOW);
  delay(1000);  
}

void MessenBME280() {
  bme1.startSingleMeas();
  t1 = bme1.readTemp();
  h1 = bme1.readHumidity();
}

Speicherverbrauch sieht im Moment so aus:
Der Sketch verwendet 6636 Bytes (81%) des Programmspeicherplatzes. Das Maximum sind 8192 Bytes.
Globale Variablen verwenden 129 Bytes (25%) des dynamischen Speichers, 383 Bytes für lokale Variablen verbleiben. Das Maximum sind 512 Bytes.

Bei meinem fertigen Sketch für den 328P (soll in den Attiny85) sieht es so aus (kann aber noch etwas optimiert werden):
Der Sketch verwendet 11644 Bytes (37%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 719 Bytes (35%) des dynamischen Speichers, 1329 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Ich vermute mal, dass die libryries den meisten Platz verbrauchen und das optimieren an meinem code gar nicht viel bringt.

Wie ist das mit den Variablen?
Sind das die der libraries + meine?
Macht es einen Unterschied ob einen Variable einen kurzen oder einen langen Name hat?

Was für Möglichkeiten gibt es um Speicher zu sparen und was wäre der nächst größere Chip (wobei mit der Attiny85 sehr gefällt)?

Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 08:02
Beitrag #3
RE: Attiny85 zu wenig Speicher
(08.01.2019 07:23)shrimps schrieb:  ich selber nehme z.zt. den ESP32.

Ich möchte mein 328P Projekt verkleinern und nicht vergrößern.
Mich reizt es mit möglichst wenige und kleine Bauteile aus zu kommen.

(08.01.2019 07:23)shrimps schrieb:  Habe den 85 mal ausprobiert und war wegen der Leistung natürlich enttäuscht, war aber klar.

Die Leistung des Attiny85 langt mir völlig.
Er soll nur messen und die Werte weitergeben.

Das Display habe ich nur während der Programmierung zu Diagnosezwecke um Rückmeldungen diverser Variablen zu bekommen da der Attiny keinen seriellen Monitor hat. Das könnte ich zur Not weglassen und auf eine LED zurück greifen. Werte per LED ausgeben ist aber recht umständlich und einen Ausgang habe ich dafür eigentlich auch nicht frei.

Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 09:19
Beitrag #4
RE: Attiny85 zu wenig Speicher
(08.01.2019 08:02)Harry schrieb:  Die Leistung des Attiny85 langt mir völlig.
Er soll nur messen und die Werte weitergeben.

Das Display habe ich nur während der Programmierung zu Diagnosezwecke um Rückmeldungen diverser Variablen zu bekommen da der Attiny keinen seriellen Monitor hat......

Das kann ich absolut nachvollziehen.
Man kann einen ATtiny85 nicht mit einem ESP32 vergleichen, schon garnicht was die Größe angeht.
In meinen Projekten habe ich die Resourcen eines ESP bisher nicht benötigt.

Schau mal hier im Forum, da gibt es eine Anleitung, wie du auch beim ATtiny einen seriellen Monitor nutzen kannst.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 09:46
Beitrag #5
RE: Attiny85 zu wenig Speicher
Ein ESP32 ist kleiner als ein Attiny85.

Braucht jedoch mehr Bauteile drumherum.

Aber ich denke ihr meint das ESP-WROOM-32 Modul. Das ist schon recht groß ja.


Zum Thema:

Muss die Temperatur wirklich als float definiert werden? nimmt ein integer nicht weniger Speicherplatz weg? Dort kannst du beim Tiny *1000 rechnen, und dort wo es verarbeitet wird, /1000 und zu float wandeln. So habe ich das mal irgendwo gemacht.

"int LED = 3" kannst du auch mit
"#define LED 3" komplett ohne Speicher zu belegen definieren.

Sollte alles ein wenig Speicher freiräumen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 10:05
Beitrag #6
RE: Attiny85 zu wenig Speicher
Hallo,

ESP8266 ESP-03 ist die kleinste Modulform, die ich schon benutzt habe.
Für DeepSleep muß man allerdings einen SMD-Widerstand oder eine Brücke nachrüsten. Den Widerstand statt der Brücke nur, wenn man sich Reset noch mit einem Wrapdraht auf den freien NC-Pin legen will.

Tiny gibt es hier mit FOST02 und RFM02 als Temperatur/feuchte Sensoren mit 433MHz Anbindung seit fast 10 Jahren.
1010 Byte Flash belegt, ASM.
Aber auch ich bin bequem geworden, eigentlich wollte ich das mal auf dem Tiny85 in die ArduinoIDE tragen, dann auch mit dem BME280, wollte...

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 10:34 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 10:41 von hotsystems.)
Beitrag #7
RE: Attiny85 zu wenig Speicher
(08.01.2019 09:46)MeisterQ schrieb:  Ein ESP32 ist kleiner als ein Attiny85.
.....
Mit dem allein werden wohl die wenigsten etwas anfangen können.
Also auch da hinkt aus meiner Sicht der Vergleich.

Sollte ich mich irren, lasse ich mich gern belehren.
Habe bisher noch nichts damit gemacht.

Und hier der Beitrag für den TO mit der seriellen Anzeige am ATtiny85:
serieller Monitor

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 10:50
Beitrag #8
RE: Attiny85 zu wenig Speicher
(08.01.2019 08:02)Harry schrieb:  ...
Ich möchte mein 328P Projekt verkleinern und nicht vergrößern.
Mich reizt es mit möglichst wenige und kleine Bauteile aus zu kommen.
...
Vielleicht passt der ATTINY1614
Der Attiny85 scheint auch abgekündigt zu sein.
Hier ist eine aktuelle Auswahlseite.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Programm läuft auf UNO aber nicht auf ATTINY85 Diwo13 49 809 Gestern 17:31
Letzter Beitrag: hotsystems
  attiny85 und PIEZO Buzzer / Speaker Thor Wallhall 6 236 16.11.2019 21:14
Letzter Beitrag: Thor Wallhall
  Speed versus Speicher bei Variablendef shrimps 2 628 29.04.2019 11:38
Letzter Beitrag: shrimps
  Ram Speicher bei Arduino Mega wird knapp unkreativ 22 2.052 02.02.2019 18:40
Letzter Beitrag: unkreativ
  Attiny85 mit I2C LCD Harry 9 1.376 07.01.2019 18:33
Letzter Beitrag: Tommy56
  Attiny85 sleep Harry 2 739 27.12.2018 19:21
Letzter Beitrag: Harry
  Keine Tonübertragung mit ATtiny85 möglich delay 7 1.001 08.12.2018 20:49
Letzter Beitrag: georg01
  Code für Speicher optimieren Sasch600xt 35 4.775 31.08.2018 12:41
Letzter Beitrag: Sasch600xt
  ATtiny85 - PWM mit 18-30KHz phischmi 5 1.584 09.04.2018 17:31
Letzter Beitrag: hotsystems
Sad zu wenig Speicher im Nano (Schulprojekt) Dock.Blanko 5 1.536 10.02.2018 12:00
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste