ir library

Hallo!

ich habe ein Problem und meine recherche hat mir nicht weitergeholfen.

Also ich benutze momentan die Ken Shirriff multi protocoll ir library, neben bei hab ich ein glcd (5110) und einen rotary encoder. mein problem ist das mir der speicher ausgeht, da ich einen atmega 168pa verwende. Es funktioniert ansich super, aber ich will noch ein TEA5767 ansteuern aber das würde nicht funktionieren. zusätzlich, wenn ich eine andere library für den ir empfänger verwende bzw. den code selber schreibe wird damit der rotary encoder blockiert.

was kann ich tun?

mfg

Flash oder RAM?

Du kannst auf den Atmega328 umsteigen. 32kB Flash und 2kB RAM

flash.
naja anfangs hab ich mir eh überlegt den 328 zu nehmen, aber es geht sich ja aus wenn nur die blöde library nicht soo groß wäre.

Auf den Bootloader zu verzichten bringt nur 0,5kB. Das lohnt sich wahrscheinlich nicht.

Bei dem Graphik-Display wird ein Font dabei sein. Wenn du davon nicht alles verwendest kann man den eventuell kürzen - z.B. die Satzzeichen entfernen. Dann stimmt aber die Zuordnung zur ASCII Tabelle nicht mehr und man muss eine Wrapper Funktion schreiben die das umgesetzt oder die Lib selbst anpassen. Kommt drauf an wie das gemacht ist und was man davon verwendet.

Also,
was ich bis jetzt gemacht habe.

GLCD wurde nur standard font keine graphiken nichts. ~ 4kb
spi für digitalpoti ist pflicht ~1,5kb
rotary encoder 0,5kb
der rest ist nur das menü und sonstiges 2,5kb
so wenn ich jetzt die IR library dazu gebe sind es 15,9kb... also knapp an der grenze und es kommt noch der tea5767 dazu

Du wirst sicher nicht alle Möglichkeiten der IR Bibliothek ausschöpfen. Darum könntest Du die Biblithek entrümpeln und nur die unbedingt notwendgen Funkionen drinlassen.
Umstieg auf ATmega328 ist sicher ein Lösungsweg.
Grüße Uwe

Bist du da sicher? Ich dachte wenn man eine Funktion einer Lib nicht verwendet wird sie auch nicht kompiliert. Das #include ist eigentlich nur ein Verweis wo was steht, damit der Compiler weiß dass die Funktionen existieren. Nicht eine Anweisung dass er alles dort kompilieren muss.

Der selbst geschriebene Code ist was anderes. Da kann es sehr gut sein, dass alles compiliert wird. Das hängt aber auch von Compiler/Linker Einstellungen ab.

Und selbst das scheint die Ardunio IDE zu optimieren:

void setup() 
{
}

void loop() 
{
  Serial.println(func2());
}

int func1()
{
  int i = 2;
  return i;
}

int func2()
{
  int i = 3;
  return i;
}

func1() wird nicht verwendet. Aber der Code hat 2046 Bytes, egal ob es auskommentiert ist, oder nicht. Wenn man dem vertrauen kann...

Nein ganz sicher nicht.
Grüße Uwe