char src[] = "12345";
eeprom_update_block ((void*)src, (void *)0, 5);
А как программа узнает где эта переменная должна находиться?a_skr писал(а):можно вызвать одну функцию. сама запишет (при необходимости) 5 символов:
char src[] = "12345";
eeprom_update_block ((void*)src, (void *)0, 5);
В яндекс вбиваешь вопрос свой и получишь что то типа такого:Ромыч писал(а):как записать в еепром строку длинной в 5 символов

a_skr писал(а):а я не заводил переменной EEMEM, а указал явный адрес в EEPROM - ноль (второй параметр функции eeprom_update_block) и копирую туда строку src из ОЗУ. можно завести и переменную в EEPROM. вопрос был "как записать в еепром строку длиной 5 символов".
ну да, а как иначе? Можно держать массив в памяти и по нему смотреть где ноль. или при очистке значения (установке его в ноль) запоминаешь где-нить номер ячейки. И при записи просто пишешь в этот номер. Но тут надо при записи тогда искать новый ноль, если у тебя может сразу следовать новая запись.Ромыч писал(а):есть, скажем, массив[20] с полезными 8 ячейками. чтобы добавить девятую надо искать первый ноль в массиве (если полезное значение в любом случае !=0)?
Код: Выделить всё
main.c:78: error: 'TCCR0' undeclared (first use in this function)
main.c:78: error: (Each undeclared identifier is reported only once
main.c:78: error: for each function it appears in.)
main.c:79: error: 'TIMSK' undeclared (first use in this function)
main.c: In function '__vector_16':
main.c:91: error: 'TCCR0' undeclared (first use in this function)
make.exe: *** [main.o] Error 1
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
Что пробовать то Есть файл - костыль io.h в нем конкретно для каждого мк прописан заголовочный файл, который подходит для каждого мк.Ромыч писал(а):а если просто atmega88 попробовать? обычно всякие PU, L и прочие окончания не ставятся
avr-gcc -mmcu=atmega88pa -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 3123.o -MF dep/3123.o.d -c ../3123.c