Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 14.11.2016, 17:12  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от индюк Посмотреть сообщение
а не приходит на ум
Канэшна нэт! Не все же индюки!
Сообщение от индюк Посмотреть сообщение
я могу и не читать регистр например
Бред! Тогда к чему вся эта галиматья со сбросом флага?
Сообщение от индюк Посмотреть сообщение
мошт у меня оладка идет и я вместо чтения регистра смотрю заходит у меня прога в прерывание
Опять бред! А прерывание тут к чему?
Сообщение от индюк Посмотреть сообщение
ставлю маркер вот такой
Снова бред! Никто в здравомыслии портом не дёргает! Может с комбикормом что-то не так, в смысле в консерватории?
Реклама:
STM32F0 вне форума  
Непрочитано 14.11.2016, 17:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от индюк Посмотреть сообщение
а не приходит на ум что я могу и не читать регистр например?
Жалкая попытка вылезть сухим из воды?
Нет уж, спалился так по полной, читать документацию не любишь...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 14.11.2016, 17:41  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,662
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от dosikus Посмотреть сообщение
читать документацию не любишь...
да канешна ага)) чтоб не полдьзоваться спл и халом все сраницы порчитал а тут два предложения не рядом не прочитал.

да и вообще - пока что зависает тут не у меня из года в год.
у меня то гпс парсит на ура
__________________
кагмаподэ магмаподэ

Последний раз редактировалось индюк; 14.11.2016 в 17:44.
индюк вне форума  
Непрочитано 14.11.2016, 17:43  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,662
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

STM32F0,
дядь - с такого песни то поешь свои галимые?
горшочек для кака подарить?
а то я смотрю ты усрался уже писанину тут писать и ей же радоваться
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 14.11.2016, 17:55  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от индюк Посмотреть сообщение
писанину тут писать
Та ладно, ты же не в курятнике. Вот объясни, попробуй, нахрена ты портом дёргаешь? У тя чё, 64386 портов на МК? Нахрена ты сбрасываешь флаг, если данные один хрен не читаешь? И что, прерывание в любом случае спасает твою грешную душу? ИМХО, ты уже путаешься в показаниях.
STM32F0 вне форума  
Непрочитано 14.11.2016, 17:57  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от индюк Посмотреть сообщение
у меня то гпс парсит на ура
Угу! Помним! "ПисАл не я, я только разместил объяву!"(с). "Я памятник воздвиг себе нерукотворный, я крышу крыл, сей труд мой благородный!"(с).
STM32F0 вне форума  
Непрочитано 14.11.2016, 18:02  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,662
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Сообщение от STM32F0 Посмотреть сообщение
Та ладно, ты же не в курятнике. Вот объясни, попробуй, нахрена ты портом дёргаешь? У тя чё, 64386 портов на МК? Нахрена ты сбрасываешь флаг, если данные один хрен не читаешь? И что, прерывание в любом случае спасает твою грешную душу? ИМХО, ты уже путаешься в показаниях.
мне нет смысла комуто чото объяснять, ибо я ничего не спрашиваю.
среди таких как ты это породит еще больший ниочемный шквал гавна.
я просто работаю как мне удобно. у меня все работает.
ВСЁ!
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 14.11.2016, 19:14  
Ioann_II
Временная регистрация
 
Регистрация: 30.05.2005
Сообщений: 53
Сказал спасибо: 1
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
Ioann_II на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

Вот блин, какой переполох получился... Жаль...

По сабжу немного продвинулся. В обработчике чтения всё вроде нормально действует. Если строку слать назад в "блоковом" режиме, т.е. не через прерывание, то всё нормально. Если через прерывание, то.... то, о чём писал выше. Похоже, что обработка приёма конфликтует с обработкой передачи.... Хотя буфера-то разные - буду копать дальше.

dosikus,
Спасибо что ткнули носом в IDLE - немного почитал-разобрался вроде-бы. Но не очень подходит - во всяком случае от гипертерминала прерывание будет всё равно на каждый символ... а на пару 0x0d 0x0a скорее всего одно... С DMA заманчиво, если-бы была возможность на аппаратном уровне отслеживать поток и делать прерывание по совпадению... Кстати, о каких БОЛЕЕ СОВЕРШЕННЫХ ВОЗМОЖНОСТЯХ F0 вы упомянули?

И что Вы имели в виду
Цитата:
вы абсолютно не понимаете процесс, частично в этом виновна ваша любовь к авр , а в основном калокуб.
Ioann_II вне форума  
Непрочитано 14.11.2016, 19:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

