Странности ORduino nano.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Всем доброго дня.

Не так давно приобрел вот такую дуинку 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); в сетапе и ШИМ начинает работать.

Тоже странное поведение.

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

Данная плата имеет 8 ног АЦП. Но дело в том что последние пины А6 и А7 (или 20 и 21 по общей нумерации) нельзя опросить как цифровые. 

Печалька http://mk90.blogspot.com/2011/07/a6-a7.html

Вообщем "ограничение чипа" :(

 

nestandart пишет:

Так же есть баг с ШИМом пина номер 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

maksim
Offline
Зарегистрирован: 12.02.2012

Ничего странного, на первый вопрос вы найдете ответ заглянув в даташит ATmega48PA/88PA/168PA/328P

и увидев что на этих выводах кроме АЦП больше ничего нет.

А на второй вопрос ответ написан во втором обзаце описании библиотеки Servo

upd: Опоздал, но смысл тот же.

maksim
Offline
Зарегистрирован: 12.02.2012

leshak пишет:

Не пробовал, но возможно, можно ее подхачить и переключить на использование timer2. Но тогда в туман уйдет PWM на D3,D11

Можно, сложности возникают с тем, что timer1 - 16-битный, а timer0 и timer2 - 8-битные, поэтому и саму либу прийдется править под 8-битный таймер и не уверен, но скорее всего страдает и точность. Еще где-то натыкался уже на готовую либу для 8-битного таймера.