mitya1698 18 27 ноября, 2023 Опубликовано 27 ноября, 2023 · Жалоба а еще можно таймер взвести... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 28 ноября, 2023 Опубликовано 28 ноября, 2023 (изменено) · Жалоба 22 часа назад, mitya1698 сказал: так как spi синхронный, то окончание приема означает как раз окончание передачи, они же по одному клоку работают. мм, а это мысль...только прерывание ставить по RXNE предварительно очищенный и разрешенный по прерыванию DMA TC, до этого момента IT по буферу не нужно, если есть DMA. Может поэтому и не сделали TC_IT для SPI...в общем надо попробовать, у меня правда затык, чего-то проц странно работает, в отладке пошагово программа выполняется, но как только отпускаешь до брейкпоинта, например цикл чтобы прошел, уходит в хард, это походу контрофакт с алика экземпляр запаял. Но это так лирика - новый поставлю проверю. Изменено 28 ноября, 2023 пользователем auric Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 28 ноября, 2023 Опубликовано 28 ноября, 2023 · Жалоба 1 час назад, auric сказал: но как только отпускаешь до брейкпоинта, например цикл чтобы прошел, уходит в хард Такты ожидания флеша для выбранной частоты правильно выставлены? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 29 ноября, 2023 Опубликовано 29 ноября, 2023 · Жалоба 23 часа назад, Сергей Борщ сказал: Такты ожидания флеша для выбранной частоты правильно выставлены? вроде да, эту часть программы пробовал на других проектах в том числе на таком же "камне", все запускалось. Там еще к тому же периферия ввод/вывод тоже не работает (физически), все-таки предполагаю - как уже писал народ - сбойные толкнули и попался случайно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 30 ноября, 2023 Опубликовано 30 ноября, 2023 · Жалоба На F103 успешно работает вот такая конструкция ожидания завершения передачи последнего* байта: *(volatile uint8_t *)&(SPI2->DR) = Data; // Складываем байт while (!(SPI2->SR & SPI_SR_TXE)); // Ждём, пока не станет "Свободно" в буфере передатчика (иначе можно проскочить) while (SPI2->SR & SPI_SR_BSY); // Только после этого дожидаемся снятия флага "ЗАНЯТО, Л-Л-ЛЯ!" После этого данные гарантированно переданы и можно поднимать ножку. С DMA - можно использовать те же проверки, предварительно отключив сам DMA канал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 30 ноября, 2023 Опубликовано 30 ноября, 2023 · Жалоба for (uint8_t i = 0; i < datalen; i++) { while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI2, data[i]); } while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_BSY) != RESET); GPIO_WriteBit (GPIOB, GPIO_Pin_5, Bit_SET); // LE = 1 GPIO_WriteBit (GPIOB, GPIO_Pin_5, Bit_RESET); // LE = 0 На 103 если без dma и прерываний я тоже так отправляю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 1 декабря, 2023 Опубликовано 1 декабря, 2023 · Жалоба 16 hours ago, AlanDrakes said: С DMA - можно использовать те же проверки, предварительно отключив сам DMA канал. Как раз где-то недавно обсуждали эту тему. И выяснили, что всё это занимает время процессора. А если проект построен на базе ОСРВ, то это - открытое расточительство, противоречащее природе событийно-ориентированной модели. Пришли к выводу, что лучше взводить прерывание таймера на время чуть большее необходимого и расчитанного сброса флага BUSY. Там, в прерывании, выполнять необходимые действия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 4 декабря, 2023 Опубликовано 4 декабря, 2023 (изменено) · Жалоба В 28.11.2023 в 22:58, Сергей Борщ сказал: Такты ожидания флеша для выбранной частоты правильно выставлены? тааакс вечер перестает быть томным ((( не в проце было дело. Скинул проц, поставил другой симптомы те же, более того думал кварц не подхватился, запустил на HSI - те же симптомы, FLASH_Latency_2 выбирал, тк частота 72МГц на внешнем кварце либо 64МГц на внутреннем, пробовал понизить частоту на внутреннем и запустить на 32МГц с FLASH_Latency_1 тоже не получилось. Еще раз опишу симптомы: не работает периферия, хотя регистр ODR вижу меняется, но нет подсветки светодиода, хотя он слабо горит так, как будто через подтягивающий резистор - хотя выход настроен как GPIO_Mode_Out_PP. Не хочет запускать циклы типа (улетает в хард фаулт, но если пошагово - то выполняет): for(temp=0; temp < MenuQnty; temp++) { prog_write_buffer[temp]=MEM[temp]; //где MEM - массив, записанный во флеше. } Либо улетает в хард фаулт на настройке ком-порта (USART)...далее не забегал. Изменено 4 декабря, 2023 пользователем auric Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 4 декабря, 2023 Опубликовано 4 декабря, 2023 · Жалоба 7 минут назад, auric сказал: Либо улетает в хард фаулт на настройке ком-порта (USART)...далее не забегал. А цепь питания AVDD точно запитана? Мне однажды вместо ферритовой бусины туда запаяли идентичный по виду конденсатор и проц улетал в HardFault при попытке запустить PLL. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 4 декабря, 2023 Опубликовано 4 декабря, 2023 (изменено) · Жалоба 2 часа назад, Сергей Борщ сказал: А цепь питания AVDD точно запитана? Мне однажды вместо ферритовой бусины туда запаяли идентичный по виду конденсатор и проц улетал в HardFault при попытке запустить PLL. Проверю, спасибо за наводку. ЗЫ: проверил, все запитано, да и отключал для проверки все что связано с АЦП, пытался оставить одну периферию - не работает как надо. Правда есть одно подозрение по поводу периферии...проверю...может это и не основной симптом, а как дополнительный, сам по себе... Изменено 4 декабря, 2023 пользователем auric Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 4 декабря, 2023 Опубликовано 4 декабря, 2023 · Жалоба 8 часов назад, auric сказал: да и отключал для проверки все что связано с АЦП От этого питания кормится не только АЦП, но и PLL и кое-что еще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 (изменено) · Жалоба 9 часов назад, Сергей Борщ сказал: От этого питания кормится не только АЦП, но и PLL и кое-что еще. Понял, как уже писал с питанием все ОК, а с периферией самым нелепым образом совпало, что пин на который поставил тестовый светодиод PA15 имеет функцию после сброса JTDI, переопределил и светодиод ожил, НО проблемы не ушли, так вроде тестовая программа мигания светодиодом работает без проблем, но сложная (хотя многое уже опробовано было на другом камне более простом STM32F103CBT6) не хочет - все так же, когда заходит в цикл, почему-то улетает в хард, но пошагово выполняет. Кварц работает, запускал оба варианта на простой программе и HSE и HSI, короче странно все это... Изменено 5 декабря, 2023 пользователем auric Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба On 12/4/2023 at 3:47 PM, auric said: Еще раз опишу симптомы: не работает периферия, хотя регистр ODR вижу меняется, но нет подсветки светодиода, хотя он слабо горит так, как будто через подтягивающий резистор - хотя выход настроен как GPIO_Mode_Out_PP. Не хочет запускать циклы типа (улетает в хард фаулт, но если пошагово - то выполняет): for(temp=0; temp < MenuQnty; temp++) { prog_write_buffer[temp]=MEM[temp]; //где MEM - массив, записанный во флеше. } temp, MenuQnty, prog_write_buffer, MEM - как объявлены ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
auric 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 2 часа назад, dimka76 сказал: temp, MenuQnty, prog_write_buffer, MEM - как объявлены ? temp локальная, MenuQnty, prog_write_buffer, MEM глобальные, собственно не в этом дело, убираю этот цикл, застревает в другом месте, вообще не мной описанные финкции, то в DMA_DeInit(DMA1_Channel2) как только попадает, даже шаг со входом в дебаге не помогает, то в SysTick_Config, короче я уже много пересмотрел, может Coocox так реагирует на смену камня с MD на HD, то ли что...пока не могу понять где кака. Если только какое-то прерывание срабатывает, необработанное. А кстати пока писал нашел - дописывал кучу прерываний в таблицу и в одном из них нашел отсутствие NVIC_Init(&NVIC_InitStructure); но опять мимо, все равно те же симптомы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба Где откопали стюардессу Кокос ? Чем Keil не угодил ? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться