реклама на сайте
подробности

 
 
> STM32 uart как передать нулевой байт
Dениs
сообщение Dec 1 2014, 09:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984



Вообщем вся тема в заголовке ) Вроде бы банально но не могу понять как UART заставить это сделать ... так как когда буфер пуст там 0x00, а я ему говорю еще записать 0x00 естественно он ничего не передает, какой флаг дернуть в принудительном порядке чтобы его заставить отослать нуль ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Dec 1 2014, 10:33
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Исходники - в студию! w00t.gif
Go to the top of the page
 
+Quote Post
Dениs
сообщение Dec 1 2014, 10:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984



Цитата(ViKo @ Dec 1 2014, 12:33) *
Исходники - в студию! w00t.gif


CODE
/********************************************************************************
*************
* RX from modem is comleted
********************************************************************************
*************/
void Machines_ReceiveData(void)
{
USART_ClearITPendingBit(MACHINES, USART_IT_RXNE);
uint8_t data = MACHINES->DR;
if(strlen((char *)machinesBuf) < MACHINES_BUFFER && strlen((char *)machinesBuf) < 5)
{
machinesBuf[strlen((char *)machinesBuf)] = data;
}
else if(strlen((char *)machinesBuf) >= 5)
{
machinesBuf[strlen((char *)machinesBuf)] = data;
}
else
{
memset((uint8_t *)machinesBuf,0,sizeof(uint8_t)*MACHINES_BUFFER);
machinesBuf[0] = data;
}
}

/******************************************************************************
* TX string to ZigBee modem
*******************************************************************************/
void Machines_SendStr(char *string, uint16_t len)
{
uint8_t i = 0;
while(i < len)
{
Machines_SendData(string[i]);
i++;
}
}

/********************************************************************************
*************
* TX char to ZigBee modem
********************************************************************************
*************/
unsigned short Machines_SendData(unsigned short ch)
{
while (!(MACHINES->SR & USART_FLAG_TXE))
os_dly_wait(1);

if(ch != 0x00)
MACHINES->DR = (ch & 0x01FF);
else
MACHINES->DR = 0x0000;
return(ch);
}

Я уже скидывал исходники и показывал

Сообщение отредактировал IgorKossak - Dec 2 2014, 19:35
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Integro
сообщение Dec 3 2014, 06:51
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



Цитата(Dениs @ Dec 1 2014, 13:56) *
...


Где вызов Machines_SendStr?

Сообщение отредактировал IgorKossak - Dec 4 2014, 16:21
Причина редактирования: избыточное цитирование
Go to the top of the page
 
+Quote Post
anpaza
сообщение Jan 9 2015, 23:12
Сообщение #5





Группа: Участник
Сообщений: 10
Регистрация: 6-01-15
Из: Санкт-Петербург
Пользователь №: 84 431



Отгадка простая - терминалка (или какая там программа принимает байты на второй стороне) сжирает нуль.
Тоже на это нарывался, писал в лог с терминалки а устройство толкало бинарные дампы. Приезжало всё нетронутое, кроме нулей sm.gif
Большинство C программ, которые трактуют поток из COM порта как строки, пропускают нуль.
Проще всего дампить через что-то типа cat /dev/ttyUSBx >file.bin

Сообщение отредактировал anpaza - Jan 9 2015, 23:13
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dениs   STM32 uart как передать нулевой байт   Dec 1 2014, 09:42
- - Jekin   Передача начинается сразу после записи в регистр д...   Dec 1 2014, 09:47
- - ViKo   UART не смотрит на то, что ему передали на выдачу....   Dec 1 2014, 09:47
|- - Dениs   Цитата(ViKo @ Dec 1 2014, 11:47) UART не ...   Dec 1 2014, 09:53
|- - kolobok0   Цитата(Dениs @ Dec 1 2014, 12:53) ... Заг...   Dec 1 2014, 10:59
- - ViKo   Вы хотите сказать, что посылая длинное сообщение, ...   Dec 1 2014, 09:58
|- - Dениs   Цитата(ViKo @ Dec 1 2014, 11:58) Вы хотит...   Dec 1 2014, 10:11
|- - ViKo   Цитата(Dениs @ Dec 1 2014, 13:11) Что зна...   Dec 1 2014, 10:18
|- - Dениs   Цитата(ViKo @ Dec 1 2014, 12:18) Просто в...   Dec 1 2014, 10:25
|- - scifi   Цитата(Dениs @ Dec 1 2014, 13:25) Что зна...   Dec 1 2014, 10:51
- - SSerge   Самое время взять учебник и почитать как работает ...   Dec 1 2014, 11:27
- - nx6310   забей в бесконечный цикл совю функцию передачи и п...   Dec 1 2014, 15:03
- - Golikov A.   потому что 0 - признак конца текстовой строки   Jan 10 2015, 08:32
- - mkdx   Сам недавно столкнулся при попытке сделать приборч...   Jan 13 2015, 19:30


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01421 секунд с 7
ELECTRONIX ©2004-2016