Hallo

Is er een manier om softwarematig te kunnen controleren wat voor reset er heeft plaats gevonden?
Het probleem is dat ik de 1e keer een array moet initialiseren, maar in het vervolg niet meer, om het overschrijven van gegevens te voorkomen.
In de datsheet staat dat er 2 bits zijn, nl 'PD en 'TO. Ook staat er bij dat je deze bits kunt gaan gebuiken om te bepalen wat voor reset heeft plaats gevonden. Het probleem is volgens mij dat een Power On Reset heeft dezelfde waarde als een Reset during normal operation heeft meegekregen, en DAT verschil wilde ik juist gaan gebruiken.
Klopt dit dan wel? Of zijn er andere manieren.
Wat gebeurd er bijvoorbeeld als de spanning van het RAM geheugen wegvalt. Volgens mij staan hier dan random gegevens is, of is dat per definitie 00h ( of FFh).

Greedz Alex

Op di 27-08-2002 14:31:31 schreef Risselada:
Is er een manier om softwarematig te kunnen controleren wat voor reset er heeft plaats gevonden?

Nee dit is niet mogelijk aangezien alle waardes opnieuw worden geinitialiseerd en dus een soort van status van voor de reset niet meer te achterhalen is. Wel voor de sleep en de WDT maar die gebruik je niet.

Het probleem is dat ik de 1e keer een array moet initialiseren, maar in het vervolg niet meer, om het overschrijven van gegevens te voorkomen.

In hoeverre bedoel je 1e keer?
*Je zet hem aan en hij doet die array en daarna nooit meer?
*Of bedoel je elke keer als die aangaat moet die initiliseren en dan niet meer tijdens de uitvoering, maar wel weer als die opnieuw wordt opgestart?

In het 1e geval kun je simpelweg gewoon een eigen status byte opslaan in zijn EEPROM. En daar dan bijvoorbeeld 77h inzetten zodra je de array hebt ingelezen. Wil je daarna controleren of de array is geinitialiseerd dan haal je eerst de data op uit zijn EEPROM en vergelijkt of het 77h is. Zoniet dan moet je nog initialiseren, zowel dan is het al een keer eerder gedaan en mag het nu niet meer.
Die 77h heb ik gewoon random gekozen. Je moet daar gewoon een code van maken, als het maar geen 00h of FFh is want grote kans dat die er altijd instaan en je dus niks meer aan je controle hebt.

In de datsheet staat dat er 2 bits zijn, nl 'PD en 'TO. Ook staat er bij dat je deze bits kunt gaan gebuiken om te bepalen wat voor reset heeft plaats gevonden. Het probleem is volgens mij dat een Power On Reset heeft dezelfde waarde als een Reset during normal operation heeft meegekregen, en DAT verschil wilde ik juist gaan gebruiken.
Klopt dit dan wel? Of zijn er andere manieren.

Ja dat klopt.

Wat gebeurd er bijvoorbeeld als de spanning van het RAM geheugen wegvalt. Volgens mij staan hier dan random gegevens is, of is dat per definitie 00h ( of FFh).

Er wordt na een startup niks geschreven in het RAM (dacht ik) dus wat er instaat is ongedefineerd, random dus. Stel dat er wel in wordt geschreven dan zal die alles FFh maken.
Maar je moet gewoon altijd de regel aanhouden dat een RAM na reset een ongedefineerde inhoud heeft, tenzij anders aangegeven in de datasheet.

Maar daarentegen kun je dan het EEPROM gebruiken. Dit blijft de waarde behouden, ook zonder spanning.