More memory via i2c

Hi guys !

First of all, I'm a nooby at electronics, sorry.
I have a mechanical keyboard with a ProMicro programmed through QMK.

And I'm run out of memory. Someone recommended me "more firmware usage, 64KB eeprom via QWIIC/i2c". But I don't know very well how walking this road.

Is there some post or blog or something else where someone uses an external device, such as a SMD card or whatever, for storing a bigger .hex file that ProMicro can use ? The same way it reads its own flash memory ?

Thank you in advance, guys !

:wink:

(deleted)

There is possibly a simple solution, the Print statement places all the text in RAM which is copied from flash on reset. Change your Serial.Print("whatever your saying"); to Serial.Print(F("whatever your saying"));. This line alone will save you 20 Bytes of RAM even though is is a little slower. It works with Serial.Println() as well but will not work when printing a variable. As stated previously code can only be executed form the internal flash however data can be anywhere you want it. You can even place all your print statements etc in external memory. This response is to help you get started in solving your problem, not solve it for you.
Good Luck & Have Fun!
Gil

It sounds like OP is short on flash, not RAM - the F() macro doesn't reduce flash use, only RAM use. In fact, I think each occurence of the F() macro adds either 2 or 4 bytes to the compiled sketch, and the first one adds a little more than that.

The AVRs cannot execute code except from their internal flash. If you need more flash for code, you need to use a chip with more flash.

Thanks spycatcher2k, gilshultz and DrAzzy !

I'll change my Pro Micros to Proton Cs. Proton C are more expensive, but they have 256kb flash memory instead of 32kb.

Thank you for your attention and above all, for your time.

SOLVED !

:wink: