генератор импульсов
- Войдите на сайт для отправки комментариев
Для тестирования нужно генерировать импульсы (ширина не важна, в пределах 3-5 мкс ) с точным интервалом следования. Интервал между импульсами разный для каждого следующего импульса и заранее определен в массиве.
Пожалуйста подскажите общий метод реализации . Пока предполагаю такой алгоритм:
1 Установить таймер-1 (для следующего интервала) на прерывание-1.
2. Внутри прерывания-1 установить выход генератора в HIGH и установить таймер-1 для следующего интервала по прерыванию-1, установить таймер-2 для длительности 3-5 мкс на прерывание-2.
3. в прерывании-2 установить выход генератора в LOW, перейти к строке 2
Вижу недостаток - пока внутри прерывания-1 устанавливаю выход генератора в HIGH время идет, и за время установки таймера-1 (для следующего интервала) опять идет время. Как бы компенировать такие задержки во времени?
Посоветуйте пожалуйства метод работы генератора такой, чтобы переключение выхода в 0 или 1 отнимало как можно меньше процессорного времени.
Как этого достичь?
Посоветуйте пожалуйства метод работы генератора такой, чтобы переключение выхода в 0 или 1 отнимало как можно меньше процессорного времени.
Как этого достичь?
Надо работать с портами GPIO MCU, в Инете часто втречал примеры работы.
Генератор1
задежки по времени можно банально подсчитать, посмотрев ассемблерный листинг программы. Время на выполнение команды ивестно, корректруем настройку таймера.
Ребята, если кто может то перейдите пожалуйста сюда http://arduino.ru/forum/programmirovanie/rabota-s-multipleksorom
Зарание спасибо!
1) как получить ассемблерный текст программы?
2) где взять таблицу длительности выполнения команд
3) как зависит длительность выполнения команды от частоты процессора ( обычного 16 МГц и DUE )?
2) где взять таблицу длительности выполнения команд
3) как зависит длительность выполнения команды от частоты процессора ( обычного 16 МГц и DUE )?
2) Ищи/смотри даташит на свой МК, там есть таблица команд, каждая команда выполняется за сколько-то тактов, время 1 такта = 1/частота МК (доли микросекунд получается).
3) смотри ответ пункта (2).
3) смотри ответ пункта (2).
а с 1-ым оссемблирным пунктом как быть ?
Вдогонку.
Есть задача генерировать импульсы с различной частотой на разных выводах Arduino Uno R3. При этом задержка ежду импульсами различных ног должна быть регуируемой.
Например, 10 Гц на выходе 3, 20 Гц на выходе 4 и 1280 Гц на выходе 5.
При это между пиком ноги 3 и одним из пиков ноги 4 должен быть интервал 1,56мс. Задержка 5 ноги не имеет значения.
tone () отметаем сразу, т.к.управляет только одним выходом в один момент времени.
beep () тоже не годится, т.к. управление частотой очень убогое.
Остаётся CTC, но все примеры, которые приведены для него - поочерёдное управление. Одновременного не удалось найти.
Возможен ли генератор на Uno с такими параметрами?
пожалуйста не засоряй мою тему, создай свою в нужном тебе разделе