Je kunt ook slim met je flash omgaan.
STEL dat je iedere seconde 3 coordinaten wil opslaan. Kies de schaling zodanig dat je max-waarde 65534 is, dan past het in 16 bits.
Stel ik heb een STM32F072RB met 128k flash.
Dan zou je die 48 bits gewoon ergens in flash kunnen dumpen en iedere keer overschrijven. Met een max levensduur van 10000 cycles, ben je na een uur of drie er doorheen.
Maar stel nu dat ik 32k geheugen reserveer. En ik schrijf gewoon steeds achter mekaar door steeds 6 bytes iedere seconde. Dan duurt het anderhalf uur voordat ik de 32k vol heb. Tijdens het opstarten moet je dan wel vanaf het eind op zoek naar de "laatst geheel beschreven record". Binair zoeken kan best, dus je hebt in een stap of 13 het meest recente record gevonden.
Nu duurt het anderhalf uur voordat ik door m'n 32k heen ben. En dus bijna 2 jaar volcontinue aan voordat ik door de 10000 cycles heen ben. 20 jaar als je flash niet 10k maar 100k haalt.
Nu moet je wel zorgen dat de coordinatencombinatie "0xffff, 0xffff 0xffff" niet voorkomt. Door in alle drie de assen voor deze uitzonderingswaarde te zorgen, kan je ook de laatste GELDIGE waarde vinden, voor als de boel uitgaat terwijl je aan het schrijven bent. 0x1234, 0x3456, 0xffff is dan dus een "niet affe schrijf actie, gebruik de vorige".