Evgeny_CD 0 12 июля, 2005 Опубликовано 12 июля, 2005 · Жалоба Нужен контроллер с таймером, который сбрасывается по перепаду на входе на аппаратном уровне. Не программно, а именно аппаратно. В идеале к этому таймеру еще хотелось бы MAT регистр, который при достижении указанного значения генерирует прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 12 июля, 2005 Опубликовано 12 июля, 2005 · Жалоба Нужен контроллер с таймером, который сбрасывается по перепаду на входе на аппаратном уровне. Не программно, а именно аппаратно. В идеале к этому таймеру еще хотелось бы MAT регистр, который при достижении указанного значения генерирует прерывание. <{POST_SNAPBACK}> Хм. i8052 :) и все его клоны. TIMER2 умеет загружаться 16-битным значением по спаду на ноге T2EX. Правда, по досчёту до FFFF он тоже перезагрузится, но это можно выяснить по флагам прерывания (вектор один, но дальше по битам EXF2 и TF2 можно разгрести - это его только что загрузили внешним спадом или он переполнился) и предистории. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Evgeny_CD 0 12 июля, 2005 Опубликовано 12 июля, 2005 · Жалоба [i8052 и все его клоны. TIMER2 умеет загружаться 16-битным значением по спаду на ноге T2EX. Правда, по досчёту до FFFF он тоже перезагрузится, но это можно выяснить по флагам прерывания (вектор один, но дальше по битам EXF2 и TF2 можно разгрести - это его только что загрузили внешним спадом или он переполнился) и предистории. Ну вот, опять 51 :( Спасибо за ответ! Неужели в продвинутых архитектурах этого нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 13 июля, 2005 Опубликовано 13 июля, 2005 · Жалоба Такая функция есть у Fujitsu. 16-bit reload timer может перезагружаться заданным значением при обнаружении заданного фронта на ноге. Кроме того, можно использовать InputCapture - потом в прерывании записанное по фронту значение вычитать из текущего значения таймера. Но это слегка через зад :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NickB 0 13 июля, 2005 Опубликовано 13 июля, 2005 · Жалоба Посмотрите в сторону атмеловых АРМ Похоже там есть такой вариант настройки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Evgeny_CD 0 13 июля, 2005 Опубликовано 13 июля, 2005 · Жалоба Посмотрите в сторону атмеловых АРМ Похоже там есть такой вариант настройки <{POST_SNAPBACK}> Да, есть такое! Спасибо! Each channel is organized around a 16-bit counter. The value of the counter is incremented at each positive edge of the selected clock. When the counter has reached the value 0xFFFF and passes to 0x0000, an overflow occurs and the COVFS bit in TC_SR (Status Register) is set. The current value of the counter is accessible in real time by reading the Counter Value Register, TC_CV. The counter can be reset by a trigger. In this case, the counter value passes to 0x0000 on the next valid edge of the selected clock. A trigger resets the counter and starts the counter clock. Three types of triggers are common to both modes, and a fourth external trigger is available to each mode. The following triggers are common to both modes: • Software Trigger: Each channel has a software trigger, available by setting SWTRG in TC_CCR. • SYNC: Each channel has a synchronization signal SYNC. When asserted, this signal has the same effect as a software trigger. The SYNC signals of all channels are asserted simultaneously by writing TC_BCR (Block Control) with SYNC set. • Compare RC Trigger: RC is implemented in each channel and can provide a trigger when the counter value matches the RC value if CPCTRG is set in TC_CMR. В LPC21xx такого нет, придется заводить вход на MAT, затем по прерыванию вычислять "фазовую" поправку для таймера (разницу между показаниями своего таймера, тикающего от кварца, и внешнего таймера, который выдает сихросигнал в положении 0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться