| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Форматирование данных и передача даных UART
28.01.2015, 18:30
|
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
вывожу по очереди числа от 0 до 9
|
PHP код:
|
#include ‹mega8.h›
#include ‹stdio.h›
#include ‹delay.h›
unsigned int kostil (unsigned char q)
{
delay_ms(1000);
putchar('B');
putchar('i');
putchar('z');
putchar('z');
putchar('a');
putchar('r');
putchar('d');
putchar('?');
putchar('0');
putchar('0');
putchar('0');
putchar(q);
}
void main(void)
{
PORTC=0x01;
DDRC=0x00;
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
while (1)
{
kostil ('1');
kostil ('2');
kostil ('3');
kostil ('4');
kostil ('5');
kostil ('6');
kostil ('7');
kostil ('8');
kostil ('9');
kostil ('0');
};
}
|
но сколько я не копал этот кусок кода, я не вижу где тут проверяется слово Bizzard и ?
как убрать необходимость слова Bizzard в посылке?
|
PHP код:
|
char ntoa(char n) { // Ïðåîáðàçîâàíèå íèáëà â ASCII
n=n&0x0f;
if (n‹0x0a) n+=48; // 0x30
else n+=55; // 0x37
return n;
}
void i2btoa(int n, char *mas) { // Ïðåáðàçîâàíèå äâóõ áàéòîâ â ASCII
for(int i=3; i›-1; i--) mas[i]=ntoa(n››abs(4*(i-3)));
}
char aton(char c) { // Ïðåîáðàçîâàíèå îäíîãî áàéòà â íèáë
if(c‹0x3A) c-=0x30;
else c-=0x37;
if(c›0x0f) c=0;
return c;
}
int a4btoi(char *mas) { // Ïðåîáðàçîâàíèå ñòðîêè èç ÷åòûðåõ ASCII â int
int n=0;
for (int i=3; i›-1; i--) n+=aton(mas[i])‹‹abs(4*(i-3));
return n;
|
Последний раз редактировалось WindoЗavr; 28.01.2015 в 19:34.
|
|
|
|
28.01.2015, 19:47
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от WindoЗavr
|
|
где тут проверяется слово Bizzard и ?
|
Bizzard это пурга, которую я пронес в качестве помехи для иллюстрации "нереагирования" на всякую пургу. А "?" проверяется после проверки количества байтов в буфере. Это прокомментировано в #47.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
28.01.2015, 20:20
|
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
я биззард заменял другими буквами и удалял
в обоих случаях выводится неверное число
|
|
|
|
28.01.2015, 20:26
|
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
ввод вывод.zip
WZ_data_in это принимающая часть от вашей программы
uart2mk это протеус и проект CV
задействованы
ком 3 и ком 4
|
|
|
|
28.01.2015, 21:05
|
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Выкиньте из костила 'Blizzard' и знак вопроса, оставьте только
|
Цитата:
|
unsigned int kostil (unsigned char q)
{
delay_ms(1000);
putchar('0');
putchar('0');
putchar('0');
putchar(q);
}
|
В подпрограмме чтения порта замените 1 на 3
|
Цитата:
|
|
while(CommPort1-›InBuffUsed›3) {
|
Последний раз редактировалось Yurkin2014; 28.01.2015 в 21:08.
|
|
|
|
29.01.2015, 00:18
|
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
спасибо, заработало
CV компилит, но ругается Warning: function must have a return value
на unsigned int kostil (unsigned char q)
но она же имеет возвращаемое значение вроде
Последний раз редактировалось WindoЗavr; 29.01.2015 в 00:26.
|
|
|
|
29.01.2015, 00:43
|
|
|
Заблокирован
Регистрация: 26.12.2013
Сообщений: 379
Сказал спасибо: 66
Сказали Спасибо 61 раз(а) в 23 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
программа на МК передаёт десятичные числа, а комп воспринимает как их 16 ричные
а где в программе систему счисления поменять можно?
если передать
putchar('?');
putchar('1');
putchar('1');
putchar('1');
putchar('1');
прога говорит 4369
чтоб в проге получить 1111
надо отправить
putchar('?');
putchar('0');
putchar('4');
putchar('5');
putchar('7');
Последний раз редактировалось WindoЗavr; 29.01.2015 в 00:51.
|
|
|
|
29.01.2015, 01:03
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
WindoЗavr, набросал на скорую руку.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
29.01.2015, 01:18
|
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от WindoЗavr
|
|
чтоб в проге получить 1111
|
Замените строчку вывода числа
|
Цитата:
|
|
RData-›Caption=IntToStr(aton(mas[0])*1000+aton(mas[1])*100+aton(mas[2])*10+aton(mas[3]));
|
|
|
|
|
29.01.2015, 06:45
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от Yurkin2014
|
|
Замените строчку вывода числа...
|
Это преобразование кого в чего?
Изначально ставилась задача измерить и передать в комп. Значит - передавать тугрики АЦП, соответственно, двухбайтовое целое. "А ты что сделал, доктор?"(с) Если ТС называет обрезание кастрированием, это же не значит, что надо выполнять буквально.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 29.01.2015 в 06:49.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:08.
|
|