реклама на сайте
подробности

 
 
> Не получается читать и писать массив в eeprom
-=Женек=-
сообщение May 1 2010, 09:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Господа, пытасюь записать массив в eeprom, прочитать его и вывести на экран. Выводятся нули.
Вот код.
Где я не прав?
Код
#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>


#include <disp.h>

#define MAX_DEVICES 5
#define SEARCH_ROM 0xF0
#define DS1990_FAMILY_CODE 1

//Global vaiable defination
unsigned char devices;

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x12;PORTD
   .equ __w1_bit=2
#endasm
#include <1wire.h>

unsigned char rom_code[MAX_DEVICES,9];

  
u08 variable;  
ui16 textcolor;    // color of text
ui16 backcolor;    // color of background

ui16 varvar;  
unsigned char str;
unsigned char i,j,a,b,c,d;
unsigned long serial;


eeprom unsigned char E_rom_code[5,9];
unsigned char eeprom *ptr_to_eeprom;
unsigned char *ptr_to_ram;
unsigned char rom_code2[MAX_DEVICES,9];


void main(void)
{

backcolor=0xBDF7;
textcolor=blue;

DDRA.0=1;
PORTA.0=1;
DDRD.2=0;          

lcd_init();
lcd_clr();        
fill_screen(0xbdf7);



for (i=0;i<5;i++)                //Заполняю массив
{
for (j=0;j<9;j++)
  {
   rom_code[i][j]=i;
   }
}

for (i=0;i<5;i++)                 //Вывожу содержимое массива в левую часть экрана
{
for (j=0;j<9;j++)
  {
    lcd_setxy(10+j*7,120-i*20);
    lcd_str_ram(rom_code[i][j],f8x14, textcolor);                  
  }
}


ptr_to_ram=rom_code;                  // Записываю переменную rom_code в eeprom
ptr_to_eeprom=E_rom_code;
while (*ptr_to_ram)
      *ptr_to_eeprom++=*ptr_to_ram++;

// copy the string e from EEPROM to
// the string r in RAM
ptr_to_eeprom=E_rom_code;                  // читаю из eeprom в новый массив rom_code2
ptr_to_ram=rom_code2;
while (*ptr_to_eeprom)
      *ptr_to_ram++=*ptr_to_eeprom++;


for (i=0;i<5;i++)                              // Вывожу в правую чать экрана содержимое  rom_code2
{
for (j=0;j<9;j++)
  {
    lcd_setxy(100+j*7,120-i*20);
    lcd_str_ram(rom_code2[i][j],f8x14, textcolor);                    //выводятся нули
  }

}
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=Женек=-
сообщение May 1 2010, 13:59
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



А есть разница между вариантами записи unsigned char eeprom rom_code[5,9] и eeprom unsigned char rom_code[5,9] ??

P.S. проблему решил поставив галку "preserve EEPROM" в настройках программирования. ВРодебы что-то получается, продолжаю экспериментировать.
Go to the top of the page
 
+Quote Post
V_G
сообщение May 5 2010, 00:46
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(-=Женек=- @ May 2 2010, 00:59) *
P.S. проблему решил поставив галку "preserve EEPROM" в настройках программирования.

Ну ясен перец, эту галку всегда надо ставить первым делом. Программа может быть правильная или нет, но сам процесс заливки новой версии программы без этой галки сотрет EEPROM.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016