![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Доброго всем времени суток. Понадобилось собрать таймер. Да еще и такой, чтобы микросекунды считал. Поставил резонатор на 16 МГц. Младший фьюз-бит прошит значением 0xFF. По идее таймер должен работать с частотой 16 Мгц. Но по факту он работает на 1 МГц (субъективное наблюдение, так как ни осцилографа ни частотомера нет). Таймер работает в режиме СТС с делителем равным единице. По подсчетам получается, что период у таймера 62.5 нс. В байте сравнения стоит значение 0x0F. Тогда он должен срабатывать каждую микросекунду (62.5 * 16 = 1000 нс = 1 мкс). А вот фиг там. Где мой промах и чего я не учел?
Заранее спасибо за помощь. Это сообщение отредактировал(а) baldman88 - 29.5.2014, 17:47 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
datasheet p.74
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Ага, спасибо, перечитал. Двойку я упустил из виду. Но все равно получается ерунда какая-то. Ставлю в OCR0A 0x00, оно вместо одной секунды до восьми считает. Ставлю 0xFF -- до шестнадцати. Бред.
|
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Хотя зачем двойка? Тут просто происходит декремент переменной-счетчика по прерыванию.
|
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Все оказалось банально. Обработчик не успевал вернуть управление за столь малое число тактов (при OCR0A=0x0F это 16 тактов). А вот когда в регистре сравнения значение 0xFF, которое в 16 раз больше задуманого 0x0F, время отсчитывается корректно и получается 16 секунд. Минимальное время (целое число микросекунд), за которое обработчик успевал отработать и вернуть управление вышло 3 микросекунды (OCR0A=0x2F, это 48 тактов). Так что для моих нужд у 8-битных AVR не хватает частоты.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
stm32
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| baldman88 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Это да, буду на stm32f103 делать. Там частоты, по идее, должно хватить.
|
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |