Hallo allemaal,
Sinds gisteren ben ik aan het spelen met de EEPROM in de AT90S8535. Als ik deze volgens een cyclus programmeer met bv waarde 0xAA, en ik deze vervolgens teruglees via PortB, dan staat er idd een waarde 0xAA op de poort, alles oke dus zou je denken.
Maar...
Om vervolgens te kunnen testen of de waarde er in BLEEF staan heb ik vervolgens een tweede programma in de AVR geladen, die alleen de EEPROM locatie leest. Vervolgens zie ik doodleuk een 0xFF op de poort staan.
Mijn vraag is dus als volgt.
Als de AVR ISP geprogrammeerd wordt, wordt dan ook de EEPROM gewist ? Of is er iets anders aan de hand ?
Groeten
Antoine
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 6 februari 2003 20:32:35 schreef Antoine:
Als de AVR ISP geprogrammeerd wordt, wordt dan ook de EEPROM gewist ? Of is er iets anders aan de hand ?
Dat kan, het ligt eraan hoe je hem programeert vanuit de software.
Maak anders een programma dat de 0xAA in het EEPROM zet, en ook een 1 in het EEPROM. Maak dan een subprogramma dat test of dat getal een 1 is of wat anders, zodra het een 1 is mag het niet meer die 0xAA in het geheugen zetten en alleen nog maar uitlezen. Zo kun je ervoor zorgen dat je na een powerdown hem weer aan kunt zetten en kunt testen. Waarbij die alleen bij de 1e powerup het EEPROM beschrijft.
Ja, en idd, in AVR studio wordt niks gedaan (volgens de instellingen dan), dat de EEPROM data wist.
Dus kan het dan zijn dat de data corrupt raakt ? Ik had al zoiets in gedachte wat je zei, dat ga ik nu gelijk eens proberen.
Trouwens stel dat het zo zou zijn dat het je EEPROM wist, hoe krijg je die dan ooit geprogrammeerd ? Als je telkens bij elke power-down je EEPROM wist ?
Groeten
Antoine
Oke, inmiddels ben ik weer wat wijzer.
De data van de EEPROM wordt dus idd gewist (shit
), afijn volgende vraag wordt dan dus dit.
Stel ik maak een programma wat vaste tekst vanuit de EEPROM leest. Deze data veranderd dus nooit (en zeker niet de CPU zelf). Ik wil geen gedeelte in mijn programma hebben dat "first time" die EEPROM programmeerd.
Hoe kan ik het dus voor elkaar krijgen dat ik de EEPROM programmeer (eventueel NA het programmeren van de flash) zonder dat er e.e.a. gewist wordt ?
En hoe maak je een geschikte Intel HEX file voor in de EEPROM ?
Groeten
Antoine
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 6 februari 2003 20:40:33 schreef Antoine:
Trouwens stel dat het zo zou zijn dat het je EEPROM wist, hoe krijg je die dan ooit geprogrammeerd ? Als je telkens bij elke power-down je EEPROM wist ?
Hoe kom je erbij dat dat bij de powerdown word gewist? EEPROM blijft dan juist bewaard. Het wissen gebeurt schijnbaar tijdens het programmeren.
Met welk programma programmeer je? (flashen dan)
Rob Keij
Honourable Member
Voor het programmeren van het flash geheugen wordt inderdaad de hele chip gewist.
Dus wissen , programmeren flash en eeprom. Niet vergeten de lockbits te programmeren.
MAAR !!!!!!
LET OP !!!!!
Ik heb in het begin een project gehad waarbij ik de tekst in eeprom had staan. Totdat ik gebeld werd dat er bij het testen toch wel een vreemde tekst in beeld kwam. I.p.v. druk op start voor invoeren gegevens stond er ... op start voor invoeren gegevens.
Om het kort te houden...
Als je je eeprom gebruikt is het van belang dat het programma niet op een willekeurig plaats begint (eeprom schrijven). Dit gebeurd bij een wazige power up.
d.w.z. voeding aan/uit/aan/uit aan
Vooral als er een extern reset circuit gebruik wordt.
Zorg ervoor dat je bij een controller zonder brown-out een exteren brown-out gebruikt.
- een brown-out zorgt ervoor dat er bij een spanning beneden een bepaalde grens de controller gedurende een bepaalde tijd gereset wordt. Het programma start dan altijd op vanuit het begin.
Oke Rob, idd daar was ik al achter gekomen nou.
Het wissen gebeurde idd door het opnieuw programmeren van de flash. Heb nu een programmaatje gemaakt wat de eerste 32 bytes van het EEPROM leest en op een 2x16 display zet in 4bits modus. Ik heb met het programma WinHex (gratis te downloaden, zoek op google), een Intel Hex gemaakt, erover heen geprogrammeerd en de AVR zet braaf die tekst op het display.
Nou nog even kijken of dat bij mij ook zo is Rob.
Tot horens
Groeten
Antoine