roboforum.ru

Технический форум по робототехнике.

 

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 05 мар 2010, 21:06

UART настроен правильно, проверял, работает.
Так как выше написано не работает, undefined symbol 'ADSC'!
АЦП настроен мастером Cvavr:
Код: Выделить всёРазвернуть
DIDR0=0x3E;
ADMUX=0xC0 & 0xff;
ADCSRA=0x8E;


P.S Протеусом пользоваться умею, читать эту "кашу" как то неохото...

Добавлено спустя 1 час 8 минут 32 секунды:
Разобрался, когда источник опорного напряжение поменял с внутреннего на AVCC, и все ок :)
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 07 мар 2010, 22:14

С одним каналом АЦп работать научился, включать и выключать каналы тоже, но есть вопрос, если я оцифровываю напряжение с 2-х каналов АЦП, результат оцифровки по-прежнему записывается в ADCW?
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение avr123.nm.ru » 07 мар 2010, 22:37

osc писал(а):P.S Протеусом пользоваться умею,

Ну и ...
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение mikolka6 » 11 мар 2010, 15:42

Доброва времени суток. У меня проблема . Я делаю модинг игровой приставки XBOX 360 под робота с мультика ВАЛЛИ с гусеницами, головой, руками . По задумке гусеницы будут не задействованы, просто при включении приставка будет приподниматься над поверхностью как Танк эта функция уже сделана. Голова с редукторами, вращение в право ,лево , на 180 градусов , также подъём и наклон головы, редуктора есть для этого с обычными моторами , еще функция подъема и опускания руки. Хотелось бы, чтоб голова без определенных интервалах времени(хаотично) смотрела то в верх то вниз , вправо лево , то совместно право в верх или на руку а рука при этом поднялась , в общем жил своей жизнью . Вопрос так как я в МК полный нуб , может кто видел схемку с прошивкой подобие моего варианта, МК мне пошьют а схему сам соберу. Посоветуйте ,что ни будь.
mikolka6
 
Сообщения: 4
Зарегистрирован: 11 мар 2010, 14:47
Откуда: Ставрополь

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение CoSS » 15 мар 2010, 00:43

osc
если я оцифровываю напряжение с 2-х каналов АЦП, результат оцифровки по-прежнему записывается в ADCW?

Если речь не о Xmega - куда-ж ему еще бедному деться.
CoSS
 
Сообщения: 5
Зарегистрирован: 01 ноя 2006, 18:27
Откуда: Неизвестно...

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 15 мар 2010, 17:58

Да я уже разобрался.
Вопрос по АЦП меги16, настроил все правильно, оцифровываю и отправляю в UART, приходят странные значения, настройки:
Код: Выделить всёРазвернуть
ADMUX=0b01100000;
ADCSRA=0b10001110;
//код в прерывании:
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;     
adc_data=ADCH;   
result = ((adc_data*1024)/2.56)*3; //умножаю на 3 т.к. на входе стоит делитель напряжения.
putchar((int)result);
}

Напряжение на входе делителя 5 в. Опорное напряжение 2.56, напряжение на входе АЦП 1.7 в. 1.7*3 = 5.1 все правильно, но в UART приходит 32 :crazy: Конденсатор на AREF есть. Подобным образом измерял напряжение при помощи atmega88, все работало, а мега 16 не хочет, в чем моя ошибка?
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение blindman » 15 мар 2010, 18:07

А что ты ожидаешь получить в уарте при напряжении 1.7 вольт?
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 15 мар 2010, 18:13

5 т.к. (adc_data*1024)/2.56 = 1.7 , потом умножаю на 3 и получаю 5.
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение blindman » 15 мар 2010, 18:19

Даже если в adc_data будет 1, то 1 * 1024 / 2.56 = 400. Откуда возьмется 1.7 когда adc_data = 680?
osc писал(а):в чем моя ошибка?

Похоже, арифметику подзабыл
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 15 мар 2010, 20:59

Похоже :D
Напряжение считается по формуле U = (ADCH*2.56)/1024
Если adch = 680, то U должно быть минимум 1, приходит 0, в чем же дело?
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение rig » 15 мар 2010, 21:18

unsigned int adc_data;
unsigned int 16 0 to 65535


все операции с целыми числами, откуда деление на дробь!!
как оно ваще у вас работает??

и в порт сначала надо получить значение с adc_data, а уже потом, когда значение будет правильным, начинать извращаться над ним.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 15 мар 2010, 21:20

Сорри, описка, все в double
Код: Выделить всёРазвернуть
 
interrupt [ADC_INT] void adc_isr(void)
{
double adc_data;
adc_data=((ADCH*2.56)/1024);     
putchar((char)adc_data); 
}

Приходит 55, а должно 1. Ради интереса посмотрел как я раньше считывал результат с АЦП меги88, все также, разве что регистры немного другие.

Дошло, в ADMUX не то число записал :oops:
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение rig » 15 мар 2010, 22:06

незнаю на сколько правильно, я чтоб уйти от дробей делал так.
Код: Выделить всёРазвернуть
Power_bat=(unsigned int) (((unsigned long int)adc_data[1])* 4590/10000) ;  // расчет питания на батарее 

данные АЦП умножал на некий коэф. и на выходе получал сразу напряжение с учетом делителя.
Код: Выделить всёРазвернуть
к примеру на делителе имеем 1,7В
делитель запитан от 5В
опорное 2,56
АЦП расчетно должен выдать 680.
5В/680=0,0073529411764705882352941176470588, округлим =0,00735

теперь в зависимости от точности можно считать так:

Код: Выделить всёРазвернуть
680*7=4760       /100=47
680*73=49640     /1000=49
680*735=499800   /10000=49

тоесть в дальнейшем моё число вписывалось в один байт.
Деля, где надо, на: 10 и %10 получал целую и дробную часть.
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение osc » 15 мар 2010, 22:20

Попробовал по этой методике и по формуле из даташита, результат даже близко не лежит :(
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение rig » 15 мар 2010, 22:22

что вольтметр говорит?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Mail.ru counter