[an error occurred while processing this directive]
|
Первый ответ понятен.
По второму - проверил работает.
Инициализацию массива я взял с чужой рабочей программы, посмотрел пример из книжки Кораблева - допускается объявление как я пытался сделать.
Так что, если есть ссылка откуда скачать стандарт ANSI С - не откажусь.
По третьему вопросу.
Прерывание у меня обьявлено как SIGNAL (SIG_OVERFLOW0).
Ничто не помешает ему корректно вычесть 1 из двух байт.
А вот собственно в программе при установке таймера может возникнуть ситуация, при которой после изменения одного байта произойдет прерывание таймера. Соответственно значение таймера может иметь погрешность по моему от 1 до 255 единиц.
По предложению Bill я написал вот такую процедуру обновления таймера:
void SafeUpdateTimer(u16 *p, u16 d)
{
u08 save_int = SREG;
cli();
*p=d;
SREG = save_int;
}
Замечания принимаются :-)
E-mail: info@telesys.ru