roboforum.ru

Технический форум по робототехнике.

Прерывание. Динамическое изменение...

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

Прерывание. Динамическое изменение...

Сообщение Pacaken » 16 мар 2012, 00:12

Здравствуйте!
Не получается реализовать одну вещь. Может кто-то сталкивался с этим или видел подобный пример? Спомощью V-USB я изменяю регистры для включения таймера0 в mega16. Тоесть передаю настройки регистров, затем записываю их и по идее должен начать мигать светодиод по таймеру. То что в регистры записывается -я проверял. Но сам таймер запускатся не хочет. В чем проблема?
И у меня напрашивается 2 вопроса:
1) Можно ли в описании прерывания использовать динамические переменные?
К примеру:
ISR (TIMER0_OVF_vect)
{
sei();
_c_h++;
if(_c_h==16)
{
PORTC^=datain[1];
_c_h=0;
}
TCNT0=0;
}
Тоесть datain[1] храниться значение регистра, которое передается через USB, тоесть переодически меняется.
(да datain обьявлял как volatile)

2) Опять через USB, возможно ли включение таймера? Тоесть, к примеру, сначала что-то делал с МК, а потом захотел включить таймер с определенными настройками(котороые передал по USB). Кто-то делал так?
Заранее спасибо!
Pacaken
 
Сообщения: 2
Зарегистрирован: 15 мар 2012, 23:50

Re: Прерывание. Динамическое изменение...

Сообщение Pacaken » 16 мар 2012, 13:23

А файл программы забыл прикрепить...

Добавлено спустя 59 минут 39 секунд:
А все понял свою ошибку... все работает, просто программа зацикливалась постоянно меняя значение регистров. Поэтому таймер немог запуститься. Получаеться что ответы на оба вопроса я уже нашел-они утвердительные. Тему можно закрывать)
Вложения
main.c
(6.59 КиБ) Скачиваний: 237
Pacaken
 
Сообщения: 2
Зарегистрирован: 15 мар 2012, 23:50


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

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

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