Stránka 1 z 1

Funkce EEPROM u AVR

Napsal: 26 čer 2014, 18:19
od Karel4
Zdravím všechny.
Potřeboval bych poradit, jak na funkce pracující s EEPROM u AVR. Samozřejmě jsem mrknul zde http://www.atmel.com/webdoc/AVRLibcRefe ... eprom.html, ale po napsání kódu v C a spuštění simulátoru Atmel studia 6 se hodnota v EEPROM neobjeví, respektive objeví, ale na zcela jiném místě a to hned dvakrát.
Měl byste někdo po ruce krátký kód, jak na to? Podotýkám, že jsem to zkoušel jen na simulátoru AVR Studia 6 a předpokládám, že by to v něm mělo chodit. Ohledně syntaxe funkce, zkoušel jsem ze zoufalství už i více variant, např.

Kód: Vybrat vše

#include <avr/eeprom.h>
   ........
//uint8_t  EEMEM adress ;
uint8_t adress = 0x00 ;
   ........
eeprom_write_byte(0x00,0xcc); 
eeprom_write_byte(&adress,0xcc);
Kód se vždy zkompiloval bez chyb. Díky za reakce k věci, Karel. :-)

Napsal: 26 čer 2014, 20:13
od AB1

Kód: Vybrat vše

uint8_t  EEMEM eevar; 
uint16_t adr2 = 0x05; 


int main()
{

// 1. zapíšeme do proměnné eevar (adresu určí překladač)
eeprom_write_byte(&eevar,0x11); 

// 2. zapíšeme na adresu 3
eeprom_write_byte((uint8_t*)0x03,0x22); 

// 3. zapíšeme na adresu uloženou v proměnné adr2
eeprom_write_byte((uint8_t*)adr2,0x33); 

Napsal: 26 čer 2014, 20:40
od Karel4
Tak jsem vyzkoušel doporučené a nic. Pokud jsem vložil

Kód: Vybrat vše

eeprom_write_byte((uint8_t*)adr2,0x33); 
, hodilo to dokonce hlášku
Warning 1 cast to pointer from integer of different size [-Wint-to-pointer-cast]
Bez tohoto kodu se to zkompilovalo bez varování, ale byte se objevil na zcela jiném místě v prvním řádku eeprom a dvakrát, viz obr.

EDIT: To varování zmizelo po definici proměnné

Kód: Vybrat vše

uint16_t adr2 = 0x05;
tedy byl problém v typu proměnné, ale nadále se byte dat ukládá jinam.

Napsal: 26 čer 2014, 21:31
od AB1
U mne to chodí.
Máš v simulátoru nastavený správný typ Avr?

Napsal: 26 čer 2014, 21:55
od Karel4
navolen mám ATmega8A, ale zatím to jen zkouším na simulátoru a bohužel, nadále to zapisuje na jiný pozice. Evidentně je něco špatně nastaveno :-( Co máš za Studio ?

Napsal: 26 čer 2014, 22:17
od AB1
Avrstudio 4.17.666
Winavr 20100110
Mega88

Napsal: 27 čer 2014, 18:21
od Karel4
Tak sláva, už to chodí. Předchozí verze studia byla 6.1, v něm jsem kdysi vytvořil projekt. Pak jsem jednoho dne nainstaloval studio 6.2 a použil k vyzkoušení zápisu do eeprom projekt založený ve studiu 6.1. Zkoušel jsem ty funkce vložit zkušebně i v jiných projektech studia 6.1 a je to nefunkční. Stačí ovšem vytvořit nový projekt ve studiu 6.2 a vše pracuje správně. Dva dny v čudu. Pozitivní věc - na tohle už nikdy nezapomenu :roll: Každopádně díky za reakci.