Jump to content

    

AT91 и драйвер таймера

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

Не верно. Нам даже прерывания от этого таймера не нужны. Таймер по дотижению определенных хначений будет выставлять 0 или 1 на ножке. Участие ПО не требуетя. Почитайте описание таймеров семейства at91. Джиттер будет напрямую зависеть от кварца, плл и делителей. Но не от ПО и загруженности ситемы.

 

16 бит 100 КГц это хорошо, а какая частота мастер клока ему нужна? 16 * 100 * 1000?

Share this post


Link to post
Share on other sites

А ещё думаю можно написать драйвер для управления аппаратным клоком. Чтобы можно было динамически менять частоту.

Edited by Zelepuk

Share this post


Link to post
Share on other sites

Читайте раздел "34. Timer Counter".

Share this post


Link to post
Share on other sites

У нас тактировали АЦП с частотой 50кГц от Плис. незнаю насколько для этих целей подойдёт клок от таймера MCU

Edited by Zelepuk

Share this post


Link to post
Share on other sites
Не верно. Нам даже прерывания от этого таймера не нужны. Таймер по дотижению определенных хначений будет выставлять 0 или 1 на ножке. Участие ПО не требуетя. Почитайте описание таймеров семейства at91. Джиттер будет напрямую зависеть от кварца, плл и делителей. Но не от ПО и загруженности ситемы.

Даже если мы и запустим внешнее АЦП точно по таймерной метке с микроконтроллера, то как Вы собираетесь обрабатывать эти самые данные с АЦП? Вот тут-то Вас ждет попаданец: программный обработчик операционной системы "уведет" всю точность аппаратного таймера. И таймерный драйвер ядра лишь уменьшит уход времени таймерного отсчета, но не решит вопроса в корне, так как драйвер тоже подчиняется программному распределению времени обработки внутри операционной системы. И осциллограф это только подтвердит.

Share this post


Link to post
Share on other sites
Даже если мы и запустим внешнее АЦП точно по таймерной метке с микроконтроллера, то как Вы собираетесь обрабатывать эти самые данные с АЦП? Вот тут-то Вас ждет попаданец: программный обработчик операционной системы "уведет" всю точность аппаратного таймера. И таймерный драйвер ядра лишь уменьшит уход времени таймерного отсчета, но не решит вопроса в корне, так как драйвер тоже подчиняется программному распределению времени обработки внутри операционной системы. И осциллограф это только подтвердит.

Надо будет только успевать забирать данные до следующего измерения, в этом джиттер не страшен. А сами выборки будут строго привязаны к генерируемому аппаратным таймером сигналу. К тому же топикстартер не упомянул, по какому интерфейсу АЦП подключен к контроллеру. Может это паралельная шина с FIFO, может I2S в режиме мастера, может SPI в режиме мастера. А может и slave-интерфейс, но в АЦП присутствует буфер. Методов много.

Share this post


Link to post
Share on other sites
Надо будет только успевать забирать данные до следующего измерения, в этом джиттер не страшен. А сами выборки будут строго привязаны к генерируемому аппаратным таймером сигналу. К тому же топикстартер не упомянул, по какому интерфейсу АЦП подключен к контроллеру. Может это паралельная шина с FIFO, может I2S в режиме мастера, может SPI в режиме мастера. А может и slave-интерфейс, но в АЦП присутствует буфер. Методов много.

Шина SPI. АЦП посылает прерывание на мастер и тот забирает данные. Драйвер АЦП складывает отсчёты в кольцевой буфер и выдаёт пользователю через соответствующий программный интерфейс.

Вот мне инетерсно: по ТЗ требуется вести расчёты каждую миллисекунду(каждые 100 отсчётов) и складывать результат в массив.

Получится ли такое на Linux?

специалист нашего отдела мне сказал что нужно просто буфер отсчётов сделать длиннее. Пока не понимаю как это связано.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this