Странности ORduino nano.
- Войдите на сайт для отправки комментариев
Всем доброго дня.
Не так давно приобрел вот такую дуинку http://roboforum.ru/wiki/ORduino-Nano. До этого пользовался самодельными отладочными модулями.
И почти сразу обнаружились некоторые проблемы.
Данная плата имеет 8 ног АЦП. Но дело в том что последние пины А6 и А7 (или 20 и 21 по общей нумерации) нельзя опросить как цифровые.
Т.е. digitelRead(20); не приводит ни к чему.Только analogRead(6);.
Это почему так ?
Так же есть баг с ШИМом пина номер 10.
Как только я инициализирую библиотеку servo.h пропадает ШИМ на десятом пине.
Т.е. analogWrite(10,100); ни к чему не приводит, там лог 0. Только analogWrite(10,255); дает лог 1.
Стоит закоментировать myservo.attach(9); в сетапе и ШИМ начинает работать.
Тоже странное поведение.
Данная плата имеет 8 ног АЦП. Но дело в том что последние пины А6 и А7 (или 20 и 21 по общей нумерации) нельзя опросить как цифровые.
Печалька http://mk90.blogspot.com/2011/07/a6-a7.html
Вообщем "ограничение чипа" :(
Так же есть баг с ШИМом пина номер 10.
Читайте документацию. Она сеет разумное, доброе, вечное
http://arduino.ru/Reference/Library/Servo
На контроллерах отличных от Mega использование библиотеки отключает возможность использовать выходы 9 и 10 врежиме ШИМ даже если привод не подключен к этим выводам. На плате Mega могут быть использованы до 12 сервоприводов без потери функционала ШИМ. При использовании Mega для управления от 12 до 23 сервоприводов нельзя будет использовать выходы 11 и 12 для ШИМ.
Вообщем опять пичалька. На Nano библиотека Servo использует для своих нужд Timer1 (кстати, поэтому другие библиотеки его использующие тоже могут глючить в этот момент). А, из даташита, можно узнать что ему соотвествуют выводы D9,D10
Не пробовал, но возможно, можно ее подхачить и переключить на использование timer2. Но тогда в туман уйдет PWM на D3,D11
Ничего странного, на первый вопрос вы найдете ответ заглянув в даташит ATmega48PA/88PA/168PA/328P
и увидев что на этих выводах кроме АЦП больше ничего нет.
А на второй вопрос ответ написан во втором обзаце описании библиотеки Servo
upd: Опоздал, но смысл тот же.
Не пробовал, но возможно, можно ее подхачить и переключить на использование timer2. Но тогда в туман уйдет PWM на D3,D11
Можно, сложности возникают с тем, что timer1 - 16-битный, а timer0 и timer2 - 8-битные, поэтому и саму либу прийдется править под 8-битный таймер и не уверен, но скорее всего страдает и точность. Еще где-то натыкался уже на готовую либу для 8-битного таймера.