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
08.01.2019, 11:03 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 11:32 von Harry.)
Beitrag #9
RE: Attiny85 zu wenig Speicher
(08.01.2019 09:46)MeisterQ schrieb:  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.

Solche Sachen und meinen code auf das minimum verkleinern meinte ich mit optimieren. Ich befürchte nur, dass das nicht reichen wird. Ich habe jetzt schon 81% belegt und das ohne großen Code und für HC-12 und Sleep muss ich auch noch libraries einbinden.

#define anstatt int
Möglichst kleine Datentypen
Was gibt es noch für Möglichkeiten?

Wie kann man feststellen welche librarie wie viel Speicher benötig?

Ich habe mir für jeden Winter ein Projekt vorgenommen. Letzten Winter war es der 328P, diesen Winter den Attiny85. Die ESP Reihe in Verbindung mit WIFI wird sicherlich auch noch dran kommen.

Harry

(08.01.2019 09:19)hotsystems schrieb:  Schau mal hier im Forum, da gibt es eine Anleitung, wie du auch beim ATtiny einen seriellen Monitor nutzen kannst.

Danke, ich werde mich da mal ein bischen einlesen.
Wenn ich es richtig verstanden habe, so langt mir 1 Pin dafür, zur Not muss die LED geopfert werden.
Auf den ersten Blick könnten aber die 1MHz könnten eventuell ein Problem sein.

http://www.gunook.com/attiny-serielle-ub...ettlosung/

https://www.arduinoforum.de/arduino-Thre...controller


Harry

(08.01.2019 10:50)ardu_arne schrieb:  Vielleicht passt der ATTINY1614

Der 1614 ist mir von der Bauform eigentlich zu groß, da kann ich schon fast beim 328P bleiben.
Als DIP bekomme ich den 1614 nicht, sondern nur zum auflöten. Gibt es da zwischenadapter, damit ich ihn steckbar machen kann?

Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 12:51 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 13:01 von hotsystems.)
Beitrag #10
RE: Attiny85 zu wenig Speicher
(08.01.2019 10:50)ardu_arne schrieb:  ......
Der Attiny85 scheint auch abgekündigt zu sein.
Hier ist eine aktuelle Auswahlseite.

Dann nochmal ordentlich zuschlagen, was ich kürzlich auch gemacht habe.
Für Serienproduktion ist das sicher nicht geeignet.

(08.01.2019 11:03)Harry schrieb:  Danke, ich werde mich da mal ein bischen einlesen.
Wenn ich es richtig verstanden habe, so langt mir 1 Pin dafür, zur Not muss die LED geopfert werden.
Auf den ersten Blick könnten aber die 1MHz könnten eventuell ein Problem sein.

Ja, hier ist leider das Problem die Software Serial, die es eben nicht bei 1 MHz tut.
In manchen Projekten habe ich auf 8 MHz entwickelt und später auf 1MHz "umgeschaltet".

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, 15:06
Beitrag #11
RE: Attiny85 zu wenig Speicher
(08.01.2019 11:03)Harry schrieb:  ...
Der 1614 ist mir von der Bauform eigentlich zu groß, da kann ich schon fast beim 328P bleiben.
...
Das verstehe ich nicht.
Der 1614 im 14-Pin SOIC150 ist doch kleiner als der 85er im DIP!!
Vergleiche doch mal die "Package Drawings" in den Datenblättern!

Wenn du den 1614 jetzt aber auf einen Zwischenadapter setzen willst weil er dir zu klein ist kannst du natürlich auch gleich bei einem 328P bleiben.

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
08.01.2019, 15:24
Beitrag #12
RE: Attiny85 zu wenig Speicher
...also mir rollen sich regelmäßig die Zehennägel auf wenn ich lese das hier Leute aus nem Handwagen (Tiny85) einen Tieflader (328er/2560) machen wollen...Big GrinAngel
...muß man nicht verstehen....Big Grin
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 21:39 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 21:40 von Harry.)
Beitrag #13
RE: Attiny85 zu wenig Speicher
(08.01.2019 15:24)Bitklopfer schrieb:  ...muß man nicht verstehen....Big Grin

Vieleicht einfach aus Spaß an der Freude oder um zu sehen was gehtSmile

Geschafft habe ich LCD, BME280 und Spannung überwachen.

Bei mein nächstes Modul das HC-12 um die Daten zu senden kam folgende Meldung:

"region `text' overflowed by 246 bytes"

War wohl zuviel für den Attiny85Angel

Ich glaube das Projekt ist somit gestorben.
Hat aber Spaß gemacht und ich habe viel dabei gelerntSmile

Für alle die sich für den Attiny85 mit LCD oder BME280 interresieren, hier mein code:

Code:
#include <TinyWireM.h>              // I2C Master lib for ATTinys which use USI - comment this out to use with standard arduinos
  #include <LiquidCrystal_attiny.h>   // for LCD w/ GPIO MODIFIED for the ATtiny85

  #define GPIO_ADDR     0x38
  LiquidCrystal_I2C lcd(GPIO_ADDR, 16, 2); // set address & 16 chars / 2 lines

  #define led 3

// - für Sensor -
  #include <MyAttinyBME280.h>
  #define BME2801_Ic2Add 0x76           // I2C Adresse für BME280-1
  MyAttinyBME280 bme1(BME2801_Ic2Add);  // Objekt BME1 festlegen
  uint8_t h1;                           // Variable für Luftfeuchte Sensor1
  float   t1;                           // Variable für Temperatur Sensor1
