Таймеры

Vik648
Offline
Зарегистрирован: 22.10.2015

Здравствуйте в ардуино и микрокотроллерах новичок, поэтому сильно не ругайте )))

Необходимо решить следующую задачу, существует таблица в которой записано в микросекундах количество времени которое на порт подается логическая единица и логический ноль (например: 7 мс -0; 3 мс - 1 и т.д.). Необходимо сообственно все это дело реализовать на ардуино. Для начала хотя бы чтобы данная таблица была записана в памяти, а в дальнейшем и чтобы данные передавались с компьютера так как их может быть очень много ( как передавать данные я знаю, но тут проблема сводится к быстрому приему данных). Почитав понял что необходимо использовать таймеры, но пока не могу въехать как именно это сделать...

axill
Offline
Зарегистрирован: 05.09.2011

у вас единица шкалы времени 1мс?

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

далее делаем обработчик прерываний и настраиваем его на срабатывание каждую 1 мсек. внутри обработчика делаем обратный отсчет по нашей переменной. Как досчитали до нуля - меняем состояние выхода, берем следующий элемент массива, вычисляем следующий интервал и запоминаем в нашей переменной. И так снова и снова пока есть данные в массиве

Настраивать таймер в первом приближении можно используя http://playground.arduino.cc/Main/MsTimer2. Но в дальнейшем будет более оптимально настроить таймер самому используя документацию атмела

Данные с компьютера можно читать используя библиотеку Serial, это самый простой способ связи с ПК. Надо только решить в каком формате будут передаваться данные. Самый распространенный это табличный формат с разделителями столбцов и строк. Столбцы можно например разделять символом табуляции, а строки переводом строки. В таком случае самым простым способом загнать данные может быть подготовка данных в экселе, выгрузка в CSV и последующая загрузка в любой терминальной программе типа putty

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Не понял только зачем так сложно. По 1 мс? Зачем по одной, когда нужно, например, 3?

Vik648
Offline
Зарегистрирован: 22.10.2015

Я вот не понял что значит срабатывание каждую мс, может вы имели ввиду каждую мс таймер тикает??? С csv понятно, но желательно было бы мвою программу для передачи сделать, например на c#,а там если просто подходить нв передачу мне кажется много времени будет уходить. Т.е. наверное надо скорость опроса в ардуинке увеличивать...

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Vik648 пишет:

Здравствуйте в ардуино и микрокотроллерах новичок, поэтому сильно не ругайте )))

Только в микроконтроллерах? А программировать умеете? Или в программировании как таковом новичок?

Не удивляйтесь вопросу, он нужен, чтобы понять как Вам можно помочь.

Vik648
Offline
Зарегистрирован: 22.10.2015

ну в программирование в принципе имеется опыт, хоть и не огромный

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Ну, тогда, возьмите http://arduino.ru/sites/default/files/u12980/callmeback.pdf.gif

Отбросьте .gif в конце (это на самом деле .pdf файл) и посмотрите.

Это незаконченная документация по библиотеке, но глава про таймеры закончена полностью с работающими примерами.

Всё, что нужно знать, чтобы программировать таймеры в стандартном режиме там есть.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Страница не найдена

Запрашиваемая страница не найдена

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Вы не кликакайте, А говорите "сохранить ссылку/объект как ..."