а если понадобится несколько заходов на эту проверку, то будет дольше.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Если конвеер и динамическая индикация, то, как вариант, можно обойтись без прерываний и проверки флагов.. Просчитать гарантированное количество циклов межу записями в ЕЕПРОМ.Just_Fluffy писал(а):И пинать конвейер можно либо прерыванием, либо периодической проверкой флага.
а где я сказал, что нужно делать только вот так и никак иначе? я просто предложил вариант, когда не будет блокировки от ожидания окончания записи байта.Just_Fluffy писал(а):Просто мне не нравятся категоричные утверждения, что нужно делать только вот так и никак иначе.
к сожалению, каждый байт в еепром пишется с предварительным стиранием. поэтому в мега8 и получается так долго - 8 мс.Just_Fluffy писал(а):А если там биты только гасятся - то писать без стирания
Со всем уважением к вам, но я считаю ваше утверждение категоричныи и преподнесенным, как единственно верноеStarichok51 писал(а):а где я сказал, что нужно делать только вот так и никак иначе?
Опять же, это утверждение для восьмой меги. У других мег еще бывают биты ЕЕРМх. И если мы обсуждаем уже ЕЕПРОМку, то запись отдельно от стирания в АВРках существует и может быть применена для увеличения ресурса ЕЕПРОМки.Starichok51 писал(а):каждый байт в еепром пишется с предварительным стиранием
обычное дело))Starichok51 писал(а):моё слово "нужно" было воспринято, как как единственно верное
Код: Выделить всё
/*
Пользователь задаёт время работы таймера (timer_preset).
После секундной паузы включется лампа и timer начинает обратный отсчёт.
Для восстановления текущего значения таймера, сохраняется время его стопа (timer_stop_time)
на основании которого происходит вычисление значения таймера после подачи питания.
Время наработки (total_hour и total_second) считается при включенной лампе.
Для уменьшения износа EEPROM каждую секунду в массив total_second пишется только 1 бит,
т.о. заполнение всего массива происходит один раз за один час работы лампы, что
гарантирует время работы ус-ва более 10 лет, при заявленных 100000 циклах записи EEPROM.
Реально же, ресурс EEPROM достигает 3 млн, что больше чем на порядок от заявленных Atmel!
Для других EEPROM-переменных для этих целей используются кольцевые буферы.
Для total_hour и timer_preset используется дублирование и мажоритарный выбор при включении.
*/
/*
uint16_t timer_preset - стартовое значение таймера обратного отсчёта (еепром)
uint16_t timer - текущее значение таймера на экране
uint32_t timer_stop_time - время выключения таймера (еепром) (0, при timer_preset = 0)
= timer_preset + total_hour + total_second
не записывается при timer (timer_preset) == 0.
bool lamp - состояние лампы (еепром)
uint16_t total_hour - время наработки, часы - на экране (еепром)
uint16_t total_second - время наработки, секунды (еепром)
*/
В нулевых помню на импортном оборудовании чипы лететь начинали через 4-5 лет непрерывной работы. Тогда напрямую из испании чипы выписывали. Просто меняли в панельках.OKF писал(а):На >10 лет работы должно хватить, при заявленных 100000 циклах записи EEPROM.