roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 06:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Вывести значение с АЦП
СообщениеДобавлено: 03 фев 2009, 22:53 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Вот есть код:
Код:
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;

Получается, что результат записывается в ADCW, мне надо это значение вывести на дисплей (HD44780). Как это можно сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 03 фев 2009, 23:07 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
наверноп рочитать курс АВРчика
особенно задание где он объясняет как работать с дисплеем

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 03 фев 2009, 23:24 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Кто б сомневался, что кто-нибудь так ответит. Я знаю с помощью каких функций выводить СТРОКОВЫЕ данные, а тут тип unsigned int - это вывести у меня не получается.(((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 03 фев 2009, 23:40 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Lockdog писал(а):
результат записывается в ADCW, мне надо это значение вывести на дисплей (HD44780). Как это можно сделать?

Несколько способов, выбирайте - http://avr123.nm.ru/z5.htm
И в примерах к CVAVR посмотрите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 03 фев 2009, 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Вы все издеваетесь что-ли?
Там 4\5 урока про усарт и несколько функций для LCD. Там не описано ничего, кроме как выводить СТРОКИ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 00:02 
Не в сети

Зарегистрирован: 05 июн 2008, 22:03
Сообщения: 163
Откуда: Украина,Одесса
прог. языки: С,Java,SQL если это язык,C++ немного
Щас я те напишу.
Код:
        a=ADCH;     [color=#40BF00]//измениш тут свой регистр[/color]
        // 20ms delay
        delay_ms(20);

// вот ут сразу посчитать напряжение
//float shag =0.01953125;
//float result;
//result=a*shag;
//sprintf(buffer,"%f",result);


        lcd_clear();
        sprintf(buffer,"Volt= %d\n",a);
        lcd_puts(buffer);
        delay_ms(500);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 00:17 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Вот сделал так:
Код:
unsigned char adc_sharp;
char buffer;

adc_sharp=ADCW;
lcd_gotoxy(0,1);
sprintf(buffer,"adc= %d\n",adc_sharp);
lcd_puts(buffer);


Две ошибки одинаковые вылезает:
Error: E:\Documents\Robotics\CAVR\main\main2.c(204): function argument #1 of type 'unsigned char' is incompatible with required parameter of type 'unsigned char *'


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 00:28 
Не в сети

Зарегистрирован: 05 июн 2008, 22:03
Сообщения: 163
Откуда: Украина,Одесса
прог. языки: С,Java,SQL если это язык,C++ немного
Забыл написать
Код:
char buffer[20];


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 00:48 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Спасибо, заработало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 00:57 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Lockdog писал(а):
Вы все издеваетесь что-ли?
Там 4\5 урока про усарт и несколько функций для LCD.


Правильно. Там рассказано как преобразовать данные для форматированого вывода КУДА ЛИБО - аналогично и на UART и на LCD

Lockdog писал(а):
Там не описано ничего, кроме как выводить СТРОКИ


ВРАНЬЕ очевидное ! Вам и надо строку вывести на LCD содержащую ваши данные с АЦП.

Изображение

КАК И УКАЗАНО ! Открываем хелп CVAVR и смотрим пример

Код:
/* prepare the displayed temperatures */
   /* in the display_buffer */
   sprintf(display_buffer,
   "t0=%-i.%-u%cC\nt1=%-i.%-u%cC",
   t0/10,abs(t0%10),0xdf,t1/10,abs(t1%10),0xdf);

   /* display the temperatures */
   lcd_clear();
   lcd_puts(display_buffer);


====================

Кроме того в посте я вам написал что вывод есть в примерах CVAVR - смотрите thermlcd.c


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 01:17 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июл 2006, 20:42
Сообщения: 650
Откуда: Москва
прог. языки: C/C++, Python
Мне сказали искать про вывод данных на LCD, там sprintf не описывался. Можно было сразу написать, за что спасибо snayperAlfa, а не отсылать на километровые страницы курса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывести значение с АЦП
СообщениеДобавлено: 04 фев 2009, 01:24 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Lockdog писал(а):
Мне сказали искать про вывод данных на LCD, там sprintf не описывался.

Ну это же не единственый способ вывода.

Там описан вывод отдельных символов. Вы можете преобразовать данные в символы и вывести их.

Ведь sprintf сильно расходует память программ - первый вызов занимет около 430 слов памяти программ.

Добавлено спустя 5 минут 6 секунд:
Lockdog писал(а):
а не отсылать на километровые страницы курса.

Я СРАЗУ в посте и написал: И в примерах к CVAVR посмотрите.

Вы посмотрели ?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO