Kiitos avusta edelliseen viestiini vastanneille nimimerkeille asödkjfölaksjdfasdf ja keksa. Näillä pääsen eteenpäin toistaiseksi.
Mulla olisi myös toinen pulma, nimittäin mikro-ohjaimen sisäisen EEPROM-muistin käyttö. Projektissani tullaan joskus myöhemmin tarvitsemaan jonkinlaista keinoa säilyttää muuttujien arvoja sähkökatkoksen yli, ja EEPROM voisi olla ratkaisu.
Tietääkö joku, millaisilla komennoilla ja funktioilla EEPROM-muistiin viedään muuttujia ja niiden arvoja ja miten ne saadaan sieltä ulos? Kutsutaanko ne käyttöön globaalisti, vai funktiokohtaisesti?
Kiitos etukäteen.
EEPROM-muistin käyttö
4
1007
Vastaukset
- Codevision-koodaaja
ollaan siis edelleen tietysti CodevisionAVR-kääntäjäympäristössä.
- keksa
hmm eikös eeprom vaatinut sen, että data "poltetaan" muistiin valolla tms?
Saako siihen vehkeeseen Flash-muistia kiinni?
Muisti näkyy prosessorille aina jonain muistiosoitteina, johon siirretään tietoa ihan kuten muutenkin.
intel 8051 prossussa tai olla, että sisäiseen muistiin kirjoitettiin MOV-käskyllä ja ulkoisiin MOVX-käskyllä.
MOVX 2000H, A #siirtää rekisterin A sisällön tuohon muistiosoitteeseen.
Ei kovin tarkasti muista 10v takaisia juttuja- Codevision-koodaaja
EEPROM voidaan ymmärtääkseni ohjelmoida ja tyhjentää sähköisesti, onhan nyt kyseessä AVR-ohjeimen sisäinen EEPROM. Sen nimikin tulee sanoista "Electricly eraseable Programmable Read Only Memory."
Yhden e:n prom, eli EPROM vaati ultraviolettia tyhjennykseen.
- ökjaösdkjfaöklsdf
Prosessorin user manualissa on varmaan kerrottu EEPROM:n käytöstä tai annettu linkki johonkin muuhun dokumenttiin joka selventää asiaa. Atmellin sivuilta löytyi seuraava dokumentti, (en tiedä koskeeko prosessoriasi).
http://www.atmel.com/dyn/resources/prod_documents/doc0932.pdf
Jos tuon linkin mukaan tekee yksinkertaiset luku ja kirjoitus rutiinit (joka käsittelee tavua), niin taitavat mennä jotenkin seuraavasti CodeVisionilla:
--- ALKAA ---
void eeprom_write(int osoite, char merkki);
char eeprom_read(int osoite);
/* Kirjoittaa merkin EEPROM muistiin haluttuun osoitteeseen */
void eeprom_write(int osoite, char merkki)
{
/* Odotetaan että edellinen kirjoitus on suoritettu loppuun */
while(EECR.1);
/* Asetetaan osoiteen ylempi ja almepi tavu johon kirjoitetaan */
EEARH = (osoite >> 8) & 0xff;
EEARL = (osoite >> 0) & 0xff;
/* Asetetaan kirjoitettava data */
EEDR = merkki;
/* Otetaan keskeytykset pois */
#asm("cli");
/* Asetetaan EEMWE (EEPROM master write enable) bitti päälle */
EECR.2 = 1;
/* Asetetaan EEWE (EEPROM write enable) bitti päälle */
EECR.1 = 1;
/* Sallitaan kesketytykset */
#asm("sei");
}
/* Lukee merkin EEPROM muistista halutusta osoitteesta */
char eeprom_read(int osoite)
{
char merkki;
/* Odotetaan että edellinen kirjoitus on suoritettu loppuun */
while(EECR.1);
/* Asetetaan osoiteen ylempi ja almepi tavu johon kirjoitetaan */
EEARH = (osoite >> 8) & 0xff;
EEARL = (osoite >> 0) & 0xff;
/* Asetetaan EERE (EEPROM read enable) bitti päälle */
EECR.0 = 1;
/* Luetaan merkki */
merkki = EEDR;
/* Palautetaan luettu merkki */
return merkki;
}
--- LOPPUU ---
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa
En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod225154- 254338
- 272461
- 342244
- 371998
- 151918
En ole koskaan kokenut
Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka191587- 121521
Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...
Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons211247Kerranki asiat oikein
Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa101174