Внешние прерывания и работа таймеров AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

Понадобилось использовать в программе внешние прерывания INT0 (раньше как то не нужно было, а теперь решил научить МК общаться с компом по USB). И в связи с этим возник вопрос, как правильно использовать при этом таймеры? Пока удалось запустить только TIM2 в режиме прерывания по совпадению. От прерываний TIM1 уходит в перезагрузку. OVF режим вообще не удалось включить. МК Mega16.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

Вот именно эту штуку я и использую. С подключением по USB почти никаких проблем не было, сейчас МК определяется как HID устройство и успешно обменивается данными с ПК. Но, если включить любой таймер (кроме TIM2 в режиме OVF) МК либо сбрасывается, либо перестает определяться компом.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

скорее всего прерывания искажают диаграмму работы с УСБ .
не лучше ли взять ft232 ?
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

Нет. Во первых она дороже чем та же Mega8 в 3 раза. Во вторых она создает виртуальный COM порт, а это не так интересно, хочется работать с USB напрямую :) , да и программного кода для работы с USB получилось раза в 4 меньше чем кода для работы с COM (это я про прогу для ПК). В третьих придется занять USART, а он может понадобиться. Ну и т.д. и т.п. :)) В общем не удобно. С таким же успехом я могу прикрутить к устройству адаптер COM->USART на Tiny2313. :))
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

С прерываниями можно работать как обычно. Если что то не включается, значит неправильно инициализируете. Другой вопрос что девайс может периодически отваливаться. В этом случае можно сами прерывания запретить и анализировать только флаги прерываний и сбрасывать их вручную. Немного потеряете в скорости, но транзакциям по USB ничего мешать не будет.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

Ладно, вечером приду, поэкспериментирую. Еще такой вопрос, как правильно инициализировать внешние прерывания, по фронту, по уровню или все сразу?
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Эх... И опять, и снова гадаем на кофейной гуще вместо того чтобы сделать наверняка. Т.е. почитать где надо. :)

Последняя версия V-USB.
Для 12 МГц задержка допускается максимум в 25 тактов с момента запрещения прерываний до их разрешения.
Для 16.5 МГц соответственно 52 такта.

Т.е. если сделать вложенные прерывания (с помощью "sei" или "ISR_NOBLOCK"), то V-USB вполне может работать.
Только учтите ещё и работу обработчика V-USB - обработка пакета может занимать до 1200 тактов при 12 МГц ( 100 микро сек.).
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик

Сообщение КАШАК »

А у меня кварц на 16 МГц. :)
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Можно пересчитать. Примерно - легко. А если точно, то надо "закапываться" в исходники v-usb.
Для 16 МГц тактов 40-45, наверно.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Ответить

Вернуться в «AVR»