Таймеры в микроконтроллерах

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Таймеры в микроконтроллерах

Сообщение Configurator » 28 ноя 2007, 15:03

Это топик о таймерах в микроконтроллерах.
Для чего нужны таймеры и как их настраивать.
Режимы работы, счетчики, сравнение, шим, прерывание от таймера.

Использование мастеров для настройки таймеров.

1. Вот пример настройки таймера AVR с помощью мастера
http://avr123.nm.ru/z6.htm

2. Настройка таймера и прерываний для ШИМ сделана с помощью мастера CVAVR
http://www.avr123.nm.ru/z8.htm
Исходники и симуляция в VMLAB - ATmega8 ATmega16

Книги по микроконтроллерам и электронике
http://avr123.nm.ru

Апноут ATMEL по использованию и настройке Таймеров AVR
http://www.gaw.ru/pdf/Atmel/app/avr/AVR130.pdf

"Setup and Use the AVR Timers"

Он-лайн переводчик translate.ru по-прежнему доступен !


3. Пример настройки таймера в ATmega48 для генерации 2 ШИМ сигналов - исходник
с комментариями и симуляция в AVR studio с хитростью для контроля временных интервалов.

в прицепе.

========================================================

На ATmega48 делаю 2 ШИМ. Все по ДШ.
Частота 50 Гц.

Код:
Код: Выделить всё
int impulse = 0x80;

DDRD=0x60;

TCCR0A=0xB3;
TCCR0B=0x05;

TCNT0=0xB8;

OCR0A=0x00;
OCR0B=0x00;

while(1)
{
OCR0A=impulse;
OCR0B=impulse; 
}


В итоге все держится на 32 Гц. И чтоб не делал, частота не меняется. Подскажите, пожалуйста! :cry:
Вложения
m48_pwm_timer0.rar
(7.96 КиБ) Скачиваний: 32
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение avr123.nm.ru » 28 ноя 2007, 15:22

А кварц какой частоты ?

Ваш выкладки напишите.

Сконфигурируйте ШИМ мастером ICC - http://www.avr123.nm.ru/z6.htm

VMLAB - Симулятор полезен в отладке !
http://kazus.ru/forum/topics/f_58817.html#58817
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: 2PWM

Сообщение Configurator » 28 ноя 2007, 15:29

У меня не кварц, а внутренний генератор.
Выставлен на 3686400. Так делить легче:
3686400 / 1024 / 72 = 50 Гц. (По Вашему курсу)
В ICC AVR нет конфигурации для ATmega48 :cry:
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение avr123.nm.ru » 28 ноя 2007, 15:36

Configurator писал(а):У меня не кварц, а внутренний генератор.
Выставлен на 3686400.


КАК ??? НАУЧИТЕ !!!

У вас какой то супер-пупер и экстра МК ???

Еще не прояснилось у вас как бы VMLAB показал вашу ошибку ?

А на какой частоте работают МК в симуляторах ?

Добавлено спустя 2 минуты 55 секунд:
Configurator писал(а):В ICC AVR нет конфигурации для ATmega48 :cry:


СТРАННО ! У МОЕГО ЕСТЬ !

У вас всё какое то особенное! и ICC особенный и даташит со странной частотой генератора. :o
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: 2PWM

Сообщение Configurator » 28 ноя 2007, 16:00

В ICC вот какие есть модели МК:
8, 16, 32, 64, 103, 128, 161, 162, 163, 323, 603

Какая сдесь может быть ошибка?
В мастере выставляю Clock 3686400.
Clk ставлю 1024.
TCNT0 выставляю в 178.

Что, не 50 Гц должно получится?

Причем сдесь VMLAB? Я говорю же, все по ДШ делаю и пользуюсь мастером в CVAVR.
Если написано в документации, то это должно соответствовать 'в натуре', так сказать. Вот и проверяю осцилографом и еще до кучи, чтоб не ошибиться, мультиметром.
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение Myp » 28 ноя 2007, 16:21

и мне и мне
научите как мне выставить внутренний генератор на 3686400
ато я тоже хочу такую суперчастоту

ато блин фьюзами неудобные частоты выставляются...



раз уж у вас есть осциллограф то померьте заодно тактовую частоту МК =)
ну так на всякий случай, мало ли чо там... :lol:
исходя из шима 32 Гц
32*72*1024 частота кварца примерно 2.5 мГц

Мур, не беспредельничай! Авр123 - ему простительно, он всегда так разговаривает и по-другому не умеет - все привыкли...;)
<Digit>
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: 2PWM

Сообщение Master » 28 ноя 2007, 16:27

Харош с новеньких прикалываться. :x

Добавлено спустя 5 минут 1 секунду:
Наверное частота
3,686400
или
36,86400
CVavr не позволяет выставить частоту выше 40 МГц
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: 2PWM

Сообщение Configurator » 28 ноя 2007, 16:42

Я не прикалываюсь. Смотрите рисунок

