Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.07.2012, 21:16
|
#21
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от miwutka
|
Вы меня не поняли или я вас... есть буфер с номером переменной в массиве rx_buffer[rx_wr_index] мне надо видеть на дисплее значение rx_wr_index от 0 до 255 а не от "." до символа с кодом 255. Вот....
Незнаю зачем мне это в дальнейшем, но сейчас просто хочу отследить как всё происходит.
Кстати писалось что прога типа зависает в процедуре приема данных, но вродь смотрю всё норм работает... никаких галюнов нету. Или я чегото не допонял _Артём_??
|
Я вас понял. Чего не скажешь про обратную сторону. ![Улыбка](images/smilies/icon_smile.gif)
Научитесь правильно излагать свои мысли и формировать вопросы.
У вас есть число типа unsigned char (в народе называют "байт").
Вам надо отобразить этот байт, как десятичное число. Разложите на цифры:
1-я цифра. Сколько сотен в числе. Сохраните остаток от числа при делении на 100.
2-я цифра. Сколько десятков в сохраненном остатке. Сохраните остаток от деления предыдущего остатка на 10.
3-я цифра. Остаток от всех делений.
Итого. 1-цифра - количество сотен, 2-я - к-во десятков, 3-я - к-во единиц.
Передавать на консоль (вы называете "на дисплей") следует именно три цифры. Рекомендую для начала написать функцию преобразования BinToDec(), понять её работу, научится давить (гасить) незначащие нули. В дальнейшем подобная функция (или одна, но универсальная) вам пригодится при работе с 16-бит силами.
Всё это я вам и написал в предыдущем посте. И кто кого не понял?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.07.2012, 00:35
|
#22
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: UART + Atmega 8
теперь понятно. Я это использую для 7-сегментника. Думал для ЖК есть чтото другое... Тогда всё просто ![Улыбка](images/smilies/icon_smile.gif) Спасибо))
|
|
|
|
09.07.2012, 08:15
|
#23
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от miwutka
|
Тогда всё просто
|
Тогда вы молодец!
Цитата:
|
Думал для ЖК есть чтото другое...
|
ЖК они ведь тоже разные бывают. Если это символьные - то для вас без разницы. Те же фиксированные знакоместа, в которые выводятся символы. С графическими немного посложнее. Эти знакоместа еще надо организовать. Хотя есть и комбинированные индикаторы, поддерживающие как графический так и символьный режимы.
Для "спасибы" есть отдельная кнопка в правом нижнем углу моего поста...
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 09.07.2012 в 11:08.
|
|
|
|
09.07.2012, 10:47
|
#24
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от miwutka
|
чтобы я ... в терминале видел значение счетчика ...
|
Иногда удобнее изучать работу алгоритма не в кристалле, а в компе, например - под отладчиком. Так сказать, разделяй и властвуй - прием и посылку байта по UART - в м/к (т.к. здесь важны именно режимы работы "железа"), а порядок работы алгоритма - в ПК, так как проще влезть и посмотреть, что творится внутри (раз уж отладки в кристалле нету пока).
Глянь в личку.
|
|
|
|
09.07.2012, 11:42
|
#25
|
Заблокирован
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
|
Re: UART + Atmega 8
Для вывода на LCD числа в десятичном представлении надо использовать функцию sprintf. Найдите книгу Лебедева "CodeVisionAVR - пособие для начинающих". Там всё достаточно подробно расписано на русском языке, хотя это просто перевод хелпа из программы.
Числа выводятся в зависимости от типа. Для unsigned char функция будет
// в начале программы
#include ‹alcd.h› // библиотека lcd
#include ‹stdio.h› // библиотека функций ввода-вывода
// перед использованием функций и переменных
char lcd_string[16]; // 16-длина строки дисплея
unsigned char uc_temp1; // временная переменная
......
// во время вывода
uc_temp1=255; // выводим число 255 через переменную uc_temp1
lcd_gotoxy(0,0); // начальная позиция
sprintf(lcd_string,"%u",uc_temp1); // форматируем в строку
lcd_puts(lcd_string); // выводим на экран
для числа в других форматах будут другие функции .
на UART тоже самое, только есть особенности совместной работы с LCD.
для совместной работы посмотрите пример "2USART_LCD" в папке
C:\Program Files (x86)\cvavr \examples
Последний раз редактировалось kosmos440o; 09.07.2012 в 11:46.
|
|
|
|
09.07.2012, 12:11
|
#26
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от kosmos440o
|
надо использовать функцию sprintf
|
Учитывая размер её кода и задачу ТС, лучше всё же пользоваться чем-то своим, коротким и простым. Например, таким:
Код:
|
char *Byte2Str(unsigned char byte)
{
static char buf[4];
char *s = &(buf[3]);
do {
*--s = '0' + (byte % 10);
} while (byte /= 10);
return(s);
} |
Последний раз редактировалось tempora; 09.07.2012 в 12:14.
Причина: Подсократил басенку. :)
|
|
|
|
09.07.2012, 12:40
|
#27
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от kosmos440o
|
Для вывода на LCD числа в десятичном представлении надо использовать функцию sprintf.
|
На МК класса М8 желательно не использовать printf и ее подвиды. Скомпилируйте с ней и без нее и сравните размеры. Удовольствия не получите.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.07.2012, 12:41
|
#28
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от tempora
|
Учитывая размер её кода и задачу ТС, лучше всё же пользоваться чем-то своим, коротким и простым. Например,[skip]
|
Присоединяюсь. +100500!
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.07.2012, 13:09
|
#29
|
Заблокирован
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
|
Re: UART + Atmega 8
Библиотека stdio является стандартной, чужой код легче понимается. Она используется не только в МК, но и в других применениях С, поэтому изучение работы этой функции не бесполезная трата времени. В случае использования "своих" библиотек придётся постоянно что-то придумывать. Я думаю, скоро ТС захочет вывести число с десятичной точкой и знаком. Придётся дописывать Вашу функцию. В конечном результате через пару лет Ваша функция превратится в stdio, только вы затратите ещё время на доделки и мозголомство.
Размер для обучения не имеет значения, к тому же stdio критична только для ATtiny, где она навряд ли будет использоваться. Насколько я помню, её размер около 1 кБайта.
|
|
|
|
09.07.2012, 13:24
|
#30
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от kosmos440o
|
через пару лет Ваша функция превратится в stdio
|
Эта "пара лет" уже прошла (многократно) и ничего страшного не случилось.
Никто не же не утверждает, что от sprintf нужно вовсе отказаться - в некоторых случаях она вполне уместна,... но ставить её повсюду - неправильно. О чём ТС'у и сказали.
Последний раз редактировалось tempora; 09.07.2012 в 14:18.
Причина: Перенес в др. пост.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
ATMEGA простой UART (RS232) без max232
|
EXIS |
Микроконтроллеры, АЦП, память и т.д |
39 |
09.12.2010 18:51 |
Вопрос по формату кадра UART в ATmega-х
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
6 |
19.03.2008 23:56 |
UART и WinAVR
|
SpiderHall |
Микроконтроллеры, АЦП, память и т.д |
1 |
30.10.2006 20:53 |
UART
|
slawa |
Микроконтроллеры, АЦП, память и т.д |
4 |
19.01.2006 12:44 |
UART
|
xaoc |
Микроконтроллеры, АЦП, память и т.д |
13 |
01.07.2005 09:31 |
Часовой пояс GMT +4, время: 00:18.
|
|