реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Время детектирования прерывания pin change
frz
сообщение Mar 21 2010, 14:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Вобщем имеется ATMega48 и необходимо детектировать короткие внешние импульсы(100-200нс). Тактовая частота 1МГц.
Вопрос в следующем: можно ли для этого использовать прерывание PCINT ? В датащите не нашёл ничего толкового - написано лишь что изменение состояния пинов детектируется асинхронно. Но всеже должно быть какое-то время детектирования, которое гарантированно приводило бы к генерации прерывания?
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 22 2010, 00:27
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(frz @ Mar 21 2010, 16:06) *
Вобщем имеется ATMega48 и необходимо детектировать короткие внешние импульсы(100-200нс). Тактовая частота 1МГц.
Вопрос в следующем: можно ли для этого использовать прерывание PCINT ?

Без внешних компонентов нельзя. см. раздел Pin Change Interrupt Timing, кстати там на рисунке 11-1 видно, что схема захвата PCINT - синхронная, т.к. защелка и триггер тактируются clk.

Цитата
В датащите не нашёл ничего толкового - написано лишь что изменение состояния пинов детектируется асинхронно. Но всеже должно быть какое-то время детектирования, которое гарантированно приводило бы к генерации прерывания?

Чтобы гарантировано получить PCINT нужна такая частота тактирования МК, чтобы период одного такта был хотя бы в два раза меньше длительности импульса - т.е. 20Mhz в вашем случае.

Если все же тактовая останется 1Mhz, то самым простым решением будет использование возможности встроенного компаратора + простейший аналоговый запоминающий элемент посторенный на кондике и диоде. По прерыванию от компаратора - переключить пин компаратора на вывод и разрядить запоминающий элемент.
Go to the top of the page
 
+Quote Post
smac
сообщение Mar 22 2010, 04:44
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(defunct @ Mar 22 2010, 03:27) *
Без внешних компонентов нельзя. см. раздел Pin Change Interrupt Timing, кстати там на рисунке 11-1 видно, что схема захвата PCINT - синхронная, т.к. защелка и триггер тактируются clk.

Вопрос не совсем в тему, но в принципе про PCINT. Чем тактируется упомянутая схема захвата при уходе контроллера в Power Down, что-то в даташите не могу найти нужной информации, может быть кто знает?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 22 2010, 05:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(smac @ Mar 22 2010, 07:44) *
Вопрос не совсем в тему, но в принципе про PCINT. Чем тактируется упомянутая схема захвата при уходе контроллера в Power Down, что-то в даташите не могу найти нужной информации, может быть кто знает?

Ничем не тактируется:
Цитата
Pin change interrupts on PCINT23...0 are detected asynchronously. This implies that these interrupts can be used for
waking the part also from sleep modes other than Idle mode.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 22 2010, 05:16
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(aaarrr @ Mar 22 2010, 07:02) *
Ничем не тактируется:

если придерживаться схемы figure 11-1 Pin Change Interrupt Timing, то без тактирования PCIF не установится никогда, и прерывание не произойдет.
Но стоит обратить внимание на промежуточный сигнал pcint_in_(x) который действительно асинхронен клоку. Логичнее всего было бы по этому сигналу запустить тактовый генератор, ну а далее следуя схеме - нативно сгенерится PCINT.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 26 2010, 16:18
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(frz @ Mar 21 2010, 14:06) *
ATMega48 и необходимо детектировать короткие внешние импульсы(100-200нс). Тактовая частота 1МГц: можно ли для этого использовать прерывание PCINT?

Возникла идея, как расширить короткий импульс, чтобы он сработал. Нужно поставить таймер2 в асинхронный режим, записать в него 0хFF и подать короткий импульс на TOSC1. Таймер асинхронно сработает от фронта импульса, возникнет переполнение и проц на него отреагирует обычным образом. Идею сам не проверял, но противопоказаний простым глазом не вижу.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 29 2010, 08:55
Сообщение #7


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Mar 22 2010, 04:16) *
если придерживаться схемы figure 11-1 Pin Change Interrupt Timing, то без тактирования PCIF не установится никогда, и прерывание не произойдет

