| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Mega48. Как работать с прерываниями PCintX ?
27.01.2012, 12:07
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от aleksandr_zh
|
входной сигнал делим на 2\4\8 (с запасом)
Мегой считаем три сигнала
это реально сдедалать?
но там только два IntX
|
Если вы согласны делить входные импульсы, то вот вам идея - один из сигналов заведите на клок SPI интерфейса... Прерывание SPI и будет 8 импульсов. Еще три канала на таймеры - вот вам 4 канала. Оставшиеся два - на INTы. Таймеры - в режим CTC и счет до 8. Ну, INTы придется считать все, обработчики на асме - думаю - вполне реально успеть.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
27.01.2012, 12:07
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от nml
|
|
Там есть 3 регистра флагов, входы опрашивать не надо.
|
Там есть 3 регистра масок PCMSK, которыми определяют от каких входов разрешить прерывание. А регистр флагов всего один PCIFR. И флагов там всего 3 (PCIF2, PCIF1, PCIF0).
|
|
|
|
27.01.2012, 12:21
|
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от alvadep
|
|
А регистр флагов всего один PCIFR. И флагов там всего 3 (PCIF2, PCIF1, PCIF0).
|
Да, точно, прошу прощения. Нелогично как-то это у них устроено. По мне - регистр флагов должен быть - пока в прерывание вошел, пины уже и поменяться могут.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
27.01.2012, 12:29
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от aleksandr_zh
|
|
всё время. пачек там нет, постояно идут импульсы,
|
Если выставится флаг прерывания а вы не успеете обработать даный канал и придёт ещё 1 импульс, то вы потеряете его.
Я в своё время делал подсчёт импульсов от 4 топливораздаточных колонок на АЗС.
Метод таков.
Считать все каналы из 1 порта 1 байтом.
Сравнить с предыдущим состоянием.
В изменёных каналах увеличить счётчики.
Сохранить текущее состояние в качестве предыдущего для следующего чтения.
Напишите на ассемблере процедуру для обработки прерывания и посмотрите вложиться ли обработка всех каналов во время 2 микросек на 20 МГЦ (АТТИНЯ2313 на 20 работает)
Обрабатывать лучше в 1 прерывании, меньше тратиться времени на переходы и служебные сохранения регистров для многих прерываний.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
27.01.2012, 12:29
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Классическая задача для программируемой логики. Счетчик событий - 25 разрядов * 6 каналов = 150 триггеров. Вполне поместиться в ЕРМ240. Для управления - МК по вкусу. И никакой головной боли успеет/не успеет
__________________
misterdi<@>i.ua
|
|
|
|
27.01.2012, 12:29
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Если поделить входные импульсы, то и прерывания можно не использовать.
Опрос входов делать программно. И с UARTом работать не по прерываниям, а по флагам. На ассемблере это все получится.
|
|
|
|
27.01.2012, 12:43
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 8,009
Сказал спасибо: 0
Сказали Спасибо 4,955 раз(а) в 2,379 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
aleksandr_zh,
совет несколько авантюрный, но - PSoC наверняка поможет, тема рядом. можно и связку авр+альтера на 64 ячейки
|
|
|
|
27.01.2012, 13:04
|
|
|
Гражданин KAZUS.RUN
Регистрация: 17.11.2011
Адрес: Брянская область, РФ
Сообщений: 699
Сказал спасибо: 693
Сказали Спасибо 428 раз(а) в 213 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от jump
|
aleksandr_zh,
совет несколько авантюрный, но - PSoC наверняка поможет, тема рядом. можно и связку авр+альтера на 64 ячейки
|
хм
с нуля с наскоку не получится
ничего под рукой из этого нет
я это могу мелкой логикой решить, но некрасиво получится - горсть рассыпухи + МК с индикацией
|
|
|
|
27.01.2012, 15:07
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Mega48. Как работать с прерываниями PCintX ?
Сообщение от aleksandr_zh
|
я это могу мелкой логикой решить, но некрасиво получится - горсть рассыпухи + МК с индикацией
|
Пути решения вам рассказали )) вам решать как пойдёте )))
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:02.
|
|