ИМХО наверно надо в начале проверить новА ли инфа для записи. Т.е. если в ячейке тоже самое лежит то не нужно делать новую запись в нее того же самого.
при записи в еепром, так как она 16 битная, у меня цифры дублируются, как сделать что бы не дублировались?
Если речь идет о еепром, которая на борту АВР, то Вам надо документацию прочитать, Вы не найдете там упоминания о 16 битной еепром, потому что она 8-ми битная.
По поводу кода - по данному фрагменту ничего не ясно, может сможете поподробней объяснить.
ваш цикл не может делать дубль данных в EEPROM. если данные дублируются - это 100% из-за того, что дважды вызывается обработчик прерывания. ваш цикл будет длиться около 50 миллисекунд - это ОЧЕНЬ много по меркам AVR - вас предупреждали.
если прерывание у вас поступает более часто, нежели раз в 50 мс, то обязательно к моменту завершения обработчика уже снова придет запрос на это же самое прерывание, в результате немедля после его завершения прерывание снова обработается - вот вам и дубль.
не знаю, что вы там задумали такое, но вкачестве костыля могу порекомендовать перед выходом из обработчика сбросить флаг запроса прерывания.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Зарегистрирован: Вс мар 04, 2007 01:17:12 Сообщений: 690
Рейтинг сообщения:0
Просто мне нужно зафиксировать некоторые данные в конкретном режиме, поэтому я вручную пишу их в еепром, а потом анализирую. Режимы я сам сменяю. Новые данные будут только после того как я запишу одни и переключу режим. Так что медлительность еепром тут не проблема.
Я скачал всего 4.6 Мб - все расписано с нуля и по CVAVR и по VMLAB. То что нужно начинающиему по микроконтроллерам AVR и PIC и главное понятно - http://www.onlinedisk.ru/file/101436/ И там есть библиотека книг для свободного скачивания - т.е. книги то вообще на любой вкус - хоть Си хоть АСМ - выбирай что нравится, читай да учись. Рассказано где скачать все программы как поставить настроить запустить. и PROTEUS тоже.
Подскажите пожалуйста как в CVAVR открыть файл с прошивкой .hex и загрузить его в МК? Какой меню надо открывать и т.д.?
Вам надо открыть программатор CVAVR - в меню это микросхемка справа от красного жучка. Выбрать нужный МК и потом через меню файл открыть файл прошивки.
Alexeus писал(а):
Код:
if (BYTE[0] & 0b0000111) {};
if (BYTE[0] & (1<<0) & (1<<1) & (1<<2)) {};
-
Вот этому 0b0000111 соответствует ((1<<0)|(1<<1)|(1<<2))
Вопрос что нужно было Alexeus, если проверить на 0 BYTE[0], то Вы правы, а если узнать есть ли хотя бы в 1 из трех младших битов 1 , то Вы ошибаетесь.
во-первых, данное условие будет истинным всегда, если BYTE[0] не равно нулю - без разницы, какие биты в нем будут установлены. Нормальный компилятор вообще превратит при оптимизации это выражение в абсолютно ему аналогичное
Код:
if(BYTE[0]){};
во-вторых, я просто не понимаю, что делают вопросы по синтаксису Си в теме про компилятор?!
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения