hoggar
Nov 13 2006, 07:45
Задача: yеобходимо определять длины импульсов, поступающих на CAP1.0 - CAP1.3 (Philips LPC2138).
Возникшая проблема: в момент одновременного прихода импульсов на разные каналы захвата обрабатывается только один импульс.
Вопрос: как правильно осуществить обработку входящих импульсов.
Длительность импульсов сравнима с быстродействием процессора?
hoggar
Nov 13 2006, 10:00
длительность импульсов меняется от 0.8 мс до 2.2 мс
GetSmart
Nov 14 2006, 15:00
Вообще-то у этой серии был аппаратный косяк по этому поводу. Заключался в том, что когда при записи "1" битов в регистр T0IR для сброса флагов, происходил новый захват, то он терялся. А вот если несколько захватов происходят очень близко (пока прерывание не дойдёт до момента сброса этих флагов) то они все должны нормально запомниться. Это я проверял на своих 2132 и 2138-х.
Длительность же импульсов насколько я знаю вообще ни на что не влияет. Даже нескольких десятков наносекунд хватит.
Вобщем, на "косячных" LPC-шках никак не сделать корректную обработку всех захватов. Только если внутри прерывания вручную анализировать эти входы, точнее копии этих входов, подключённых снаружи проца к другим нормальным входам. Теоретически это можно сделать если импульсы не очень короткие и не очень частые (1 мс заглаза хватит). Одна хорошая весчь - если хоть один захват происходит, он 100% отработается. А уже после сброса его флага можно вручную анализировать остальные входы.