AVR: Programera en variabel i EPROM?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DeeJay_Bamse
Inlägg: 61
Blev medlem: 19 november 2007, 21:43:08
Ort: Skövde

AVR: Programera en variabel i EPROM?

Inlägg av DeeJay_Bamse »

Kanske skall förtydliga mig lite... Vill kunna spara 37 byte till nästa gång processorn får spänning... Något säger mig att man skall skriva dem i Epromarean men hur gör man det och hur läser man av det nästa gång?? Givetvis vill jag ju kunna ändra dem med....

Processor: AVR ATMega32
Språk: C

Det är säkert skitsimpelt men har inte hittat någon bra kurs på nätet för C programmering... Så jag lär mig den hårda vägen...
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Alternativ 1 (via register):
Kolla EEPROM-kapitlet i databladet. Det brukar till och med finnas kodexempel för både Asm och C där.

Alternativ 2 (via avr-libc):
http://www.nongnu.org/avr-libc/user-man ... eprom.html
Det är ändå en fördel om du läser databladet först!
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Så jag lär mig den hårda vägen...

Jasså ? Du har ju frågat här... :-)

Hur som helst, databladet har kodexempel både i assembler och C.
Med separata exempel för skrivning resp läsning. Det verkar som om
du inte har kollat databladet, men det är väl bara så som jag läser det...
DeeJay_Bamse
Inlägg: 61
Blev medlem: 19 november 2007, 21:43:08
Ort: Skövde

Inlägg av DeeJay_Bamse »

Jag har tittat i databladet men hittar ju inget där... Därför lär jag mig den hårda vägen och frågar och hittat andra program och försöker förstå hur andra gjort....

Men jag kanske har fel datablad??
Sitter med AVR ATmega32 datablad på 352 sidor.. Där hittar jag inga programexempel...
Tycker det borde finnas något om C-kommandona i en AVR med men hittar inte det heller..
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Inlägg av Norpan »

Sidan 23 å 24, eller kapitel 7.4
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men jag kanske har fel datablad??

Ingen aning, du anger ju inte vilket du har.

Jag högg det första bästa som search hittade hos Atmel. DOC2503.PDF :

http://www.atmel.com/dyn/resources/prod ... oc2503.pdf

346 sidor och det är sidan 18 och framåt "EEPROM Data Memory".
Kodexempel i ASM och C på sidan 21 och 22.

> Tycker det borde finnas något om C-kommandona i en AVR

Det finns inga "C-kommandon" i en AVR.

Däremot så bör det finnas en dokumentation till den C-kompilator
som du använder. Kolla där. Men om den inte har några färdiga
biblioteksfunktioner för hantering av EEPROM, så behöver det inte
finnas något där. Databladet för processorn beskriver vad man ska
göra, och det bör vara tillräckligt.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Precis som Sodjan säger, så finns det inga C-kommandon i en AVR. Däremot kan det ev. finnas EEPROM-stöd i funktionsbiblioteken till kompilatorn. Men det bör isåfall finnas i dokumentationen för kompilatorn. Annars gör man samma sak som i assembler. Läser databladet och programmerar lämpliga register för hanteringen av EEPROM:et.
DeeJay_Bamse
Inlägg: 61
Blev medlem: 19 november 2007, 21:43:08
Ort: Skövde

Inlägg av DeeJay_Bamse »

sodjan: Om du läser en gång till så skrev jag vilket datablad jag läste... Den för atmega32 (på 352 sidor).... Men för att vara exact så var det doc8155.pdf....
Tyvärr så läste jag på fel ställe... Läste på Memory Programming......

Ang C i AVR.... Det jag menade var C kommandona som verkar vara lite specifikt för AVR eller grunderna i C för AVR... För även om jag skrivit C program på PC förut så verkar AVR C ha lite specialgrejer.... Men har tagit ner avr-libc nu och lusläser....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Den för atmega32 (på 352 sidor)

Självklart såg jag sidantalet, men jag tänker inte ladda ner en massa
PDF'er bara för att kolla sidantalen. Så jäkla kul är det inte... :-)

Antingen aktuellt dokumentnummer, filnamn och/eller en länk till det.

> Men för att vara exact så var det doc8155.pdf....

Var gärna exakt, det spar tid för alla. Jag har kollat det och sökte efter
"EEPROM" och efter 11 click på "Find Next" så var jag i rätt kapitel och där
finns samma kodexempel som i det datablad som jag hittade.

Skillnaden är att det jag använde är för (bl.a) ATmega32 (vilket var det
som du skrev att du hade), medan det du har är för ATmega32A. Jag
har inte en aning om vad det kan vara för skillnad. Har du valt "A"
databladet med avsikt ?

> Det jag menade var C kommandona som verkar vara lite specifikt för AVR

Det är helt upp till kompilatorn, och det finns flera olika så vitt jag förstår,
vilket även databladet "varnar" för och hänvisar till dokumentationen för
den aktuella kompilatorn som man använder. Kodexempel skriva i C
i databladet är rellativt "neutrala" och använder inte några färdiga
EEPROM biblioteksfunktionen som kan finnas i olika produkter. Och det
är det nog enda rimliga sättet att skriva C-kodexempel på...
Skriv svar