Официальный сайт компании Arduino по адресу arduino.cc
Таймеры
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 22/10/2015 - 15:01
Здравствуйте в ардуино и микрокотроллерах новичок, поэтому сильно не ругайте )))
Необходимо решить следующую задачу, существует таблица в которой записано в микросекундах количество времени которое на порт подается логическая единица и логический ноль (например: 7 мс -0; 3 мс - 1 и т.д.). Необходимо сообственно все это дело реализовать на ардуино. Для начала хотя бы чтобы данная таблица была записана в памяти, а в дальнейшем и чтобы данные передавались с компьютера так как их может быть очень много ( как передавать данные я знаю, но тут проблема сводится к быстрому приему данных). Почитав понял что необходимо использовать таймеры, но пока не могу въехать как именно это сделать...
у вас единица шкалы времени 1мс?
общая логика может быть такая - делаем функцию которая берет следующий элемент из массива и рассчитывает через сколько мсек нужно будет менять состояние выхода. Вычисленное значение заносится в переменную со свойством volatile
далее делаем обработчик прерываний и настраиваем его на срабатывание каждую 1 мсек. внутри обработчика делаем обратный отсчет по нашей переменной. Как досчитали до нуля - меняем состояние выхода, берем следующий элемент массива, вычисляем следующий интервал и запоминаем в нашей переменной. И так снова и снова пока есть данные в массиве
Настраивать таймер в первом приближении можно используя http://playground.arduino.cc/Main/MsTimer2. Но в дальнейшем будет более оптимально настроить таймер самому используя документацию атмела
Данные с компьютера можно читать используя библиотеку Serial, это самый простой способ связи с ПК. Надо только решить в каком формате будут передаваться данные. Самый распространенный это табличный формат с разделителями столбцов и строк. Столбцы можно например разделять символом табуляции, а строки переводом строки. В таком случае самым простым способом загнать данные может быть подготовка данных в экселе, выгрузка в CSV и последующая загрузка в любой терминальной программе типа putty
Не понял только зачем так сложно. По 1 мс? Зачем по одной, когда нужно, например, 3?
Я вот не понял что значит срабатывание каждую мс, может вы имели ввиду каждую мс таймер тикает??? С csv понятно, но желательно было бы мвою программу для передачи сделать, например на c#,а там если просто подходить нв передачу мне кажется много времени будет уходить. Т.е. наверное надо скорость опроса в ардуинке увеличивать...
Здравствуйте в ардуино и микрокотроллерах новичок, поэтому сильно не ругайте )))
Не удивляйтесь вопросу, он нужен, чтобы понять как Вам можно помочь.
ну в программирование в принципе имеется опыт, хоть и не огромный
Ну, тогда, возьмите http://arduino.ru/sites/default/files/u12980/callmeback.pdf.gif
Отбросьте .gif в конце (это на самом деле .pdf файл) и посмотрите.
Это незаконченная документация по библиотеке, но глава про таймеры закончена полностью с работающими примерами.
Всё, что нужно знать, чтобы программировать таймеры в стандартном режиме там есть.
Страница не найдена
Запрашиваемая страница не найдена
Вы не кликакайте, А говорите "сохранить ссылку/объект как ..."