Goed, ik ben aan het wachten op mijn bestelde At Mega 163, en ben dus nog (bijna) nietswetend over microcontrollers.
De tutorial op de site heb ik ook al gelezen, maar ik snap het niet qua dataopslag in de Mega163
Ik wil dus straks dat de microcontroller een waarde opslaat als deze veranderd, en de laatste veranderde waarde moet -als de stroom er is afgegaan- na een power up/reset weer kunnen worden afgelezen.
Waar word deze waarde opgeslagen? In EEPROM van de 163 toch?
Zo ja : Maar er staat toch wel vaak "EEPROM tot 10000x beschrijfbaar", en wat gebeurt er daarna dan? Beetje onhandig natuurlijk als de waarde heel vaak veranderd. Maargoed, het zou onlogisch zijn, maar ik snap dit gedeelte niet..
Ik gebruik PonyProg voor het "uploaden" van m'n geschreven progjes. Als ik de *.hex wil openen, dan moet ik toch kiezen voor "Open Program(FLASH) file"?
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 9 november 2002 22:34:16 schreef Nofri:
Ik wil dus straks dat de microcontroller een waarde opslaat als deze veranderd, en de laatste veranderde waarde moet -als de stroom er is afgegaan- na een power up/reset weer kunnen worden afgelezen.Waar word deze waarde opgeslagen? In EEPROM van de 163 toch?
Een controller heeft 3 soorten geheugen, ROM, RAM en EEPROM. Het ROM is het geheugen waar je programma in staat en daar kun je tijdens het runnen van je programma niks aan veranderen. Het RAM is het tijdelijke geheugen waarin je waardes kunt opslaan die je even wilt laten onthouden, deze zijn echter weg als de spanning eraf gaat. Dan blijft er nog het EEPROM over. Dit is een geheugen wat trager is dan het RAM geheugen maar wat wel zijn waardes behoud als de spanning wegvalt (door wat voor reden dan ook).
Dus jij moet gebruik gaan maken van het EEPROM geheugen. Lees daarvoor eens zorgvuldig het specifieke stukje door in de datasheet wat daarover gaat.
Zo ja : Maar er staat toch wel vaak "EEPROM tot 10000x beschrijfbaar", en wat gebeurt er daarna dan? Beetje onhandig natuurlijk als de waarde heel vaak veranderd. Maargoed, het zou onlogisch zijn, maar ik snap dit gedeelte niet..
Dat gegeven heeft te maken met de opbouw en de hardware van dat geheugen. EEPROM staat voor Elektrical Erasable Programmable Read Only Memory. Oftwel het wordt met behulp van elektrische stroompjes zo gemanipuleerd dat het een bepaalde waarde gaat vertegenwoordigen. Alles slijt, ook dit geheugen. Na zoveel keer het te hebben gewijzigt zal het niet meer betrouwbaar zijn. Zie het als een videoband die op den duur niet meer met statische energie zijn beelden kan vasthouden en dus gewoon is versleten, op is. Je krijgt dan meestal gebieden op die videoband die vaag beeld geven, zwart/wit, geen beeld of ruis.
Lees trouwens eens goed wat er precies staat in de datasheet, namelijk: "Eproximately 10000x", dus niet precies 10000x maar ergens in de buurt ervan. Dit omdat niet alles altijd even sterk/zwak is. De ene persoon sterft op zijn 70e een natuurlijke dood de ander op zijn 110e om ff een voorbeeld te nemen zodat je het snapt.
Ik gebruik PonyProg voor het "uploaden" van m'n geschreven progjes. Als ik de *.hex wil openen, dan moet ik toch kiezen voor "Open Program(FLASH) file"?
Wat je zegt is correct.
Gelukkig weet ik wat PonyProg is anders had ik je vreemd aangekeken en gedacht dat je je paard een AVR implantaat wilde geven 
Even nog wat extra info, EEPROM is meer bedoelt voor langdurige opslag. Voor bijvoorbeeld tellers die elke paar mS veranderen gebruik je gewoon het RAM geheugen (de registers). Voor bijvoorbeeld toegangs- of statuscodes gebruik je EEPROM. Moet je natuurlijk zelf weten, je mag ermee doen wat je wilt, maar zo weet je een beetje hoe het hoort. 
Aha dus toch in het EEPROM. Maar de AT Mega 163 heeft toch ook Flash geheugen? Kan ik hier niets mee, of is de data dan ook weg als er geen stroom meer is?
Wat ik ook zou kunnen doen is, de veranderende waardes eerst in het RAM zetten, en vlak voor een shutdown/stroom uitval de waardes naar het EEPROM zetten, als dat mogelijk is. Maarjah dan zou ik em maar om en nabij de 1000x kunnen uitzetten....
Hoe zou ik dit anders kunnen aanpakken? (de waardes zijn zeg maar variabele instellingen)
Misschien iets van externe opslag?
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
Je zou bijv een externe RAM kunnen gebruiken met een backup battery. Zo'n battery kan over het algemeen wel een paar jaar mee. Zo gaat het bijvoorbeeld met de BIOS instellingen van een computer.
Marcel
De AVR's hebben Flash programma geheugen, een stukkie EEPROM meestal 64 of 128 bytes, en een stukkie ram.
In de EEPROM kun je data kwijt m.b.v. het bijbehorende commando, dat kun je terugvinden in de laatste pagina's van de uC datasheet
Suc6
Antoine
AVR Rulezzz 
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 10 november 2002 14:26:54 schreef Antoine:
AVR Rulezzz
Haha, hij kon het niet laten.
Rob Keij
Honourable Member
Op 10 november 2002 10:04:40 schreef Nofri:
Aha dus toch in het EEPROM. Maar de AT Mega 163 heeft toch ook Flash geheugen? Kan ik hier niets mee, of is de data dan ook weg als er geen stroom meer is?Wat ik ook zou kunnen doen is, de veranderende waardes eerst in het RAM zetten, en vlak voor een shutdown/stroom uitval de waardes naar het EEPROM zetten, als dat mogelijk is. Maarjah dan zou ik em maar om en nabij de 1000x kunnen uitzetten....
Hoe zou ik dit anders kunnen aanpakken? (de waardes zijn zeg maar variabele instellingen)
Misschien iets van externe opslag?
Het Flash geheugen is minder keren te beschrijven. Wil je vaak en veel geheugen inhoud wijzigen, dan is het beter een los geheugen te gebruiken. (zie www.atmel.com).
Groeten,
Rob
Benm
http://www.webchemistry.nl - Internet Ontwikkeling en Web Design
Dat zit precies zo:
Je kan data bewerken (opslaan/schrijven/lezen) in 4 plekken in een AVR:
1. Flash geheugen
programma en/of vaste data -> dumpen
2. EEPROM geheugen
data -> dumpen of via programma
3. SRAM
momentele data -> via programma
4. registers
programma en momentele data -> via programma