Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятное поведение таймера atmega32 
V
    Опции темы
baldman88
Дата 26.5.2014, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Доброго всем времени суток. Понадобилось собрать таймер. Да еще и такой, чтобы микросекунды считал. Поставил резонатор на 16 МГц. Младший фьюз-бит прошит значением 0xFF. По идее таймер должен работать с частотой 16 Мгц. Но по факту он работает на 1 МГц (субъективное наблюдение, так как ни осцилографа ни частотомера нет). Таймер работает в режиме СТС с делителем равным единице. По подсчетам получается, что период у таймера 62.5 нс. В байте сравнения стоит значение 0x0F. Тогда он должен срабатывать каждую микросекунду (62.5 * 16 = 1000 нс = 1 мкс). А вот фиг там. Где мой промах и чего я не учел?
Заранее спасибо за помощь.

Это сообщение отредактировал(а) baldman88 - 29.5.2014, 17:47
PM MAIL   Вверх
Romikgy
Дата 26.5.2014, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



datasheet p.74


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
baldman88
Дата 26.5.2014, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Ага, спасибо, перечитал. Двойку я упустил из виду. Но все равно получается ерунда какая-то. Ставлю в OCR0A 0x00, оно вместо одной секунды до восьми считает. Ставлю 0xFF -- до шестнадцати. Бред.
PM MAIL   Вверх
baldman88
Дата 27.5.2014, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Хотя зачем двойка? Тут просто происходит декремент переменной-счетчика по прерыванию.
PM MAIL   Вверх
baldman88
Дата 28.5.2014, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Все оказалось банально. Обработчик не успевал вернуть управление за столь малое число тактов (при OCR0A=0x0F это 16 тактов). А вот когда в регистре сравнения значение 0xFF, которое в 16 раз больше задуманого 0x0F, время отсчитывается корректно и получается 16 секунд. Минимальное время (целое число микросекунд), за которое обработчик успевал отработать и вернуть управление вышло 3 микросекунды (OCR0A=0x2F, это 48 тактов). Так что для моих нужд у 8-битных AVR не хватает частоты.
PM MAIL   Вверх
Romikgy
Дата 28.5.2014, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



stm32


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
baldman88
Дата 28.5.2014, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Это да, буду на stm32f103  делать. Там частоты, по идее, должно хватить.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.