Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 09.07.2012, 13:34   #31
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
Библиотека stdio является стандартной, чужой код легче понимается.
Разве кто-то возражал? Замечания были несколько иного плана. Однако, если в программе нужно вывести в hex-формате один байт и в одном месте - вряд-ли стоит заморачиваться на stdio. Кроме того, написание подобных функций несет развивающую нагрузку. Применение стандартных библиотек лучше применять на более позднем уровне, когда уже на первый план вылезут такие неприятности, как скорость разработки, свобода в выборе МК...
Впрочем, на то и форум. Здесь каждый высказывает свои мысли, а ТС-у решать, что и почем...
Реклама:
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 09.07.2012, 13:42   #32
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: UART + Atmega 8

Пример получения и отправки данных из приёмного буфера с использованием стандартной функции getchar (функция эхо):

(Только для МК с одним USART)

Перед использованием:
char rx_data [64]; // 64 - размер приёмного буфера. Может быть другим
char rx_bytes; // для сохранения числа принятых байт


//функция эхо для контроля правильности приёма
void echo () // после того, как принято сообщение
{
char i=0; // переменная для цикла
rx_bytes = rx_counter; // сохранили число принятых байт
while (rx_counter) {rx_data[rx_rd_index]=getchar();}; // загнали данные из rx_buffer[] в rx_data[]
for (i=0;i‹rx_bytes;i++) {putchar (rx_data [i]); };// посылка эхо
rx_rd_index=0;rx_wr_index=0; // обнуление счётчиков приемника, если этого нет в RXC
rx_counter=0; // контрольный выстрел))) rx_counter обнуляется автоматически
}

// где-то в main

// получили сообщение, как определить - другой вопрос
echo(); // отправили обратно тоже самое (эхо)

Для отладки ввода-вывода на комп удобно использовать прогу Com Port Toolkit.

Последний раз редактировалось kosmos440o; 09.07.2012 в 14:15.
kosmos440o вне форума  
Непрочитано 09.07.2012, 13:58   #33
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
Пример получения данных из приёмного буфера с использованием стандартной функции getchar (функция эхо):
Осталось объяснить ТС-у, что:
Функция Вводит символ из потока stdin.

Синтаксис #include ‹stdio.h›
int getchar(void);

Описание getchar - это макрокоманда, вводящая символ из
потока stdin. Она определена следующим образом:
getc(stdin).

Возвращаемое При успешном завершении функция getchar возвращает
значение считанный символ после предварительного
преобразования его в целое без расширения знака.
При возникновении ситуации EOF или при ошибке она
возвращает EOF.

Переносимость Функция поддерживается на системах UNIX, описана
Керниганом и Ритчи. Поддерживается стандартом ANSI
C. Функция не совместима с Windows.

И от себя добавить, что входным потоком stdin могут быть НЕ ТОЛЬКО выходные данные модуля UART. Где-то так...

(Извиняюсь за кривизну форматирования текста при кат'н-пейст)
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 09.07.2012, 14:13   #34
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
Насколько я помню, её размер около 1 кБайта.
На самом деле - 3,25 Кб, что отъест от памяти M8 почти 41% доступной памяти - многовато, даже для учебных задач.

Добавил еще вызов sscanf и получилось, что, напару со sprintf'ом, они занимают 4Кб - ровно половину памяти M8.

Последний раз редактировалось tempora; 09.07.2012 в 14:17.
tempora вне форума  
Непрочитано 09.07.2012, 14:56   #35
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: UART + Atmega 8

Только что сделал программу в CVAVR 2.05 с stdio - размер без неё был 640 Байт, с ней 1.7 кБайт. Без оптимизации по размеру 1.9 кБайт. Туда влезет ещё куча всего. Пара строчек русских букв на ЛСД сожрёт больше.
Вложения:
Тип файла: zip std.zip (14.1 Кб, 55 просмотров)
kosmos440o вне форума  
Непрочитано 09.07.2012, 15:06   #36
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
сделал программу ... с stdio - размер ... 1.7 кБайт
Во-первых, не "с stdio", а с sprintf, в stdio ведь и еще кое-какие функции есть, а во вторых - эти 1.7Кб ну никак не смогут сделать этого:
Сообщение от kosmos440o Посмотреть сообщение
Я думаю, скоро ТС захочет вывести число с десятичной точкой и знаком.
tempora вне форума  
Непрочитано 09.07.2012, 15:19   #37
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию Re: UART + Atmega 8

C десятичной точкой и знаком (float и int/10)

float mf_temp=14.8;
int i_temp=148;

sprintf(lcd_string,"%2.1f",mf_temp);
lcd_puts(lcd_string);

sprintf(lcd_string,"%i.%1u",i_temp/10,i_temp%10); // можно и по-другому
lcd_puts(lcd_string);

В чём проблемы?

А на ваших костылях ТС до Езернета никогда не доберётся)))
kosmos440o вне форума  
Непрочитано 09.07.2012, 15:53   #38
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
В чём проблемы?
На данный момент - в отсутствии архива с проектом, из которого был взят приведённый код.

Так как предыдущий проект на такой код выводит "несколько не то, что ожидается":

Последний раз редактировалось tempora; 09.07.2012 в 16:44.
tempora вне форума  
Непрочитано 09.07.2012, 17:42   #39
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: UART + Atmega 8

Даа, воистину "библиотека stdio является стандартной".
И кроме того - так трудно бывает порой понять свой код!.. Чужой - "легче".
tempora вне форума  
Непрочитано 09.07.2012, 18:13   #40
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: UART + Atmega 8

Сообщение от kosmos440o Посмотреть сообщение
А на ваших костылях ТС до Езернета никогда не доберётся)))
Уважаемый, это не наши костыли. Это всего лишь предложенная нами методика постепенного понимания сути происходящего в программе. Тупой вызов закрытой функции никогда не научит человека понимать отображения чисел на разных основаниях счисления. Давайте спросим ТС-а, насколько полно он прочитал и (главное) понял описание базовой printf(). Насколько ее применение открыло ему "просветление"?
Нам с коллегой tempora костыли уже довольно давно не нужны. Ни с библиотеками, ни без оных.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Закрытая тема

Закладки


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 02:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot