Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
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
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
|
Re: Форматирование данных и передача даных UART
Сообщение от Yurkin2014
|
Замените строчку вывода числа...
|
Это преобразование кого в чего?
Изначально ставилась задача измерить и передать в комп. Значит - передавать тугрики АЦП, соответственно, двухбайтовое целое. "А ты что сделал, доктор?"(с) Если ТС называет обрезание кастрированием, это же не значит, что надо выполнять буквально.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 29.01.2015 в 06:49.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:12.
|
|