Dron_Gus 2 28 июня, 2012 Опубликовано 28 июня, 2012 · Жалоба Всё верно: мы настраиваем и запускаем в работу аппаратный таймер микроконтроллера, однако срабатывания этого аппаратного таймера будут обрабатываться уже программными средствами операционной системы, превращая аппаратный таймер в программный с соотвествующим уходом времени обработки таймерного прерывания. Если не использовать операционную систему, то будет честный аппаратный таймер, спору нет. Не верно. Нам даже прерывания от этого таймера не нужны. Таймер по дотижению определенных хначений будет выставлять 0 или 1 на ножке. Участие ПО не требуетя. Почитайте описание таймеров семейства at91. Джиттер будет напрямую зависеть от кварца, плл и делителей. Но не от ПО и загруженности ситемы. 16 бит 100 КГц это хорошо, а какая частота мастер клока ему нужна? 16 * 100 * 1000? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zelepuk 0 28 июня, 2012 Опубликовано 28 июня, 2012 (изменено) · Жалоба А ещё думаю можно написать драйвер для управления аппаратным клоком. Чтобы можно было динамически менять частоту. Изменено 28 июня, 2012 пользователем Zelepuk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 28 июня, 2012 Опубликовано 28 июня, 2012 · Жалоба Читайте раздел "34. Timer Counter". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zelepuk 0 28 июня, 2012 Опубликовано 28 июня, 2012 (изменено) · Жалоба У нас тактировали АЦП с частотой 50кГц от Плис. незнаю насколько для этих целей подойдёт клок от таймера MCU Изменено 28 июня, 2012 пользователем Zelepuk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Enthusiast 0 28 июня, 2012 Опубликовано 28 июня, 2012 · Жалоба Не верно. Нам даже прерывания от этого таймера не нужны. Таймер по дотижению определенных хначений будет выставлять 0 или 1 на ножке. Участие ПО не требуетя. Почитайте описание таймеров семейства at91. Джиттер будет напрямую зависеть от кварца, плл и делителей. Но не от ПО и загруженности ситемы. Даже если мы и запустим внешнее АЦП точно по таймерной метке с микроконтроллера, то как Вы собираетесь обрабатывать эти самые данные с АЦП? Вот тут-то Вас ждет попаданец: программный обработчик операционной системы "уведет" всю точность аппаратного таймера. И таймерный драйвер ядра лишь уменьшит уход времени таймерного отсчета, но не решит вопроса в корне, так как драйвер тоже подчиняется программному распределению времени обработки внутри операционной системы. И осциллограф это только подтвердит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 28 июня, 2012 Опубликовано 28 июня, 2012 · Жалоба Даже если мы и запустим внешнее АЦП точно по таймерной метке с микроконтроллера, то как Вы собираетесь обрабатывать эти самые данные с АЦП? Вот тут-то Вас ждет попаданец: программный обработчик операционной системы "уведет" всю точность аппаратного таймера. И таймерный драйвер ядра лишь уменьшит уход времени таймерного отсчета, но не решит вопроса в корне, так как драйвер тоже подчиняется программному распределению времени обработки внутри операционной системы. И осциллограф это только подтвердит. Надо будет только успевать забирать данные до следующего измерения, в этом джиттер не страшен. А сами выборки будут строго привязаны к генерируемому аппаратным таймером сигналу. К тому же топикстартер не упомянул, по какому интерфейсу АЦП подключен к контроллеру. Может это паралельная шина с FIFO, может I2S в режиме мастера, может SPI в режиме мастера. А может и slave-интерфейс, но в АЦП присутствует буфер. Методов много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 29 июня, 2012 Опубликовано 29 июня, 2012 · Жалоба Надо будет только успевать забирать данные до следующего измерения, в этом джиттер не страшен. А сами выборки будут строго привязаны к генерируемому аппаратным таймером сигналу. К тому же топикстартер не упомянул, по какому интерфейсу АЦП подключен к контроллеру. Может это паралельная шина с FIFO, может I2S в режиме мастера, может SPI в режиме мастера. А может и slave-интерфейс, но в АЦП присутствует буфер. Методов много. Шина SPI. АЦП посылает прерывание на мастер и тот забирает данные. Драйвер АЦП складывает отсчёты в кольцевой буфер и выдаёт пользователю через соответствующий программный интерфейс. Вот мне инетерсно: по ТЗ требуется вести расчёты каждую миллисекунду(каждые 100 отсчётов) и складывать результат в массив. Получится ли такое на Linux? специалист нашего отдела мне сказал что нужно просто буфер отсчётов сделать длиннее. Пока не понимаю как это связано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться