roboforum.ru

Технический форум по робототехнике.

Elmot - профессия - дилетант

Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: Elmot - профессия - дилетант

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;
}


Есть идеи, как это вылечить?

Re: Elmot - профессия - дилетант

elmot » 31 дек 2013, 00:20

Вот это номер! Оказывается чип silicon labs cp210x - тупо глючный. на длинных передачах теряет байты. Шарман просто! Заменил на пролифик - тут же проблема исчезла

Re: Elmot - профессия - дилетант

dccharacter » 02 янв 2014, 22:17

ээээ
А вот это что такое:
uint32_t c;
....
c = USART1->RDR;

Это ты фигачишь в переменную пришедшие символы (причем в прерывании). А кто их потом оттуда забирает и когда?

Чо ты кольцевой буффер-то не используешь? Или вообще ДМА?

Re: Elmot - профессия - дилетант

elmot » 02 янв 2014, 23:57

Это отладочный вариант программы. Я просто читал регистр данных для очистки флагов uart - данные никуда не шли, я просто не мог понять, почему теряются байты. теперь, когда понял, что глючит usb-uart, заменил-поправил и там уже нормальный код. Буфера тама нет, сразу в прерывании байт разламываю на биты и распихиваю куда надо. Байты на скорости 230400 не теряются, оверранов нет. Надо бы еще скорость поднять, но уже наверное будут потери.

Re: Elmot - профессия - дилетант

dccharacter » 03 янв 2014, 07:33

Тут какая-то лажа. Замкни на цп210х выход на вход и отправь опять туда данные. И посмотри что придет. Без всяких СТМ32

Re: Elmot - профессия - дилетант

elmot » 03 янв 2014, 08:27

Примерно так и сделал. Только что замкнул cp210x на другой usb-uart. И получил потерянные байты. Вот и вся лажа. Вот только я не знаю, где лажа - конкретный экземпляр чипа кривой, все они кривые или драйвера дурят.

Re: Elmot - профессия - дилетант

elmot » 25 янв 2014, 19:48

CoIDE только у меня безбожно виснет или это общая проблема?

Re: Elmot - профессия - дилетант

Angel71 » 25 янв 2014, 22:10

вроде не висла, хотя я её быстро стёр :) кейл в общем поприятней

Re: Elmot - профессия - дилетант

elmot » 25 янв 2014, 22:21

Все хлам. Напроситься чтоле в JetBrains, чтоб быстрее напилили свою среду...

Re: Elmot - профессия - дилетант

elmot » 01 фев 2014, 11:54

Переключился на тариф для "почетных абонентов" - 3 года на одном и том же провайдере. 50мбит за 10 баксов в месяц - и мне все нравится!
Изображение

Re: Elmot - профессия - дилетант

Angel71 » 01 фев 2014, 16:02

на пару десятков км по оптике. :D не не не, так не пойдёт. :) пинг хороший, совсем без роутера или что-то из нормального на подобии linksys?

Re: Elmot - профессия - дилетант

elmot » 01 фев 2014, 17:10

Заурядный netgear

Re: Elmot - профессия - дилетант

elmot » 23 апр 2014, 17:00


Re: Elmot - профессия - дилетант

Myp » 23 апр 2014, 17:43

а зачем вы шар до упора надували?
чем сильнее надут тем ниже поднимется.

вон как матёрые запускатели делают.
Изображение
чуть чуть газу чтоб тока тока оторвался, остальное запас для расширения.

Re: Elmot - профессия - дилетант

elmot » 24 апр 2014, 09:27

Зависит от материала. Латексные метеозонды _обычно_ прекрасно тянутся, поэтому их нормально надувают. А вот большие стратостаты - из прорезиненной тряпки, не тянутся.


Rambler\'s Top100 Mail.ru counter