Перейти к содержанию

Serjaru

Участник
  • Публикаций

    91
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Serjaru

  • Звание
    Частый гость
  • День рождения 23.02.1979

Контакты

  • Сайт
    http://
  • ICQ
    969622

Информация

  • Город
    Москва

Старые поля

  • skype
    serjaru
  • G+
    serjaru
  1. Сломал мозг! STM32F107VCT6, прерывание, USART2

    Народ!!!! спасибо всем, кто подсказал. Проблему понял и решил. Наверно это одна из тупейших тем, но сорри. На то он и форум. Еще раз спасибо за помощь и советы! Тема закрыта. Цитата(x893 @ Dec 15 2017, 22:16) Так написал же Sergey Abaev, что он не читает RM. Пусть код индусский изучает. Видимо и примеры ему тоже смотреть лень. Сразу в бой с HAL_... - как Чапаев на белом коне. Это вы зря! Примеров перелопатил много! Просто не понятно, почему так просто можно "подвесить" МК. Я уже разобрался конечно. Цитата(adnega @ Dec 15 2017, 20:47) Поможет обработка переполнения приемника. Если произойдет переполнение приемника, а соответствующих флаг вы не сбросите, то будете постоянно находится в прерывании приемника. Подробности в RM. СПАСИБО!!! Посмотрю RM Цитата(x893 @ Dec 15 2017, 21:04) Можно добавить HAL_UART_ErrorCallback и там отслеживать ошибки мастерства программирования. Вот это не знал!!!! Что-то не подумал над этим, а действительно! Спасибо!! Цитата(sadat @ Dec 15 2017, 21:27) Ну и кто за вас будет сбрасывать всякие ошибки приёма? Полностью уверен в том, что устанавливается бит ошибки приёмника (а их там несколько) - вот всё и "тухнет". Виноват - я болван Цитата(ViKo @ Dec 15 2017, 13:09) Не хватает воли плюнуть на HAL, изучить Reference Manual и написать простую программу самостоятельно, не выдергивая из "большого". Частично конечно согласен, но форум и знающие люди быстрее направят, а иначе зачем форум. Это конечно не говорит, что я вылез из пещеры и сразу в бой. Но и книги + форум = лучше Цитата(x893 @ Dec 15 2017, 21:48) HAL их сбрасывает за меня (и за остальных тоже). Полностью можно быть уверенным после просмотра кода. Да я делал проект через куб, и добавил только, что выше. Просто удивляет, почему так просто можно "подвесить" МК. Но уже все понял! Спасибо! Цитата(pvman @ Dec 15 2017, 22:11) когда "виснет", смотреть состояние флагов usart. в обработке прерывания проще убрать обработку через HAL, это будет значительно читабельнее и в сотни раз короче и быстрее. в даташите на пальцах всё расписано, сделать несколько обязательных строчек и всё. Век живи, век учись! Спасибо, учтем! Цитата(vlad_new @ Dec 17 2017, 12:36) Можно попробовать в прерывании, перед выходом, поставить что то типа сброса всех флагов и ошибок напрямую в регистрах уарта. Скорее всего, как уже было замечено, какой то флаг вам не дает выйти из прерывания ( вернее вы туда тут же влетаете ). Ну или анализируйте, на сколько корректно HAL всё это делает за вас СПАСИБО!!!!! Цитата(leocat @ Dec 17 2017, 22:31) Это с какой же частотой UART "бомбить" нужно, чтобы "заклинило". Не знаю, не знаю... У меня 1 мбит/сек на прерываниях ничего не теряет. Ну и правильно написали: HAL - в топку. Это индусское изделие еще тот гемор. Ну и если прерывание уже в обработке (для UART например), то повторно его не вызовете. Флаг сбрасывать нужно, ручками. Мало того, если по выходу из прерывания его (флаг) не сбросить ( USART_ClearITPendingBit( USART1, USART_IT_RXNE ); ), то повторно и не сработает. ( пример из SPL ) 115200, где-то получалось около 720 байт в сек. Наверно это немного. Но как я понял, принимает он без проблем, всё успевает. А вот назад, в сторону компа - затыкается. И видимо я не ждал окончания отправки. И как-то все висло! Цитата(juvf @ Dec 18 2017, 10:20) Вставал на подобную граблю. Не знаю, может вам это поможет.... St сделали багу закладку, чтоб не всё так сладко было, и оформили её как фичу, имхо. Суть в том, что прерывание RXNEIE срабатывает не только когда RXNE==1, но и ИЛИ когда ORE==1. У меня было так, что один раз когда нибудь встанет флаг ORE, и я зависал навечно в прерывании RXNEIE. Вы в одном обработчике должны проверять оба флага и делать соответствующее ветвление, ну и соответственно сбрасывать флаг ORE. Спасибо, проверю!!! Цитата(rakpavel @ Dec 18 2017, 13:15) да, флаг USART_FLAG_ORE -указывает на ошибку переполнения, как раз похоже на случай ТС. Спасибо! Спасибо!
  2. Сломал мозг! STM32F107VCT6, прерывание, USART2

    Цитата(ViKo @ Dec 15 2017, 13:09) Не хватает воли плюнуть на HAL, изучить Reference Manual и написать простую программу самостоятельно, не выдергивая из "большого". Ну такие ответы от умников я тоже ожидал. Проходите мимо!
  3. Сломал мозг! STM32F107VCT6, прерывание, USART2

    Есть программка для выявления проблемы. Простое usart эхо, принимает байты - срабатывает прерывание и отправляет hello назад. Сам код может быть странный, но суть не в этом. Выдернули из большого. Суть в том, что прерывание "виснет" когда начинаю бомбить быстро байтами. Как будто захлебывается. Помогает только снятие питания или резет. и срабатывает строка "if(HAL_UART_Receive_IT(&huart1, &rcv, 1)!=HAL_OK)" Как быть? В чем проблема? Сразу для ответов "гугли", "читай RM" и прочих ... проходим мимо! Я хочу получить ответ, о тех, кто действительно умный и знает, как решить проблему, кто уже сталкивался с этим. Код.... UART_HandleTypeDef huart1; .... char rcv; volatile int rcvd; .... .... int main(void) { ...   MX_USART1_UART_Init(); ...   while (1)   {         if(rcvd)         {             HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_SET);             rcvd = 0;             HAL_UART_Transmit(&huart1, "Hello!\r\n", 8, 0xFFFF);             HAL_GPIO_WritePin(Led_GPIO_Port, Led_Pin, GPIO_PIN_RESET);         }   } } .... .... .... void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {     if(huart == &huart1)     {         if(rcv == '\n') rcvd = 1;         if(HAL_UART_Receive_IT(&huart1, &rcv, 1)!=HAL_OK)         {             HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0);         }     } } ... ... ...
  4. Сломал мозг! STM32F107VCT6

    А можно по подробнее для меня идиота ) Плиз
  5. Сломал мозг! STM32F107VCT6

    Сломал весь мозг! Есть процессор STM32F107VCT6 Светодиод на PE0 (выход) Кнопка на PC13 (вход) Делаю простою программу: При замыкании кнопки на землю зажигаем светодиод (код ниже), Но после программирования нога PC13 притянута к нулю! Но на осциллографе видно, что ее притянуло к 0. При этом внешне нога PC13 через внешний резистор 4к7 подтянута на +3.3 Если отключить питание и снова включить, то будет нормально - на ней уже будет +3.3 Парадокс, что только на этой ноге такие чудеса. Уже все перепробовал. Есть подозрение, что как-то связанно с SWO/JTAG Что это? и почему именно с этой ножкой такие чудеса? пробовали на разных платах и макетках разных производителей - одно и тоже! CODE#include "main.h" #include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1) { if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)) { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_RESET); } else { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_SET); } } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV5; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.Prediv1Source = RCC_PREDIV1_SOURCE_PLL2; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; RCC_OscInitStruct.PLL2.PLL2State = RCC_PLL2_ON; RCC_OscInitStruct.PLL2.PLL2MUL = RCC_PLL2_MUL8; RCC_OscInitStruct.PLL2.HSEPrediv2Value = RCC_HSE_PREDIV2_DIV5; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); __HAL_RCC_PLLI2S_ENABLE(); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); } void _Error_Handler(char * file, int line) { while(1) { } } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line) { } #endif
  6. Подскажите пожалуйста по STM32F107VCT6

    Не понимаю почему! Есть разработанная схема с STM32F107VCT6, кварт 25, кварт 32768 прошиваем простую прошивку, где каждую минуту в UART2 выводим строку "Hello world" подаем питание, какое-то время работает и потом замолкает! Отключаем питание, включаем - молчит. Опять отключаем питание, ждем подольше и опять включаем, вроде как запустилось. Но потом опять замолкает. Не понимаю, в чем может быть дело. Может, кто сталкивался с таким? можем по питанию, что-то? Резет не помогает, быстрое отключение-включение питания не помогает. Не пойму эту мистику! Помогите, кто чем может. Советы и т.п.
  7. Требуется монтажник на дому. Москва или ближнее подмосковье. Несложные платы. Без BGA, только smd и разъемы. От 200-500 точек пайки на плату. Пишите на serjaru@gmail.com
  8. Отладочная плата SK-AT91SAM9XE512-S3E

    • Atmel AT91SAM9XE512 (ARM926, 512k Flash, EMC, SD-card, Ethernet, USB-host, USB-client, RS232, I2C, SPI ...) • Xilinx FPGA Spartan3E-500 (500 тысяч эквивалентных логических вентилей). • GSM/GPRS/GPS модуль SIM508 посадочное место. • 64M SDRAM (16Mx32), 256Mx8 NAND Flash. • Ethernet PHY, USB-host, USB-client, SD/MMC card, RS232. • 37 линий I/O для микоконтроллера, 111 линий I/O для FPGA. С SDшки грузится линукс. Больше не проверял. В коробке, не пользовались. Лежи, пылится! Цена: 1500 руб. Тел. 8-926-000-33-66 Сергей Фото с сайта: [attachment=96306:1943098808.jpg] [attachment=96307:1943098839.jpg] Реальные фотки: [attachment=96314:20151026_105303.jpg] [attachment=96315:20151026_105313.jpg] [attachment=96316:20151026_105319.jpg] [attachment=96317:20151026_105325.jpg] [attachment=96318:20151026_105332.jpg]
  9. Отладочная плата EasyMX Pro v7 (ARM) Подробнее описание можно найти на сайте Mikroe. Новая, не пользовались, все в комплекте! Все в коробке! Цена: 4500 руб. Тел. 8-926-000-33-66 Сергей [attachment=96304:Snap_201...9h07m15s.png] [attachment=96305:Snap_201...9h08m18s.png]
  10. Продам KIT mel QTouch QT600 QT600 - полный комплект аппаратного обеспечения для разработки и отладки сенсорных устройств. QT600 позволяет проектировщикам экспериментировать с Touch-технологией Atmel. Не пользовались! Все в комплекте! В коробке Цена 4000 руб. 8-926-000-33-66 Сергей [attachment=96301:20151002_105450.jpg] [attachment=96302:20151002_105500.jpg] [attachment=96303:20151002_105544.jpg]
  11. Отладочная плата SK-AT91SAM9XE512-S3E

    Отладочная плата SAM9-Spartan Отладочная плата SK-AT91SAM9XE512-S3E с процессором AT91SAM9260 (в будущем AT91SAM9XE512), имеющую: 32 килобайта внутренней памяти команд (в будущем 256 килобайт) 8 килобайт внутренней памяти данных (в будущем 64 килобайта) 256 мегабайт внешней памяти команд 64 мегабайта внешней памяти данных 4 мегабайта внешней последовательной памяти данных Порт Ethernet 100Base-T Порт USB 2.0 хост (12 Мбит/сек) Порт USB 2.0 устройство (12 Мбит/сек) Порт RS-232 (сигналы TXD, RXD) Слот для карты SD/MMC ПЛИС Xilinx Spartan3E-500 2500 руб. Все рабочее, все в комлекте [attachment=95942:1943098808.jpg] [attachment=95943:1943098839.jpg]
  12. Продаю отладочную плату Atmel QTouch QT600. Все новое, не использовали! Все в комплекте. Для первого знакомства и дальнейшего освоения сенсорной технологии на базе микроконтроллеров ATMEL инженерам-конструкторам будет необходим данный набор. Изучив возможности данного набора инженеры смогут получить навыки отладки и калибровки сенсоров, получат полное представление о процедурах отладки в среде QTouch Studio. Данный набор позволяет охватить практически весь спектр потребностей на первоначальном изучении технологии QTouch и QMatrix. В дальнейшем плата QT600 будет необходимым и полезным инструментом в настройке и отладке разрабатываемых собственных устройств с сенсорным интерфейсом. 5000 руб. [attachment=95939:20151002_105450.jpg] [attachment=95940:20151002_105500.jpg] [attachment=95941:20151002_105544.jpg]
  13. Цитата(Danil Borchevkin @ Oct 10 2015, 22:28) Какие процы идут в комплекте? lm3s9b95 - 2шт lx4f232h -1 шт
  14. QT600 - полный комплект аппаратного обеспечения для разработки и отладки сенсорных устройств. QT600 позволяет проектировщикам экспериментировать с Touch-технологией Atmel. QTouch Studio - программное обеспечение, предназначенное для отображения и анализа данных, которые поступают от средства разработки QT600. Используя полученную информацию, проектировщик имеет возможность настроить работу сенсорных контактов для получения максимальной производительности. Не пользовались, лежит уже 3-4 года. Все в коробке! Все новое! Цена: 6000 руб. Тел. +7 926 000 33 66 Сергей [attachment=95779:569995_2...7201iBUC.jpg] [attachment=95780:Extendin...Analyzer.png] [attachment=95788:20151002_105450.jpg] [attachment=95789:20151002_105500.jpg] [attachment=95790:20151002_105544.jpg]
  15. Отладочная плата SK-AT91SAM9XE512-S3E

    Отладочная плата SK-AT91SAM9XE512-S3E. • Atmel AT91SAM9XE512 (ARM926, 512k Flash, EMC, SD-card, Ethernet, USB-host, USB-client, RS232, I2C, SPI ...) • Xilinx FPGA Spartan3E-500 (500 тысяч эквивалентных логических вентилей). • GSM/GPRS/GPS модуль SIM508 посадочное место. • 64M SDRAM (16Mx32), 256Mx8 NAND Flash. • Ethernet PHY, USB-host, USB-client, SD/MMC card, RS232. • 37 линий I/O для микоконтроллера, 111 линий I/O для FPGA. Основа платы - микроконтроллер фирмы Atmel AT91SAM9XE512, это новый контроллер является логическим продолжением AT9200, AT91SAM9260 ..., основными отличиями которого от AT91SAM9260 является наличие встроенной программируемой Flash памятью. Та же семейство ARM9 микроконтроллеров этой фирмы выделяет широчайший набор внутренней периферии: Ethernet, USB host, USB client, MCI (SD/MMC card), Image Sensor Interface, аппаратная поддержка NAND flash, MMU, RS232, SPI, I2C ... Подключенная периферия: • 64MБайт (16х32) SDRAM. • 256МБайт NAND Flash. • 4МБайт DataFlash AT45DB321. • Ethernet 10/100M PHY - KS8721B, тип интерфейса - RMII. • GSM/GPRS модем совмещенный с GPS приемником SIM508 (SIM508Z - безсвинцовое исполнение). • SD/MMC держатель. • USB host (USB-A). • USB client (USB- . • RS232 приемопередатчик. • Предусмотрена возможность подключения SK-VideoADC-Plug. Внешняя шина ARM так же подключена к FPGA (16 линий данных, 21 линия). К FPGA подключена статическая RAM объемом 512кБайт. 3000 руб. +7 926 000 33 66 [attachment=95689:1943098808.jpg] [attachment=95690:1943098839.jpg]