| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Таймеры ATmega8515L |
| Автор: 85nav 14.12.2011, 16:55 | ||
| Следующая проблема у новичка. Программирую ATmega8515L, код пишу тоже в CodeVisionAVR. Устанавливаю таймер 0 выбираю системную тактовую частоту (на листе чип поставил частоту 1МГц). установил значение Clock Value на 997 кГЦ (или 977кГЦ не важно), установил прерывание таймера, начальное значение таймера (0B). В програме написал в функции прерывания PORTC.0=~PORTC.0. Ожидая получить на выходе мирцание диода примерно 2 раза в секунду. Проверил в Amtel AVR Studio 4 и в Isus. Все работало как надо. Прошил контроллер. Включил схему. Изначальне значения ножек правильные, но вот изменений во времени нет. Вопрос работает ли данный котроллер без внешнего кварца? Если да, то не понятно где устанавливать тактовую частоту системы при прошивке? Т.к. в программном коде она не указывается. А частота указываемая при прошивке в программе программатора (прошиваю с помощь WizardProg77-USB), как где-то вычатал я, указывается для синхронизации. Ее я тоже ставил 1МГц. Помогите разобраться пожалуйста, в чем проблема почему не работает таймер?
|
| Автор: UniBomb 14.12.2011, 17:19 |
| Режим тактирования мк задаётся с помощью fuse-битов. Они задаются в программе-прошивальщике. По умолчанию мк работает от внутренней rc-цепи на частоте 1 МГц. |
| Автор: 85nav 15.12.2011, 13:42 |
| Еще один вопрос тогда. Везеде пишут что fue-bit програмируется только при параллельном программирования. Это как? Это зависит от программатора или от написания кода? |
| Автор: UniBomb 15.12.2011, 14:34 |
| 85nav, Это и правда и нет. Сами по себе фузы можно шить любым программатором (isp, jtag и т.д.), но есть некоторые биты, недоступные какому-либо интерфейсу. Например бит SPIEN по интерфейсу isp недоступен, ибо этот бит отключает саму возможность прошивать через isp. Или можно неправильно сконфигурировать мк, сделав его непригодным для прошивания каким-либо способом. Например мк по ошибке сконфигурирован на работу от кварца, но в схеме его нет. Тогда мк попросту не заведётся. Есть два пути решения проблемы - аккуратно напаять кварц на выводы xtal или использовать параллельный программатор. Последний сам тактирует мк. Или вот если у мк вывод ресет совмещён с выводом какого-либо порта, то бит RSTDISBL отключит функцию ресета и мк станет непригоден для программирования через isp. И т.д и т.п. В общем надо просто открыть даташит на конкретный мк и изучить его фузы |
| Автор: 85nav 19.12.2011, 10:51 |
| Спасибо большое. Сам бы вряд ли догодался бы про fuse-bit. |
| Автор: UniBomb 19.12.2011, 12:05 |
| 85nav, но вообще, если как ты говоришь на симуляторах работает, а на схеме нет, то возможно ошибка в аппаратной части. Хотя и программная ошибка тоже не исключена. Приведи схему подключения и программу, посмотрим что ты там делал |
| Автор: 85nav 19.12.2011, 12:31 |
| Нет, теперь все работает. Просто регистр включаюций внутренний генератор был отключен. При программирование контроллера его поставил в "0" и все заработало. |