// ----------

// für Spannung überwachen
  const float INTERN = 1.10;            // Interne Referenzspannung bestimmt pro IC durch extra Programm  +++
  float       rvcc;                     // Nano = 1,?   328P = 1,29
  //  const float eichung    = 4.50;    // Spannung mit welcher der interne Referenzwert ermittelt wurde  +++
  //  const float korrektur  = 0.00;    // 328P = 0.15  Nano = 0  Attiny85 = 0   +++
// ----------

void setup() {

// - für Sensor -
  bme1.setHumiditySensing();             // Setze Parameter Nur Hygro + Temp
  bme1.init();                           // BME1 initialisieren
// ----------  
  
  lcd.init();                           // initialize the lcd
  lcd.backlight();                      // Print a message to the LCD.
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);

  MessenV();    // Batterie Spannung Messen
  MessenDHT();
  
  LCDAnzeige();  

  delay(2000);  
}

// ----------   Spannung Messen   -----------  
  float MessenV() {
    // Lesen 1,1V-Referenz als Input mit Referenz Betriebsspannung vcc
    // Referenz Vcc und analog Input = interne Referenz 1,1V
    #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
      ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
    #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
      ADMUX = _BV(MUX5) | _BV(MUX0);
    #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
      ADMUX = _BV(MUX3) | _BV(MUX2);
    #else
      ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
    #endif  

    delay(10);                         // Warten bis Referenz eingeschwungen
    ADCSRA |= _BV(ADSC);               // Start Umwandlung
    while (bit_is_set(ADCSRA,ADSC));   // Messen

    uint8_t low  = ADCL;               // must read ADCL first - it then locks ADCH  
    uint8_t high = ADCH;               // unlocks both

    long result = (high<<8) | low;
    rvcc = INTERN * 1023L / result;
  
    // rvcc = rvcc + (eichung - rvcc) * korrektur;

    analogReference(DEFAULT);          // zurückstellen auf Vcc als Referenz
    delay(10);                         // Warten bis Referenz eingeschwungen
  }


// ----------   BME280 Messen   -----------  
  void MessenDHT(){
      bme1.startSingleMeas();          // Messen
      t1 = bme1.readTemp();            // Temperatur auslesen
      h1 = bme1.readHumidity();        // Luftfeuchte auslesen
  }


// ----------   LCD anzeigen   -----------
  void LCDAnzeige() {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("VCC:");
    lcd.setCursor(5, 0);
    lcd.print(rvcc);
    
    lcd.setCursor(0, 1);
    lcd.print("T:");
    lcd.setCursor(3, 1);
    lcd.print(t1);
  
    lcd.setCursor(10, 1);
    lcd.print("H:");
    lcd.setCursor(13, 1);
    lcd.print(h1);
  }

Der Teil mit dem Spannung messen kommt ursprünglich von Tommy.
Danke an alle die mir geholfen habe.
Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 21:53 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 21:57 von Tommy56.)
Beitrag #14
RE: Attiny85 zu wenig Speicher
Danke, dass Du den Code auf Tiny85 getestet hast.

Hast Du die Fuses des Tiny85 geändert oder den im Auslieferungszustand belassen?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 22:06 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 22:12 von Harry.)
Beitrag #15
RE: Attiny85 zu wenig Speicher
(10.01.2019 21:53)Tommy56 schrieb:  Hast Du die Fuses des Tiny85 geändert oder den im Auslieferungszustand belassen?

Die Spannung habe ich im Bereich von 3-5 Volt gemessen und das Ergebnis deines Codes hat gestimmt.

Im Auslieferungszustand bei 1MHz, Bootloader wurde keiner geschrieben.
Die Meldung mit dem Speicherüberlauf kam auch gleich beim Prüfen und nicht erst beim schreiben.

Harry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 22:20
Beitrag #16
RE: Attiny85 zu wenig Speicher
Danke für die Info.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Speed versus Speicher bei Variablendef shrimps 2 383 29.04.2019 11:38
Letzter Beitrag: shrimps
  Ram Speicher bei Arduino Mega wird knapp unkreativ 22 1.280 02.02.2019 18:40
Letzter Beitrag: unkreativ
  Attiny85 mit I2C LCD Harry 9 743 07.01.2019 18:33
Letzter Beitrag: Tommy56
  Attiny85 sleep Harry 2 428 27.12.2018 19:21
Letzter Beitrag: Harry
  Keine Tonübertragung mit ATtiny85 möglich delay 7 684 08.12.2018 20:49
Letzter Beitrag: georg01
  Code für Speicher optimieren Sasch600xt 35 3.511 31.08.2018 12:41
Letzter Beitrag: Sasch600xt
  ATtiny85 - PWM mit 18-30KHz phischmi 5 1.135 09.04.2018 17:31
Letzter Beitrag: hotsystems
Sad zu wenig Speicher im Nano (Schulprojekt) Dock.Blanko 5 1.148 10.02.2018 12:00
Letzter Beitrag: rkuehle
  PWM auf Attiny85 Andreas75s 9 2.478 18.12.2017 18:15
Letzter Beitrag: Mathias
Sad Nano - nicht genug Speicher torsten_156 10 4.445 30.10.2017 21:40
Letzter Beitrag: MicroBahner

Gehe zu:


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