Технический форум по робототехнике.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.
elmot » 29 дек 2013, 12:38
Angel71 писал(а):просто резистором обороты убавить. не исключено, что даже небольшого потока воздуха будет достаточно для охлаждения.
Сделано еще проще - перекинул питание вентилятора на линию +5В. Он еле шевелится, конечно, но БП реально холодный.
Теперь другая проблема - UART на STM32F0-Discovery упорно теряет данные.
Если отправляю через Putty, то все ОК, если в винде
- Код: Выделить всё • Развернуть
copy /b a.txt \\.\com22
или в линуксе
- Код: Выделить всё • Развернуть
cat a.txt > /dev/ttyUSB0
То теряется примерно треть байтов. Причем и на 9600, и на 230400.
Прерываний по overrun не получаю, флагов ошибок нет.
Код такой:
- Код: Выделить всё • Развернуть
void UART_Config(void)
{
USART_InitTypeDef usartInit;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
usartInit.USART_BaudRate = 9600;
usartInit.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
usartInit.USART_Mode = USART_Mode_Rx;
usartInit.USART_Parity = USART_Parity_No;
usartInit.USART_StopBits = USART_StopBits_1;
usartInit.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1, &usartInit);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_ORE, ENABLE);
USART_ITConfig(USART1, USART_IT_NE, ENABLE);
USART_ITConfig(USART1, USART_IT_FE, ENABLE);
USART_ITConfig(USART1, USART_IT_ERR, ENABLE);
USART_AutoBaudRateCmd(USART1, DISABLE);
USART_OverrunDetectionConfig(USART1,ENABLE);
USART_Cmd(USART1, ENABLE);
}
void USART1_IRQHandler()
{
if(USART1->ISR & (USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE)) {
USART_ClearFlag(USART1, USART_FLAG_RXNE | USART_FLAG_ORE | USART_FLAG_NE | USART_FLAG_FE);
resetPointers();
return;
}
uint32_t c;
while(USART1->ISR & USART_FLAG_RXNE)
{
c = USART1->RDR;
framePointer++;
}
return;
}
Есть идеи, как это вылечить?
elmot » 31 дек 2013, 00:20
Вот это номер! Оказывается чип silicon labs cp210x - тупо глючный. на длинных передачах теряет байты. Шарман просто! Заменил на пролифик - тут же проблема исчезла
dccharacter » 02 янв 2014, 22:17
ээээ
А вот это что такое:
uint32_t c;
....
c = USART1->RDR;
Это ты фигачишь в переменную пришедшие символы (причем в прерывании). А кто их потом оттуда забирает и когда?
Чо ты кольцевой буффер-то не используешь? Или вообще ДМА?
elmot » 02 янв 2014, 23:57
Это отладочный вариант программы. Я просто читал регистр данных для очистки флагов uart - данные никуда не шли, я просто не мог понять, почему теряются байты. теперь, когда понял, что глючит usb-uart, заменил-поправил и там уже нормальный код. Буфера тама нет, сразу в прерывании байт разламываю на биты и распихиваю куда надо. Байты на скорости 230400 не теряются, оверранов нет. Надо бы еще скорость поднять, но уже наверное будут потери.
dccharacter » 03 янв 2014, 07:33
Тут какая-то лажа. Замкни на цп210х выход на вход и отправь опять туда данные. И посмотри что придет. Без всяких СТМ32
elmot » 03 янв 2014, 08:27
Примерно так и сделал. Только что замкнул cp210x на другой usb-uart. И получил потерянные байты. Вот и вся лажа. Вот только я не знаю, где лажа - конкретный экземпляр чипа кривой, все они кривые или драйвера дурят.
elmot » 25 янв 2014, 19:48
CoIDE только у меня безбожно виснет или это общая проблема?
Angel71 » 25 янв 2014, 22:10
вроде не висла, хотя я её быстро стёр
кейл в общем поприятней
elmot » 25 янв 2014, 22:21
Все хлам. Напроситься чтоле в JetBrains, чтоб быстрее напилили свою среду...
elmot » 01 фев 2014, 11:54
Переключился на тариф для "почетных абонентов" - 3 года на одном и том же провайдере. 50мбит за 10 баксов в месяц - и мне все нравится!
Angel71 » 01 фев 2014, 16:02
на пару десятков км по оптике.
не не не, так не пойдёт.
пинг хороший, совсем без роутера или что-то из нормального на подобии linksys?
elmot » 01 фев 2014, 17:10
Заурядный netgear
elmot » 23 апр 2014, 17:00
Myp » 23 апр 2014, 17:43
а зачем вы шар до упора надували?
чем сильнее надут тем ниже поднимется.
вон как матёрые запускатели делают.
чуть чуть газу чтоб тока тока оторвался, остальное запас для расширения.
elmot » 24 апр 2014, 09:27
Зависит от материала. Латексные метеозонды _обычно_ прекрасно тянутся, поэтому их нормально надувают. А вот большие стратостаты - из прорезиненной тряпки, не тянутся.