Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
1.png [ 66.59 КБ | Просмотров: 11473 ]
[url]https://lektsii.com/1-45344.html[/url]
[attachment=0]1.png[/attachment]
|
|
|
|
Добавлено: 08 сен 2018, 17:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
Привет! Нет, не путаю. Прескалер - это не коэффициент деления, а счетчик с этим коэффициентом. Аппаратный счетчик, а не виртуальный. И, как я понимаю, он "крутится" и считает независимо от того, включен в данный момент таймер, или нет. Предположим, что Fкамня = 4000000 Гц, и Кпрескалера = 64. Это значит, что таймер будет "тикать" каждые 16 мкс, по переполнению прескалера. Если таймер активировать в тот момент, когда в крескалере УЖЕ будет b#00111111, то таймер начнет считать уже на следующий машинный такт (через 0,25 мск), а если таймер включить, когда в прескалере будет всего b#00000001, то первый "тик" таймера произойдет аж через 16 мкс! То есть, в зависимости от того, в какой момент будет активирован таймер, возникает не нормируемая задержка в пределах от 250 нс до 16 мкс. Отсюда и возникает вопрос о том, как обнулять счетчик прескалера перед запуском таймера, чтобы исключить или минимизировать эту аппаратную, но не предсказуемую, ошибку при точном измерении отрезков времени. Кажется, в старой книжке Евстифеева такой режим описан (когда-то читал, не могу сейчас найти), но на практике реализовать его тогда не удалось, а сейчас снова возникла эта проблема. Вот и поинтересовался у сообщества, мо-быть кто-то знает, как это делается. Требуется считать время с точностью не хуже 1 мкс Мегой 328 с 16 МГц кварцем.
Привет! Нет, не путаю. Прескалер - это не коэффициент деления, а счетчик с этим коэффициентом. Аппаратный счетчик, а не виртуальный. И, как я понимаю, он "крутится" и считает независимо от того, включен в данный момент таймер, или нет. Предположим, что Fкамня = 4000000 Гц, и Кпрескалера = 64. Это значит, что таймер будет "тикать" каждые 16 мкс, по переполнению прескалера. Если таймер активировать в тот момент, когда в крескалере УЖЕ будет b#00111111, то таймер начнет считать уже на следующий машинный такт (через 0,25 мск), а если таймер включить, когда в прескалере будет всего b#00000001, то первый "тик" таймера произойдет аж через 16 мкс! То есть, в зависимости от того, в какой момент будет активирован таймер, возникает не нормируемая задержка в пределах от 250 нс до 16 мкс. Отсюда и возникает вопрос о том, как обнулять счетчик прескалера перед запуском таймера, чтобы исключить или минимизировать эту аппаратную, но не предсказуемую, ошибку при точном измерении отрезков времени. Кажется, в старой книжке Евстифеева такой режим описан (когда-то читал, не могу сейчас найти), но на практике реализовать его тогда не удалось, а сейчас снова возникла эта проблема. Вот и поинтересовался у сообщества, мо-быть кто-то знает, как это делается. Требуется считать время с точностью не хуже 1 мкс Мегой 328 с 16 МГц кварцем.
|
|
|
|
Добавлено: 08 сен 2018, 14:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
Привет! "но при этом счетный регистр прескалера сохраняет накопленное значение" Понятие prescaler не с чем не путаете? Потому что prescaler - это значение (коэффициент) на которое делится частота генератора таймера. Соответственно там ничего не накапливается. Или я чего то не так понял?
Привет! "но при этом счетный регистр прескалера сохраняет накопленное значение" Понятие prescaler не с чем не путаете? Потому что prescaler - это значение (коэффициент) на которое делится частота генератора таймера. Соответственно там ничего не накапливается. Или я чего то не так понял?
|
|
|
|
Добавлено: 08 сен 2018, 11:45 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
[quote="Гость"]Можно ли управлять этим пином программно, допустим, по прерыванию другого таймера, не дергая PD5 "снаружи"? [/quote] Вопрос снят - моделирование в АБ показало возможность программного управления "счетчиком событий" на Timer1.
Обнулять прескалеры таймеров по-прежнему не получается. ((( Подскажите, плз, если есть такая возможность.
|
|
|
|
Добавлено: 07 сен 2018, 14:23 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
Доброго времени. Возникла пара вопросов не совсем по АБ, но все же:
Таймер1 АТМега*** может работать в режиме счета внешних событий. При этом внешний тактовый (счетный) сигнал должен подаваться на вход Т1 (у Меги328 это вроде пин PD5). Можно ли управлять этим пином программно, допустим, по прерыванию другого таймера, не дергая PD5 "снаружи"?
Можно ли как-то принудительно обнулять регистр прескалера таймера (любого)? Регистр сравнения OCR** обнуляется, допустим, при совпадении, но при этом счетный регистр прескалера сохраняет накопленное значение, а это вносит довольно заметную ошибку при измерении коротких временнЫх интервалов.
Доброго времени. Возникла пара вопросов не совсем по АБ, но все же:
Таймер1 АТМега*** может работать в режиме счета внешних событий. При этом внешний тактовый (счетный) сигнал должен подаваться на вход Т1 (у Меги328 это вроде пин PD5). Можно ли управлять этим пином программно, допустим, по прерыванию другого таймера, не дергая PD5 "снаружи"?
Можно ли как-то принудительно обнулять регистр прескалера таймера (любого)? Регистр сравнения OCR** обнуляется, допустим, при совпадении, но при этом счетный регистр прескалера сохраняет накопленное значение, а это вносит довольно заметную ошибку при измерении коротких временнЫх интервалов.
|
|
|
|
Добавлено: 07 сен 2018, 10:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
1 используй Sheft+F3 - это актуальное представление данных в коде (другие варианты остались с ранних версий для совместимости) 2 заданные в макросе параметры можно использовать как угодно в теле макроса. при компиляции программы все параметры просто заменяются прописанными значениями 3 кусок кода можно вставить только скрином (ну или скинуть файл вкладки)
1 используй Sheft+F3 - это актуальное представление данных в коде (другие варианты остались с ранних версий для совместимости) 2 заданные в макросе параметры можно использовать как угодно в теле макроса. при компиляции программы все параметры просто заменяются прописанными значениями 3 кусок кода можно вставить только скрином (ну или скинуть файл вкладки)
|
|
|
|
Добавлено: 23 июн 2018, 00:24 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
[quote="sckameikin22"]И как сейчас идет работа?[/quote]Если вопрос адресован мне, то ответ - успешно. :) Учусь понемногу.
Появились очередные вопросы: 1) При размещении данных непосредственно в коде программы, строки с данными маркируются маленькими черными квадратами в начале строки (Sheeft+F3). Но мне встречалась запись и другого типа, когда в начале строки стоит "DB:", а затем символьные данные. В чем отличие этих типов записей, и когда применяется первый тип, а когда второй? 2) Можно ли многострочную запись первого типа (массив данных) с именами меток перед каждой строкой (D_1, D_2, и т.д.), использовать в пользовательских макросах c заданными параметрами, указывая в качестве параметра номер строки (D_~1, D_~2, и т.д.)? Если можно, то как это сделать? Поясню: строки одинаковые, но отличаются друг от друга "в мелочах", и в зависимости от условий мне нужно выводить на печать ту, или иную строку. 3) Как в текст сообщения вставить кусок кода из АБ? Сделать скрин нужного фрагмента, и добавить его как рисунок в сообщение, или есть другой способ?
|
|
|
|
Добавлено: 22 июн 2018, 09:36 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
И как сейчас идет работа?
И как сейчас идет работа?
|
|
|
|
Добавлено: 19 июн 2018, 11:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
[quote="Гость"]И все же, в какой кодировке посылает символы?[/quote] по умолчанию ASCII
|
|
|
|
Добавлено: 18 июн 2018, 12:37 |
|
|
|
|
|
Заголовок сообщения: |
Re: Начинающим программировать в АБ |
Цитата |
|
И все же, в какой кодировке посылает символы на UART АБ? Термопринтер, который я планирую установить в устройство, поддерживает десятка три таблиц, в т.ч. несколько с кириллицей. Какую из них выбрать для работы?
И все же, в какой кодировке посылает символы на UART АБ? Термопринтер, который я планирую установить в устройство, поддерживает десятка три таблиц, в т.ч. несколько с кириллицей. Какую из них выбрать для работы?
|
|
|
|
Добавлено: 18 июн 2018, 09:10 |
|
|
|
|