Код: Выделить всё
...
unsigned int addres[2]={0x80, 0x81};//Aдрес
unsigned char kodbut[2]={0xF7, 0xEF};//Код
...
int main(void) {
eeprom_write_block(kodbut, addres, 2);
...
}
Подскажите кто-нибудь сталкивался с подобной проблемой?
Код: Выделить всё
...
unsigned int addres[2]={0x80, 0x81};//Aдрес
unsigned char kodbut[2]={0xF7, 0xEF};//Код
...
int main(void) {
eeprom_write_block(kodbut, addres, 2);
...
}
Согласен, можно конечно написать цикл и использовать код занесения из даташита микроконроллера. Но хочется использовать встроенные ф-ии. Подскажите как надо.Flasher писал(а):Здравствуйте. Учите Си.
Подробна информация по этой и подобным ф-ям http://avr-libc.narod.ru/group__avr__ee ... 56a1620574 и http://samou4ka.net/page/chtenie-i-zapi ... odolzhenie.Flasher писал(а):Чтобы что-то использовать, нужно знать КАК это использовать. Прочитайте про данную встроенную функцию.
вторым аргументом Вы передаете адрес в ОЗУ массива addres. функция принимает только начальный адрес в EEPROM как значение, а не адрес в ОЗУ на массив с адресами в EEPROM!Подробна информация по этой и подобным ф-ям http://avr-libc.narod.ru/group__avr__ee ... 56a1620574 и http://samou4ka.net/page/chtenie-i-zapi ... odolzhenie.
Если я ошибаюсь поправьте меня.
unsigned int addres[2]={0x80, 0x81}; - мы объявляем буфер(массив) из адресов по которым надо записать необходимые биты;
unsigned char kodbut[2]={0xF7, 0xEF}; - объявляем буфер(массив из битов) необходимых данных, эти 2 массива должны по кол-ву элементов соответствовать друг другу.
eeprom_write_block(kodbut, addres, 2); или eeprom_write_block(kodbut, addres, sizeof(kodbut)); - записываем данные массива kodbut по адресу addres размером в 2(sizeof(kodbut)) байта. Вот впринципе как я думаю эту ф-ию использовать.
Код: Выделить всё
unsigned char address = 80;
unsigned char kodbut[2]={0xF7, 0xEF};
eeprom_write_block(kodbut, address, 2);Спасибо огромное теперь я понял где ошибалсяa_skr писал(а): вторым аргументом Вы передаете адрес в ОЗУ массива addres. функция принимает только начальный адрес в EEPROM как значение, а не адрес в ОЗУ на массив с адресами в EEPROM!Код: Выделить всё
unsigned char address = 80; unsigned char kodbut[2]={0xF7, 0xEF}; eeprom_write_block(kodbut, address, 2);
Размер у меня EEPROM=1024байт. И еще с какого адреса можно писать в EEPROM?a_skr писал(а):вроде так. и еще, у Вас EEPROM больше 128 байт?