В том-то и дело что не понимаете , иначе забросили бы калокуб подальше.
В F0 есть прерывание по таймауту и по определенному символу. К примеру модбас, размер пакета не может быть больше 256. Да и у ЖПС строки не особо раличны по длинн. Заряжаем. DMA на максимум, в прерывании тормозим канал DMA,
в счетчик DMA имеем размер пакета.
Плюсом идет аппаратный расчет CRC.

индюк, то есть из вредности ты так и оставишь лишнию очистку?
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 15.11.2016 в 16:32.
dosikus вне форума  
Непрочитано 15.11.2016, 16:16  
Ioann_II
Временная регистрация
 
Регистрация: 30.05.2005
Сообщений: 53
Сказал спасибо: 1
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
Ioann_II на пути к лучшему
По умолчанию Re: stm32 HAL UART - не могу понять

И всё-таки. Делаю дополнительную проверку ("заплатка")
Вызов Callback должен быть, если в начале буфера нет 0.

При приёме первого символа 0x0d в конец строки должен попасть 0.
После этого указатель перемещается в начало и вызов Callback.

В Callback-е строка копируется (strncpy) в другой буфер.

При приёме следующего символа 0x0a в начало строки должен попасть 0.
Т.к. там 0, то Callback не должен быть вызван.

НО ОН ВЫЗЫВАЕТСЯ!!!!! ??? И ЭТО ТОЛЬКО ЕСЛИ терминаторами назначить 0x0d или 0x0a если другие символы то ВСЁ НОРМАЛЬНО!!!
Dosikus, что я тут не понимаю? - Поясните мне уж.....

Вот код:
Код:
static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)
{
  uint16_t* tmp;
  uint32_t tmp_state = 0;
  uint16_t temp;

  tmp_state = huart-›State; 
  if((tmp_state == HAL_UART_STATE_BUSY_RX) || 
     (tmp_state == HAL_UART_STATE_BUSY_TX_RX))
  {
    // читаем символ из приёмника
    temp = huart-›Instance-›DR;

    // проверка на завершающий символ
    // завершающий символ меняем на символ завершения строки
    if(temp == huart-›Terminator1) temp = 0x00;
    if(temp == huart-›Terminator2) temp = 0x00;

    // та самая дополнительная проверка - в начале строки не 
    // должно быть завершающего кода 0x00
    if((temp != 0x00) || (huart-›pRxBuffPtr != huart-›pRxBuffSave))
    {
      if(huart-›Init.WordLength == UART_WORDLENGTH_9B)
      {
        tmp = (uint16_t*) huart-›pRxBuffPtr;
        if(huart-›Init.Parity == UART_PARITY_NONE)
        {
          *tmp = (uint16_t)(temp & (uint16_t)0x01FF);
          huart-›pRxBuffPtr += 2;
        }
        else
        {
          *tmp = (uint16_t)(temp & (uint16_t)0x00FF);
          huart-›pRxBuffPtr += 1;
        }
      }
      else
      {
        if(huart-›Init.Parity == UART_PARITY_NONE)
        {
          *huart-›pRxBuffPtr++ = (uint8_t)(temp & (uint8_t)0x00FF);
        }
        else
        {
          *huart-›pRxBuffPtr++ = (uint8_t)(temp & (uint8_t)0x007F);
        }
      }
    }

    // теперь, если был завершающий символ, надо сбросить
    // счётчик, указатель и вызвать Callback
    if(temp == 0x00) huart-›pRxBuffPtr = huart-›pRxBuffSave, 
                             huart-›RxXferCount = huart-›RxXferSize;
//                             HAL_UART_RxCpltCallback(huart);

    // Callback Вызвать только если строка непустая
    if((temp == 0x00) && (*huart-›pRxBuffSave !=0)) HAL_UART_RxCpltCallback(huart);

    // проверка на заполнение буфера - при полном буфере
    // указатель и счётчик сбросить, Callback не вызывать
    if(--huart-›RxXferCount == 0) huart-›pRxBuffPtr = huart-›pRxBuffSave,
                                               huart-›RxXferCount = huart-›RxXferSize;

    return HAL_OK;
  }
  else
  {
    return HAL_BUSY; 
  }
}

Последний раз редактировалось Ioann_II; 15.11.2016 в 18:30.
Ioann_II вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу собрать схемку, не могу понять что за транзисторы sobyninsk Электроника - это просто 10 27.09.2013 12:37
Помогите разобраться со схемой. я не могу понять что не так. sofist Источники питания и свет 17 15.11.2007 15:52
Ошибка ISP режима (ISP Mode Error) Не могу понять в чём дело zhan99999 Микроконтроллеры, АЦП, память и т.д 4 11.01.2007 02:21
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43
Не могу понять про float в PicBasicPro Raushan Микроконтроллеры, АЦП, память и т.д 3 13.06.2005 13:57


Часовой пояс GMT +4, время: 22:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot