roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 мар 2025, 23:59

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Преобразование int В char
СообщениеДобавлено: 06 янв 2012, 16:00 
Не в сети

Зарегистрирован: 15 май 2011, 19:19
Сообщения: 239
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва
ПОмогите пожалуйста, напсал прогу для чтения температуры. на LCD всё работает. Решил отправить температу по уарту. Тут начались проблемы.
У меня есть функция для отправки данных по уарт.
Код:
void USART_SendChar(unsigned char sym)
{
  while(!(UCSRA & (1<<UDRE)));
  UDR = sym;
}

и есть переменная содеражащая температуру:
Код:
uint16_t temp;

Пишу я в while(1) такую шнягу.
Код:
if (symbol == 't') {USART_SendChar((char)temp);}

МК не шлёт эту команду. Я не знаю как быть, мне кажется что я не правильно перевожу переменную int в char :(
Может как то через указатели сделать, дайте пожалуйста просто совет.
И вообще как числа (не char) посылать по уарту ? а то много проектов стоит из за этого.

Добавлено спустя 3 минуты 30 секунд:
И вот ещё, можно ли давать МК обрабатывать сразу несколько команд(обработка температуры, вольтметр, прием команд по уарт и т.п.) или нужно ставить для этого rtos или какую нибудь событейную система (типо чтобы по очереди обрабатывалось всё).


Последний раз редактировалось EasyTech 06 янв 2012, 21:23, всего редактировалось 1 раз.

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

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
про детали типов на Си вам расскажут другие лучше меня, а вот чтобы выполнять много мелких задач не надо чего-то ставить, надо включить мозг и разобраться как работает МК, а следом - написать программу которая все это делает..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


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

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
если есть в протеусе ... выкладывай ... с исходниками конечноже

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некие проблемы
СообщениеДобавлено: 06 янв 2012, 20:05 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2683
Откуда: Где-то в Латинской Америке
А каким компилятором пользуешься? Вот тут http://proavr.narod.ru/z5.htm посмотри.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некие проблемы
СообщениеДобавлено: 06 янв 2012, 20:18 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 06 янв 2012, 21:26 
Не в сети

Зарегистрирован: 15 май 2011, 19:19
Сообщения: 239
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва
на Американском сайте ответили мне :)
Сказали использовать itoa();
проверил :) работает :) :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 06 янв 2012, 23:37 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
Так эт не в сhar Itoa... адрес переменной в си берется "&переменная"... а как ты передаешь 2 байта 1 ... это отдельный вопрос...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 07 янв 2012, 10:54 
Не в сети

Зарегистрирован: 15 май 2011, 19:19
Сообщения: 239
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва
Aseris писал(а):
Так эт не в сhar Itoa... адрес переменной в си берется "&переменная"... а как ты передаешь 2 байта 1 ... это отдельный вопрос...

int8_t. problem?))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 07 янв 2012, 16:28 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
А это уже экзотика.. и не ANSI C ...

есть

CHAR/BYTE int8/uint8 1 байт
int/WORD int16/uint16 2 байта
long/SWORD int32/uint32 4 байта

Я так понял, задачей было перевести бинарное значение в строку...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 08 янв 2012, 10:55 
Не в сети

Зарегистрирован: 15 май 2011, 19:19
Сообщения: 239
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва
Aseris писал(а):
А это уже экзотика.. и не ANSI C ...

есть

CHAR/BYTE int8/uint8 1 байт
int/WORD int16/uint16 2 байта
long/SWORD int32/uint32 4 байта

Я так понял, задачей было перевести бинарное значение в строку...

Да, кстати и не надо было писать int8_t. функция itoa(); спокойно переводит в char любое целое число не важно long long или short, или int :)
Правда не переводит числа с плавающей точкой, обидно. там уже нужна функция sprintf();
Я вот что хотел спросить. ПОдскажите пожалуйста хорошие алгоритмы или протоколы передачи данных по уарт.

Добавлено спустя 31 секунду:
и вот что лучше, как вы думаете... использовать crc8 или modbus?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 09 янв 2012, 11:03 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
crc8 - это не протокол, а алгоритм подсчета контрольной суммы. Можно применять как детектор искажений передачи и часть протокола.
А для чего протокол-то? Стоит ли городить совместимость со сложными протоколами? Лично я сам для себя использую модем-подобный протокол (AT).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Преобразование int В char
СообщениеДобавлено: 12 янв 2012, 02:56 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
EasyTech писал(а):
Правда не переводит числа с плавающей точкой, обидно. там уже нужна функция sprintf();


А в чем проблема передавать бинарное значение и интерпретировать его на второй стороне?

Напр передать значение типа DWORD

DWORD a;

a=0x12131415;

UART_Send((BYTE*)&a,4); // передача битового массива первый аргумент адрес масива, второй размер..
так же передаем хоть флоат, тока интерпретируем потом правильно и размер пишем правильно.

В чем сложность то?

Или тему переименовать нужно преобразование числа в строку? int to string например, ибо в сhar помещается 1 символ, СИМВОЛ


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

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


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

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


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

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