Асинхронный таймер
Добавлено: Чт дек 01, 2016 21:20:04
Привет люди.
Спасите плиз, а то дня 4ре уже мучаюсь.
Написал на attiny4313 генератор 1Mhz на таймере с возможностью деления частоты (500Khz,250Khz и так далее), запитал его от 8Mhz кварца. (использовал таймер 16бит )
Для приема использую Atmega16A, таймер 0 тактую от сгенерированого сигнала (чтобы считал raiseы) и храню значение в 3х 8битных регистрах (один из них сам таймер).
Далее, настроил Таймер 2 на работу от часового кварца, с предделителем 128 и на прерывание по переполнению. Собственно когда идет прерывание, иду в него, беру значение таймера 0 и еше двих других регистров,обнуляю их , обрабатываю значение, шлю на HD44780 и выхожу из прерывания (в прерывании таймер 0 НЕ УСПЕВАЕТ ПЕРЕПОЛНИТСЯ, проверял по тактам, все в порядке).
Собственно вместо 500000 у меня 500062, вместо 250000 у меня 250031, вместо 125000 у меня 125016, вместо 62500 у меня 62508 и так далее....
Народ, откуда берутся лишние такты в таймере 0 ??!!!! притом длительность прерывания Таймера 2 не влияет, очистка предделителя таймера 2 вместе с обнулением таймера 0 и 2 пры выходе из прерывания таймера 2 ничего не дало...
п.с. глупый вопрос конечно, НО, возможно ли что кварц на 8Мгц не совсем 8Мгц дает, и у меня сигнал именно идет не 500000 а 500062 ?? разве может быть такая погрешность?? У меня нету просто осциллографа чтобы посмотреть длительность импульса на линии:((
скину фотки что я собрал, и еше проекты, помогите плиз
Добавлено after 8 minutes 13 seconds:
тут фотки:




Добавлено after 4 minutes 7 seconds:
есть еше видео, но что то не могу загрузить, 200Мб, все виснет
Спасите плиз, а то дня 4ре уже мучаюсь.
Написал на attiny4313 генератор 1Mhz на таймере с возможностью деления частоты (500Khz,250Khz и так далее), запитал его от 8Mhz кварца. (использовал таймер 16бит )
Для приема использую Atmega16A, таймер 0 тактую от сгенерированого сигнала (чтобы считал raiseы) и храню значение в 3х 8битных регистрах (один из них сам таймер).
Далее, настроил Таймер 2 на работу от часового кварца, с предделителем 128 и на прерывание по переполнению. Собственно когда идет прерывание, иду в него, беру значение таймера 0 и еше двих других регистров,обнуляю их , обрабатываю значение, шлю на HD44780 и выхожу из прерывания (в прерывании таймер 0 НЕ УСПЕВАЕТ ПЕРЕПОЛНИТСЯ, проверял по тактам, все в порядке).
Собственно вместо 500000 у меня 500062, вместо 250000 у меня 250031, вместо 125000 у меня 125016, вместо 62500 у меня 62508 и так далее....
Народ, откуда берутся лишние такты в таймере 0 ??!!!! притом длительность прерывания Таймера 2 не влияет, очистка предделителя таймера 2 вместе с обнулением таймера 0 и 2 пры выходе из прерывания таймера 2 ничего не дало...
п.с. глупый вопрос конечно, НО, возможно ли что кварц на 8Мгц не совсем 8Мгц дает, и у меня сигнал именно идет не 500000 а 500062 ?? разве может быть такая погрешность?? У меня нету просто осциллографа чтобы посмотреть длительность импульса на линии:((
скину фотки что я собрал, и еше проекты, помогите плиз
Добавлено after 8 minutes 13 seconds:
тут фотки:
Добавлено after 4 minutes 7 seconds:
есть еше видео, но что то не могу загрузить, 200Мб, все виснет