Спасибо Михалыч, к стати не против что я тебя или лучше вас так называю?
По таймеру, почему вы используете предделитель 1024, погрешность набирается.
Вот пример расчета с (
http://eugenemcu.ru/index/0-32 ), или я что-то опять не понял, ну не идут у меня часы точно в вашем варианте, а так хочется.
Инициализация таймеров на заданный интервал времени:
1. Введите тактовую частоту микроконтроллера: 8.000 МГц
2. Выберите коэффициент предделителя таймера: 1024
Биты SCn предделителя:
SCn0=1;
SCn1=0;
SCn2=1;
Частота тактирования таймера: 7812.5 Гц
3. Введите желаемый интервал времени, мс : 1000мс
Результаты:
Длительность одного такта таймера, мкс ... 128
Число тактов для заданного интервала ..... 7812.5
Число тактов (округлённо до целого) ....... 7812 (MSB=30, LSB=132)
Реальный интервал для принятого числа тактов, мс ....... 999.936
Погрешность в результате округления, % ....... -0.006399999999996453
Инициализация таймеров на заданный интервал времени:
1. Введите тактовую частоту микроконтроллера : 8.000 МГц
2. Выберите коэффициент предделителя таймера: 256
Биты SCn предделителя:
SCn0=0;
SCn1=0;
SCn2=1;
Частота тактирования таймера: 31250 Гц
3. Введите желаемый интервал времени, мс : 1000мс
Результаты:
Длительность одного такта таймера, мкс ... 32
Число тактов для заданного интервала ..... 31250
Число тактов (округлённо до целого) ....... 31250 (MSB=122, LSB=1
Реальный интервал для принятого числа тактов, мс ....... 1000
Погрешность в результате округления, % ....... 0
К стати мне 43.