2. Настройка таймера и прерываний для ШИМ сделана с помощью мастера CVAVR http://www.avr123.nm.ru/z8.htm Исходники и симуляция в VMLAB - ATmega8 ATmega16
Он-лайн переводчик translate.ru по-прежнему доступен !
3. Пример настройки таймера в ATmega48 для генерации 2 ШИМ сигналов - исходник с комментариями и симуляция в AVR studio с хитростью для контроля временных интервалов.
У меня не кварц, а внутренний генератор. Выставлен на 3686400. Так делить легче: 3686400 / 1024 / 72 = 50 Гц. (По Вашему курсу) В ICC AVR нет конфигурации для ATmega48
В ICC вот какие есть модели МК: 8, 16, 32, 64, 103, 128, 161, 162, 163, 323, 603
Какая сдесь может быть ошибка? В мастере выставляю Clock 3686400. Clk ставлю 1024. TCNT0 выставляю в 178.
Что, не 50 Гц должно получится?
Причем сдесь VMLAB? Я говорю же, все по ДШ делаю и пользуюсь мастером в CVAVR. Если написано в документации, то это должно соответствовать 'в натуре', так сказать. Вот и проверяю осцилографом и еще до кучи, чтоб не ошибиться, мультиметром.
раз уж у вас есть осциллограф то померьте заодно тактовую частоту МК =) ну так на всякий случай, мало ли чо там... исходя из шима 32 Гц 32*72*1024 частота кварца примерно 2.5 мГц
Мур, не беспредельничай! Авр123 - ему простительно, он всегда так разговаривает и по-другому не умеет - все привыкли... <Digit>
В задании 6 курса, Вы красным по белому пишите. что некруглые частоты используются для точного значения частоты.
Внимание ! Мастер вычислил значение в регистре TCNT0 с которого должен считать Таймер_0 для переполнения 50 раз в секунду - это 0xB8 или 184 в "нормальном" == десятичном виде.
Давайте посчитаем, проверим вручную:
3686400 Гц / 1024 / (256-184) = 50 Гц ровненько!
(256-184) означает что таймер будет считать от 184 до 255 и после следующего добавления 1 к 255 в регистре возникнет 0 и произойдет переполнение таймера и возникнет соответствующее прерывание, если конечно оно разрешено и разрешены прерывания глобально - т.е. бит I в регистре SREG установлен.
0 это аналог 256 в положительном байте - Таймер_0 ведь 8-ми битный
Во-во. Классиков читать надо! Внутренний генератор имеет небольшой набор фиксированных неточных частот. То что вы меняете в программе подразумевает, что вы такую частоту обеспечите внешним кварцем. Если кварца нет, то частота внутренего генератора определяется значениями фьюзов (см. в даташите).
2 Configurator Суммируя все вышесказанное: 1. Частота которая выставляется в CVavr не есть частота внутреннего генератора, а частота на которой МК будет работать без разницы от внутреннего или внешнего генератора, т. е. если у меня стоит кварц на 16 МГц, то я выставляю 16 МГц, если у меня предполагается работа от внутреннего генератора на 1 МГц, то я выставляю 1 МГц. 2. Для того чтобы у тебя работала прошивка данная в Курсе, то тебе нужен внешний кварц на указанную частоту + 2 конденсатора (хотя очень часто видел что их не ставят, но лучше с ними).
Честно сказать, я так и невкурил, как мне выставить точную частоту 2ШИМ в 50 Гц. Этим что, никто не занимается? Ребят, вы как с Луны свалились. Вы можете подсказать, как это по шагам сделать, хоть примерно.
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.