Exceeded maximum number of writes

Arduino specifieke Software
Berichten: 45
Geregistreerd: 08 Jan 2020, 17:23

Exceeded maximum number of writes

Berichtdoor RonalT » 28 Apr 2022, 20:56

Daar ben ik weer met mijn molenteller (zie eventueel Teller voor een windmolen als je er meer over wilt weten).

Het ding is nu in de molen geinstalleerd en telt vrolijk het aantal omwentelingen. Het "totaal aantal omwentelingen", het "jaartal" en het "aantal schrijfacties" wordt elke 10 minuten opgeslagen. Dit zijn 18 schrijfacties per uur. Nu is het vreemde dat ik na een uur of 6 een foutmelding krijg, het lijkt te maken te hebben met het aantal schrijfacties naar de EEProm.
Ik heb gelukkig wat controle dingen ingebouwd. Zo wordt er een schrijfactie uitgevoerd en daarna wordt gecontroleerd of het aantal wat opgeslagen is gelijk is aan het aantal wat in het geheugen van de Arduino staat.

cpp code
Serial.println("Opslaan op EEprom  ");                                            // Verzendt de tekst naar het LCD display en ga een regel omlaag.  
EEPROM.writeFloat(addresOmwenteling, revolutionsSpurwheel); // Schrijft omwentelingen spoorwiel naar Eeprom geheugenplaats.

if ((revolutionsSpurwheel) != (EEPROM.readFloat(addresOmwenteling))) // | als: het geschreven aantal omw afwijkt van het gelezen aantal omw.


Als deze IF klopt gaat het progremma gewoon door, als er een afwijkend getal wordt gelezen wordt er een andere actie uitgevoerd en dat gebeurde vorige week en de afgelopen weken een paar keer gebeurd
Nu had ik deze week mijn laptop bij me en aangesloten zodat ik de output naar de Serial Monitor kon sturen en toen zag ik na 5 uur en 40 minuten de onderstaande melding...

cpp code
15:51:55.100 -> Opslaan op EEprom  
15:51:55.100 -> Exceeded maximum number of writes
15:51:55.146 -> Exceeded maximum number of writes
15:51:55.193 -> tijd in milliseconden : 20410254
15:51:55.193 -> Opslaan aantal omwentelingen : (geschreven) 41459 - (gelezen) 41459
15:51:55.287 -> Opslaan jaartal : (geschreven) 2022 - (gelezen) 2022
15:51:55.334 -> Opslaan aantal schrijfacties : (geschreven) 546 - (gelezen) 545


Vooral de laatste regel is spannend, want daar zie je dat het aantal schrijfacties niet is bijgewerkt. De '545 keer' van de vorige ronde staat er nog. De twee andere regels zijn wel netjes bijgewerkt. En dat is raar.
Elke volgende poging om op te slaan mislukt.
Het getal 41459 en 545 worden steeds gelezen en dit geeft foutmeldingen. Het jaartal 2022 gaat wel goed, maar dat verandert ook niet zo dikwijls. :shock:

De melding "Exceeded maximum number of writes" komt niet uit mijn sketch, maar na wat zoeken vond ik deze in de voor de EEProm gebruikte library.

cpp code
_writeCounts++;
if (_allowedWrites == 0 || _writeCounts > _allowedWrites ) {
Serial.println("Exceeded maximum number of writes");
return false;
}


En wat zie ik daar? "_writeCounts > _allowedWrites"
_allowedWrites staat er ook in. En deze stond op 100 keer opslaan. Na 100 keer opslaan wordt _writeCounts groter dan _allowedWrites en dus BINGO
Nu sla ik elke 10 minuten 3 waardes op. Dus dat zijn er 18 per uur. En de 100 / 18 = 5 uur en 33 minuten. Dus dat komt precies uit met mijn gegevens uit de Serial Monitor.
Hoe toevallig!


Nu de belangrijkste vraag:
Waarom staat _allowedWrites op 100 keer. Een Arduino EEProm wordt voor 100.000 schrijfacties gegarandeerd
Elke keer als de Arduino opnieuw wordt aangezet begint deze teller weer op 0.
Kan ik deze waarde veilig op 1000 of 10.000 zetten?

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Exceeded maximum number of writes

Berichtdoor shooter » 29 Apr 2022, 21:55

Je schrijft zelf al 100000 keer is gegarandeerd dus ja dat getal kun je groot maken, als je bijvoorbeeld elke dag 1 keer opslaat en dat een paar dagen zelf opschrijft dan kun je na een paar dagen best wel een mooie trend maken en die gebruiken. Je kunt ook een programma erbij zetten die alleen opslaat als de voeding minder is dan normaal. en dus zie je netuitval van te voren aankoemn.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 15 gasten