захват двух сигналов
|
|
tenevikus | Дата: Пятница, 29.06.2012, 13:43 | Сообщение # 1 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| день добрый. сделал тележку для робота. на шестеренки редукторов правого и левого мотора повесил щелевые оптопары. соответственно подсчитываю количество оборотов там и там. я делаю это через прерывания int0 и int1 а в обработке прерывания просто увеличивается переменная количества оборотов. вот вопрос. оптимально ли это? или может есть еще какой хороший способ?
|
|
| |
exersizze | Дата: Пятница, 29.06.2012, 15:44 | Сообщение # 2 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| по мне так - оптимальней некуда :) даже если сигналы придут обсолютно синхронно (что маловероятно) микроокнтроллер за счет флага прерывания, обработает сначала один сигнал, затем творой. И ничего не потеряется. Главное чтобы обработчик был легкий, тоесть не выполнялось бы там много операций... Хотя микроконтроллер успеет совершить 100500 операций до того как придет следующий сигнал.
|
|
| |
Aleks8383 | Дата: Суббота, 30.06.2012, 07:45 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Извените за то что не в тему,я так понял если идёт одно прерывание скажим INTO и сработает прирывание INT1 то сначало обработается первое прерывание,а уже потом выполнится второе прерывание??? и так можно до безконечности???и как я понимаю при этом нельзя очищать регистр прерывания (GIFR64)???
|
|
| |
tenevikus | Дата: Суббота, 30.06.2012, 13:36 | Сообщение # 4 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| так так так... у меня помимо установки флага в каждом прерывании еще и GIFR64 стоит...
|
|
| |
exersizze | Дата: Суббота, 30.06.2012, 14:30 | Сообщение # 5 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Да прерывания пришедшие во время обработки, будут обработаны после завершения первого прерывания. Тут принцип простой- кто первый встал того и тапки. А факт того что прерывание нужно обработать хранится в регистре GIFR (в новых моделях мк регистр EIFR). Если очистить регистр второго прерывания в первом прерывании, то второе прерывание обработано не будет. Может и запутанно написал, но на самом деле тут все просто :)
|
|
| |