|
Таймеры atmega32a |
|
|
|
Dec 19 2014, 09:57
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-12-14
Пользователь №: 84 192

|
Здравствуйте Проблема возникла такая, есть у меня atmega32a китайский. постигаю таймеры. использую таймер0 (8 бит). Логика моих мыслей такова:
если там частота 16МГц а таймер считает до 256 то каждое переполнение таймера будет происходить (1 / 16 000 000) * 256 = 16 микросекунд (0,000016). Соответственно, что бы получить 1 секунду надо таких отрезков 62 500 (0,000016 * 62 500 = 1 сек.) Что бы особо не мучиться с 16 битными числами я разбил на две 8 битные, т.е. 250 и 250. Значит в прерывании по переполнению мы считаем первый счетчик, када он доходит до 250 мы увеличиваем второй и обнуляем первый. Сразу что скажу что cksel биты не менял, они все отключены, значит частота должна быть нормальной. В коде не устанавливаю предделитель для таймера. Внешнего кварца, как и осциллографа, не имею. замерить частоту не выходит. пробовал всю партию контроллеров (10 штук) результат один и тот же, либо у них у всех не 16 МГц, либо логика моих действий не верна.
|
|
|
|
|
 |
Ответов
|
Dec 22 2014, 05:57
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773

|
Цитата(alexeyv @ Dec 22 2014, 09:39)  Не проще использовать 16-ти разрядный в режиме CTC ? Один раз настроил - и будет Вам прерывание 1 раз в сек без всяких дополнительных счетчиков на Си/Асме Проще, конечно. Попробуйте настроить один раз без дополнительных счётчиков формирователь 1.000'000 секунды для частоты 7'890'123 Гц на 16-ти разрядном таймере в режиме CTC.
|
|
|
|
|
Dec 22 2014, 09:43
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773

|
Цитата(RabidRabbit @ Dec 22 2014, 12:35)  Будет частота 0,999993283, разве плохо? По мне, Плохо. И не частота, а период. Цитата(RabidRabbit @ Dec 22 2014, 12:35)  ...поди надо кварц специально отобранный... Частота взята для примера. Вот так студия отрабатывает такую частоту. Ничего не мешает в строке задания частоты установить требуемую и получить такой же результат.
|
|
|
|
|
Dec 23 2014, 08:47
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040

|
Цитата(akl @ Dec 22 2014, 12:43)  По мне, Плохо. И не частота, а период. А по-моему, очень даже неплохо. Чай не для сервера ntp  И кстати, батенька, вовсе не период, а именно частота: 7890123 / 256 / 30821 Вы то вообще нерабочий код выложили в посте от Dec 20 2014, 09:56  А человек Вам поверит и будет удивляться, почему не фурычит...
|
|
|
|
Сообщений в этой теме
ishpanec Таймеры atmega32a Dec 19 2014, 09:57 zombi Цитата(ishpanec @ Dec 19 2014, 13:57) рез... Dec 19 2014, 14:11 Dust112 ishpanec, Вы раздел 8-bit Timer/Counter0 with PWM... Dec 19 2014, 14:16 stells Цитата(ishpanec @ Dec 19 2014, 12:57) есл... Dec 19 2014, 14:26 demiurg1978 У меня такой способ получить 1 мс при 8 и 16 мгц:
... Dec 19 2014, 15:10 akl С точностью до такта можно временной интервал форм... Dec 20 2014, 09:56 ishpanec отвечу всем по порядку)
Цитата(zombi @ Dec 1... Dec 21 2014, 13:54 ishpanec Цитата(ishpanec @ Dec 21 2014, 14:54) не ... Dec 21 2014, 15:17 stells Цитата(ishpanec @ Dec 21 2014, 16:54) что... Dec 21 2014, 16:29 demiurg1978 Цитата(ishpanec @ Dec 21 2014, 19:54) с С... Dec 22 2014, 21:53 zombi получается Internal Calibrated RC Oscillator 1 MHz... Dec 21 2014, 16:06 ishpanec да, уже разобрался, всем спасибо за помощь!)
п... Dec 21 2014, 18:19 akl Ваш код дает интервал 1 секунды, за счёт сравнений... Dec 22 2014, 04:18 ishpanec Цитата(alexeyv @ Dec 22 2014, 05:39) Не п... Dec 22 2014, 12:43 akl Каждое прерывание Т0, в котором дополнительно чист... Dec 22 2014, 14:03 ishpanec Цитата(akl @ Dec 22 2014, 15:03) в которо... Dec 22 2014, 14:47 akl Да, действительно, период будет 256*30821=7890176/... Dec 24 2014, 03:17 RabidRabbit Я одного не понимаю, после первого переполнения в ... Dec 24 2014, 11:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|