Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
// number of DS1820 devices
// connected to the 1 Wire bus
unsigned char ds1820_devices;
// DS1820 devices ROM code storage area,
// 9 bytes are used for each device
// (see the w1_search function description in the help)
unsigned char ds1820_rom_codes[MAX_DS1820][9];
После выполнения
ds1820_devices=w1_search(0xf0,ds1820_rom_codes);
нужно сохранить в еепром
двумерный массив ds1820_rom_codes.
в еепром создаю массив для записи ром кодов:
eeprom unsigned char v_ds1820_rom_codes[MAX_DS1820][9];
потом в цикле for пишу:
a2++;
v_ds1820_rom_codes[a2][0]=ds1820_rom_codes[a2][0];
sprintf(buffer,"E%03u N%03u",&v_ds1820_rom_codes[a2][0],&ds1820_rom_codes[a2][0]);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buffer);
Но на лцд выводится:
E008 N512
E017 N521
E026 N530
E035 N539
(E-что в еепром)
Вы видите что числа отличаются на 504?
Но если сравнивать содержимое v_ds1820_rom_codes и ds1820_rom_codes:
a3++;
if(ds1820_rom_codes[a3][0]==(v_ds1820_rom_codes[a3][0]))
{
counter0++;
sprintf(buffer,"N%u OK",counter0);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buffer);
}
То равенство выполняется!!!
Почему?