Если придерживаться схемы, то непонятно, как отслеживаются фронты 1-0. Вывод: схема не совсем адекватная.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
frz
сообщение Apr 1 2010, 02:21
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 212
Регистрация: 23-09-08
Из: Новосибирск
Пользователь №: 40 406



Цитата(=GM= @ Mar 26 2010, 22:18) *
Возникла идея, как расширить короткий импульс, чтобы он сработал. Нужно поставить таймер2 в асинхронный режим, записать в него 0хFF и подать короткий импульс на TOSC1. Таймер асинхронно сработает от фронта импульса, возникнет переполнение и проц на него отреагирует обычным образом. Идею сам не проверял, но противопоказаний простым глазом не вижу.

Асинхронник занят своим делом.. Сама проблема неочень актуальна - внешний транзистор + кондёр+ подтягивающий резистор= надёжная генерация прерывания + защита контроллера от неприятностей на линии.
Просто было интересно как именно оно детектируется - всёже асинхронно или синхронно, было неочень понятно из датащита.
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Apr 4 2010, 20:13
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Возникла идея, как расширить короткий импульс, чтобы он сработал. Нужно поставить таймер2 в асинхронный режим, записать в него 0хFF и подать короткий импульс на TOSC1. Таймер асинхронно сработает от фронта импульса, возникнет переполнение и проц на него отреагирует обычным образом. Идею сам не проверял, но противопоказаний простым глазом не вижу.

Возникнут проблемы с переходом в асинхронный режим. Так как после установки бита AS2, данные в регистры таймера пишутся асинхронным клоком. Кроме того, после возникновения условий прерывания (переполнения тснт), процесс пробуждения контроллера начинается только со следующего такта (асинхронного)
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 6 2010, 09:01
Сообщение #10


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Процесс пробуждения здесь ни при чём, необходимо детектировать импульсы много короче импульсов тактовой частоты.

Для детектирования импульса достаточно дождаться изменения содержимого TCNT2.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Apr 18 2010, 00:44
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Процесс пробуждения здесь ни при чём

Это меня увели в сторону рассуждения про выход из Power down по PCINT.

И все же, проблема с переходом в асинхронный режим остается. Ведь для обновления регистров таймера2 (TCNT2, OCR2 и TCCR2) нужно будет подать на TOSC1 как минимум 2 фронта.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 18 2010, 19:58
Сообщение #12


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



С чего бы?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 18 2010, 20:38
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(=GM= @ Apr 19 2010, 00:13) *
С чего бы?

При рабюте таймер счётчика в асиинхроном режиме установка флагов прерываний от него производится с тактовым сигналом процессора
Поэтому потребуется 3 такта процессора + один период тактового сигнала таймера. Поэтому состояние счётчика к моменту когда можно будет прочитать регистры изменится на 1. Т.е вместо 1 в TCNT будет 2.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 19 2010, 11:03
Сообщение #14


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ничего не понимаю. То пишут об обновлении регистров таймера2 TCNT2, OCR2 и TCCR2, хотя нужен только TCNT2, при чём здесь остальные регистры?
То пишут о прерываниях. Зачем там прерывания по большому счёту? Задача стоит отловить короткий импульс. Ну так, читайте регистр таймера2 в цикле, сравнивайте, есть изменения - значит поймали короткий импульс.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 19 2010, 17:23
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(=GM= @ Apr 19 2010, 15:18) *
Ничего не понимаю. То пишут об обновлении регистров таймера2 TCNT2, OCR2 и TCCR2, хотя нужен только TCNT2, при чём здесь остальные регистры?
То пишут о прерываниях. Зачем там прерывания по большому счёту? Задача стоит отловить короткий импульс. Ну так, читайте регистр таймера2 в цикле, сравнивайте, есть изменения - значит поймали короткий импульс.

Написал о том , что если детектировать по прерыванию , как озаглавлен пост , то поймается только второй импульс.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 02:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01494 секунд с 7
ELECTRONIX ©2004-2016