Скорость работы DigitalWrite и DigitalRead
- Войдите на сайт для отправки комментариев
Чт, 11/06/2015 - 08:17
Здравствуйте.
Собственно интересно наскольлко быстро отрабатывают функции.
Хочу поиграть с оптопарами, проверить их быстродействие. Реально это сделать через DigitalWrite и DigitalRead или придется напрямую обращаться к контроллеру? Если что смерть оптрона во время экспериментов меня не беспокоит, есть халявные из сгоревших БП.
Не пишите пожалуйста "попробуй - узнаешь", просто кто-нибудь уже наверняка ковырял эти функции и знает их возможности.
https://www.google.com/url?q=http://arduino.ru/forum/apparatnye-voprosy/...
Такой код будет работать? Я еще не работал с регистрами и не могу проанализировать полностью.
Код компилируется, но есть сомнения именно что так можно с регистрами получить обмен.
Весь код не проверял, но это сразу бросилось в глаза. Порты 8-битные, в такой записи нужно указывать все 8 бит, например DDRB = B11011100; PORTB = B00000000. Что принудительно установит значение сразу всех 8-ми бит порта.
Если нужно указать отдельные биты, можно воспользоваться такой конструкцией: PORTB |= (1<<7); - установить PB7 в единицу или PORTB &= ~(1<<7); - сбросить PB7 в ноль.
Или сразу несколько: PORTB |= (1<<7) | (1<<3) | (1<<0); - установить в единицу биты PB7, PB3, PB0
nevkon, а что вы хотели этим кодом сделать? Протестировать быстродействие оптрона можно генератором меандра. (в качестве генератора можно использовать и ардуину) . Но понять где грань нормальной работы и не нормальной -вы сможете только осциллографом. Относительно нормальную работу гарантирует время отклика, указанное в даташите на оптрон. Его можно пересчитать в частоту. Если частоту повышать выше рекомендуемой, то сначала будет сокращаться скважность вплоть то остроконечных зубчиков на осциллограмме, затем при ещё дальнейшем повышении частоты амплдитуда "зубчиков" начнёт падать, и с какого-то момента с оптрона перестанет идти сигнал.
Спасибо за ответы. Просто хотелось что называется в живую увидеть возможности оптронов от разных производителей на пределе возможностей.
А осициллографом к сожалению пока еще не разжился - бюджет не позволяет. Это все для меня пока на уровне развлечений.
DigitalWrite/DigitalRead - примерно 1-2мс время срабатывания (проверял не я, была статья на Хабре). Читаю/пишу напрямую, только при первичной настройке пользуюсь этими упрощенными функциями.
Ребят что вы тут паритесь у уно есть два скоростных порта работающие по внешним прерываниям, которые можно использовать, в лопе чтоб был чистый сигнал берется пин 4 в хай, подключив к пин2 и к оптике через резистор (т.к. там обычный светик) запомнить сколько было миллесекунд, далее пин 3 вычисление значение миллесикунд.
Показания будут обстракные но понять какая из оптик работает быстрей можно.