I have reached the point where I filled up my atmega32u4 with 99.99% of the flash size.
That is after optimizing everything I could think of. My sketch includes:
4K bootloader 2 softwareSerial ports, 1 for WIFI module, 1 for GPRS module Serial0 port enabled for terminal communication with PC Serial1 port enabled for GPS module WDT enabled EEPROM in use PROGRAMMEM in use TinyGPS++ library in use GPS module in use Sim900 in use for GPRS communication Accelerometer ADC input in use I2C for LCD screen in use
All those features are bundled in a complex state-machine algorithm that fits perfectly onto the 28Kbyte available FLASH mem (4K is used by the bootloader - Needed for updating, JTAG not available)
And now I'm requested to a Bluetooth module :@
After some trail and error (commenting out chunks of code) I have found that the only possible place I have left to reduce some size is the Serial1 usage.
Enabling Serial1.read()/Serial1.available() in my code, add 6500bytes. I was wondering how is this library so big if its only the Hardware RX\TX serial com, some interrrupts and bitbanging?
I will be thankfull if someone can shed some light on what's happening in this library that it takes 1/4 of the FLASH mem size.
PS: My mega32u4-RC is on a custom clone circuit of arduino-micro, It runs on its' internal 1Mhz RC so I have modiefied the bootloader and USBCore to make it work. If it can be usefull I can post the edited files.