-
- А зачем читать TCCR1? У меня InitSysTimer(), внутри - просто по железу, без оберток. Скрипач(285 знак., 17.10.2018 15:58 - 16:07)
- Между прочим, любой аппаратный таймер позволяет без всяких прерываний отмерять время, глядя на разницу между текущим значением и прошлым, хранящимся в переменной. Но не больше, чем время между двумя переполнениями, конечно. Активно этим пользуюсь. - SciFi(17.10.2018 16:05)
- Переход от "железного" таймера к абстракции "время в миллисекундах" стоит отдельной абстракции, IMHO. Скрипач(96 знак., 17.10.2018 16:09 - 16:12)
- Понеслось г..но по трубам. Может кто-то этим таймером детали считает, Вам какое дело? Удалите или переместите, пожалуйста, весь мусор про макросы и правильное использование таймеров. Если есть что сказать, то отвечайте на опрос. - Экспериментатор(17.10.2018 16:16, )
- Нах пшел! *) Иди считай детали таймером, у тебя компилятор ошибки выдаёт :) - Скрипач(17.10.2018 16:18)
- Ну это уже вопрос эстетики. Кстати, миллисекунды тоже могут работать без прерываний. У меня вот так: SciFi(262 знак., 17.10.2018 16:12)
- Понеслось г..но по трубам. Может кто-то этим таймером детали считает, Вам какое дело? Удалите или переместите, пожалуйста, весь мусор про макросы и правильное использование таймеров. Если есть что сказать, то отвечайте на опрос. - Экспериментатор(17.10.2018 16:16, )
- Переход от "железного" таймера к абстракции "время в миллисекундах" стоит отдельной абстракции, IMHO. Скрипач(96 знак., 17.10.2018 16:09 - 16:12)
- Между прочим, любой аппаратный таймер позволяет без всяких прерываний отмерять время, глядя на разницу между текущим значением и прошлым, хранящимся в переменной. Но не больше, чем время между двумя переполнениями, конечно. Активно этим пользуюсь. - SciFi(17.10.2018 16:05)
- макрос TCCR1_GET() - Vit(17.10.2018 15:33)
- Можно вопрос? Чем "v = TCCR1_GET()" лучше, чем "v = TCCR1"? - SciFi(17.10.2018 15:35)
- Да не то, чтобы лучше - скорее единообразно, выражает действие, и, если нужно, то напаковывается дополнительными плюшками и/или заменяется на функцию. Например, чтение асинхронного таймера без фриза. - Vit(17.10.2018 15:48)
- Можно вопрос? Чем "v = TCCR1_GET()" лучше, чем "v = TCCR1"? - SciFi(17.10.2018 15:35)
- функцией быть не может, только макросом. Наверное GET_CONTROL_TIMER(1) - VLLV(17.10.2018 13:51)
- Рискуете налететь на рекурсию. Например, для чтения переменной "a" без макроса никак не обойтись: "#define B() (a)". Ну а этот макрос просто обязан быть завёрнут в другой макрос: "#define C() (B())". В общем, вы поняли, куда я клоню. - SciFi(17.10.2018 14:52)
- Это уход от вопроса :) Насколько я помню AVR, там есть TCCR1H и TCCR1L, поэтому вполне можно написать инлайн функцию. Суть вопроса не в конкретном модуле, а в общем подходе. - Экспериментатор(17.10.2018 13:57, )
- ну так переформулируйте вопрос. я сегодня встал в 3, пропилил 400 км и отвечаю на совещаниях ) - VLLV(17.10.2018 15:20)
- Нужно функции организовывать не от железа, а от необходимого для потребителя функционала. - lloyd(17.10.2018 13:38)
- Потребительский функционал имеет теже проблемы. Кстати, жду Вашего ответа на опрос :) - Экспериментатор(17.10.2018 13:59, )
- А зачем читать TCCR1? У меня InitSysTimer(), внутри - просто по железу, без оберток. Скрипач(285 знак., 17.10.2018 15:58 - 16:07)