Изображение
Вложения
рисунок (2).rar
(9.18 КиБ) Скачиваний: 31
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение avr123.nm.ru » 28 ноя 2007, 16:53

Master писал(а):Харош с новеньких прикалываться. :x


Он сам над собой прикалывается !

Я ему уже сказал выше что мега48 есть в мастере ICC - он продолжает УПИРАТЬСЯ:

Configurator писал(а):В ICC вот какие есть модели МК:
8, 16, 32, 64, 103, 128, 161, 162, 163, 323, 603


Думаю и картинка врядли его убедит ...

Изображение

Configurator писал(а):- В мастере выставляю Clock 3686400.
- все по ДШ делаю ...
- У меня не кварц, а внутренний генератор.


Покажите ГДЕ в ДАТАШИТ указана частота для внутреннего генератора 3686400

Добавлено спустя 6 минут 9 секунд:
Configurator писал(а):Я не прикалываюсь. Смотрите рисунок
Изображение


И где тут написано что это внутренний генератор ???

Configurator писал(а):Причем сдесь VMLAB?


Я надеюсь вы хоть чуть чуть подумаете ! Вопросы наводящие задал ведь. Повторю:

На какой частоте работает МК в симуляторе ?

А реальный МК на какой частоте работает ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: 2PWM

Сообщение Configurator » 28 ноя 2007, 16:57

В задании 6 курса, Вы красным по белому пишите. что некруглые частоты используются для точного значения частоты.
Внимание ! Мастер вычислил значение в регистре TCNT0
с которого должен считать Таймер_0 для переполнения 50 раз в секунду - это 0xB8 или 184 в "нормальном" == десятичном виде.

Давайте посчитаем, проверим вручную:

3686400 Гц / 1024 / (256-184) = 50 Гц ровненько!

(256-184) означает что таймер будет считать от 184 до 255 и после следующего добавления 1 к 255 в регистре возникнет 0 и произойдет переполнение таймера и возникнет соответствующее прерывание, если конечно оно разрешено и разрешены прерывания глобально - т.е. бит I в регистре SREG установлен.

0 это аналог 256 в положительном байте -
Таймер_0 ведь 8-ми битный


Если я ошибаюсь, подскажите, как получить 50 Гц?
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение avr123.nm.ru » 28 ноя 2007, 17:03

Использовать кварц на 3686400 Гц

Добавлено спустя 1 минуту 21 секунду:
Configurator писал(а):В задании 6 курса, Вы красным по белому пишите. что некруглые частоты используются для точного значения частоты.


Но надеюсь там не написано что ВНУТРЕННИЙ ГЕНЕРАТОР может давать такие частоты !

Вы страницу курса http://avr123.nm.ru/02.htm "Устройство AVR" - читали ?

Там в начале есть раздел "Вот основные параметры AVR ... " и указаны частоты генератора.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: 2PWM

Сообщение SSG » 28 ноя 2007, 19:22

avr123.nm.ru писал(а):Вы страницу курса http://avr123.nm.ru/02.htm "Устройство AVR" - читали ?

Во-во. Классиков читать надо! :)
Внутренний генератор имеет небольшой набор фиксированных неточных частот. То что вы меняете в программе подразумевает, что вы такую частоту обеспечите внешним кварцем. Если кварца нет, то частота внутренего генератора определяется значениями фьюзов (см. в даташите).
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: 2PWM

Сообщение Master » 28 ноя 2007, 21:10

2 Configurator
Суммируя все вышесказанное:
1. Частота которая выставляется в CVavr не есть частота внутреннего генератора, а частота на которой МК будет работать без разницы от внутреннего или внешнего генератора, т. е. если у меня стоит кварц на 16 МГц, то я выставляю 16 МГц, если у меня предполагается работа от внутреннего генератора на 1 МГц, то я выставляю 1 МГц.
2. Для того чтобы у тебя работала прошивка данная в Курсе, то тебе нужен внешний кварц на указанную частоту + 2 конденсатора (хотя очень часто видел что их не ставят, но лучше с ними).
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: 2PWM

Сообщение Configurator » 30 ноя 2007, 11:49

Честно сказать, я так и невкурил, как мне выставить точную частоту 2ШИМ в 50 Гц.
Этим что, никто не занимается? Ребят, вы как с Луны свалились.
Вы можете подсказать, как это по шагам сделать, хоть примерно.
Configurator
 
Сообщения: 11
Зарегистрирован: 28 ноя 2007, 14:57

Re: 2PWM

Сообщение avr123.nm.ru » 30 ноя 2007, 15:10

Strijar писал(а):Я сильно не задумываясь - выставил минимальную частоту таймера - повесил в обработчике "мигалку" и засек секундомером частоту. Потом вывел из нее частоту контроллера. Оказалось 8мгц. Залез в даташит и убедился, что по умолчанию это так и есть.


Как раз таки и НЕТ !

Default Clock Source
The device is shipped with internal RC oscillator at 8.0MHz and with the fuse CKDIV8 programmed,
resulting in 1.0MHz system clock.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6