Сергей Борщ 119 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба 1 час назад, haker_fox сказал: Я имел в виду лучше китайского Чем лучше? А то как в анекдоте получается: - Знаешь, чем грузины лучше, чем армяне? - Чем лучше? - Чем армяне! По моим понятиям, для начинающего все они абсолютно одинаковые и лучше именно тот, который по цене сравним с бутылкой пива, ибо добыть проще. 3 минуты назад, esaulenka сказал: Во-первых, скорость работы у сеггеровских отладчиков повыше. Секунда-другая разницы, но всё равно приятно Приятно, не не критично. Чаще всего мне приходится или пройти по шагам небольшой кусок кода, где мне тоже нужно время на "обдумать", или посмотреть, куда его унесло - а там ядро в останове и торопиться совсем некуда. 5 минут назад, esaulenka сказал: А во-вторых, RTT - прямо таки гениальная штука. Возможно. Не буду спорить о вкусе устриц и кокосовых орехов. Но начинающим лучше схватить синицу вот прямо сейчас, пока не пропало желание заниматься всем этим вообще, чем ждать журавля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 3 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба 13 hours ago, k155la3 said: Я конечно сильно извиняюсь, именно "T8C6" ? прошу прощения, C8T6 7 hours ago, haker_fox said: На али стоит копейки. Закажите, хотя бы на будущее. Очень нужная штука На работе есть STLink. Но на работе я теперь смогу быть только в среду - по графику. самоизоляция, блин... Правда он в плате Дискавери4, но это не особо напрягает. А с отладчиком то какой алгоритм проверки? Я по по AVR, да по ПЛИСАм больше))) С AVR таких проблем, чтоб отладчиком лазить никогда и не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 19 апреля, 2020 Опубликовано 19 апреля, 2020 · Жалоба 1 hour ago, Сергей Борщ said: Приятно, не не критично Я о времени первоначальной загрузки прошивки. У сеггера она практически равна скорости загрузки во флеш. 1 hour ago, Сергей Борщ said: Но начинающим лучше схватить синицу вот прямо сейчас Безусловно. Наличие отладичка - большое подспорье во всяких "загадочных" ситуациях. Особенно много загадочных ситуаций, когда не хватает опыта предугадать все возможные грабли. В общем, да, всячески рекомендую отладчик добыть. Сделать хотя б из blue pill - дёшево и сердито. Все отличия от "настоящего STLink" - отсутствие корпуса и отсутствие защит. 47 minutes ago, MPetrovich said: А с отладчиком то какой алгоритм проверки? Сделать то же самое, после "зависания" посмотреть, где крутится программа. Много думать (или спрашивать сюда). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 11 hours ago, Сергей Борщ said: Чем лучше? Китайцы экономят на всём в дешёвых поделках. Это ни хорошо, и не плохо. Например, может отсутствовать защита линий от статики и перегрузки. Я не против китайских поделок, сам использую анализатор за 450 рублей (известный многим) и доволен. Это по схемотехнике. На чём они ещё могли сэкономить я не знаю. Но разница в 150 рублей и 8 т.р. наверно не только из-за бренда. 11 hours ago, Сергей Борщ said: Но начинающим Кстати, а где информация, что автор темы - начинающий? 11 hours ago, Сергей Борщ said: Но начинающим лучше схватить синицу вот прямо сейчас, пока не пропало желание заниматься всем этим вообще, чем ждать журавля. Откуда знать, что начинающему лучше? И ведь я ему предложил оба варианта. Пусть сейчас заказывает с али, потом купит нормальный отладчик. Если захочет. 9 hours ago, MPetrovich said: Но на работе я теперь смогу быть только в среду Ну вот, а тут говорят, что вы - начинающий) 9 hours ago, MPetrovich said: в среду - по графику. самоизоляция, блин ОФФ: а нам справки выдали (не всем, но мне дали), что я работаю на предприятии, деятельность которого не подпадает под указ нашего президента)))) Но у меня нет особого желания кататься в транспорте всё равно))) 9 hours ago, MPetrovich said: С AVR таких проблем, чтоб отладчиком лазить никогда и не было. Ну, тем не менее, отладчик полезен был и с AVR, это я вам по опыту говорю. Работал, в том числе, и с ATMega32HVB, у которой нет аппаратного USART для организации консоли. Поэтому AVR Dragon был постоянно в работе. 9 hours ago, MPetrovich said: А с отладчиком то какой алгоритм проверки? Какой хотите. Но, в целом, вы можете: 1. Выполнять программу пошагово. 2. Запустить программу и остановить по условию (точка останова, записиь в определённый адрес и т.п.). 3. Смотреть значение по любому адресу памяти, включая РОН и регистры периферии. 4. Что-то ещё есть, но я не всё помню, т.к. не пользуюсь. Ну, например, ETM. У каждого пункта есть свои нюансы. Тут лучше почитать литературку, того же Дж. Ю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 3 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 4 hours ago, haker_fox said: Тут лучше почитать литературку, того же Дж. Ю. А кто это и о чем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 54 minutes ago, MPetrovich said: А кто это и о чем? Автор №1. После официальных мануалов, конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 3 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба Ситуация слегка поменялась. Для начала я захотел убедиться, что виснет не в прерываниях, для чего переписал обработчики TIM2 и TIM4: void TIM2_IRQHandler(void) { if(TIM2->DIER != 0)//If all TIM2 interrupts are not DISABLE { TIM_ClearFlag(TIM2, TIM_FLAG_Update); /*if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2))//Check flags of CCx interrupts(counter overflow) {PWM_OFF_Period();} else 0;*/n++; } Обработчик TIM4 идентичен TIM2. Но это не решило проблемы останова(зацикливания) при появлении в TIMx->DIER хотя бы одного бита разрешения прерывания ССхIE. В случае полного отключения всех прерываний (TIMx->DIER =0), контроллер нормально крутится дальше по программе. В итоге: затыка похоже именно в TIM2_IRQHandler(void) и TIM4_IRQHandler(void). Только вот в чем конкретно - не пойму... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 65 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 43 минуты назад, MPetrovich сказал: В итоге: затыка похоже именно в TIM2_IRQHandler(void) и TIM4_IRQHandler(void). Только вот в чем конкретно - не пойму... Возможно у вас неправильно настроены вектора прерываний, надо смотреть для того ли процессора прописан файл startup????.s В отладчике надо просто поставить breakpoint на первой команде в обработчике прерывания и попытаться пройти его по шагам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 46 minutes ago, MPetrovich said: void TIM2_IRQHandler(void) { if(TIM2->DIER != 0)//If all TIM2 interrupts are not DISABLE { TIM_ClearFlag(TIM2, TIM_FLAG_Update); /*if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2))//Check flags of CCx interrupts(counter overflow) {PWM_OFF_Period();} else 0;*/n++; } Но это не решило проблемы останова(зацикливания) при появлении в TIMx->DIER хотя бы одного бита разрешения прерывания ССхIE. Вы разрешаете прерывания ССхIE, а в обработчике сбрасываете TIM_FLAG_Update Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 3 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 5 minutes ago, dimka76 said: Вы разрешаете прерывания ССхIE, а в обработчике сбрасываете TIM_FLAG_Update Да, спасибо. Это я протупил. Однако, изменение обработчиков: void TIM2_IRQHandler(void) { if(TIM2->DIER != 0)//If all TIM2 interrupts are not DISABLE { TIM2->SR = 0; /*if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2))//Check flags of CCx interrupts(counter overflow) {PWM_OFF_Period();} else 0;*/ Usart1_Send_String("TIM2_IRQHandler\r\n "); n++; } Не исправили ситуацию. По-прежнему зависает на месте прерывания и в UART сыпется надпись "TIM4_IRQHandler\r\n " Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 19 minutes ago, MPetrovich said: Не исправили ситуацию. По-прежнему зависает на месте прерывания и в UART сыпется надпись "TIM4_IRQHandler\r\n " Пока у вас идет отправка по UART могут новые события таймера произойти, которые вызывают прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 65 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 34 минуты назад, MPetrovich сказал: Не исправили ситуацию. По-прежнему зависает на месте прерывания и в UART сыпется надпись "TIM4_IRQHandler\r\n " А зачем у вас такая длинная фраза в UART отправляется? Достаточно сделать без всяких ожиданий готовности UART1->DR = 0x30; // для TIM2 UART1->DR = 0x31; // для TIM4 И тогда если всё нормально работает,то у вас в терминалы должны появляться символы "0" и/или "1". А если что-то нечитаемое, значит UART не успевает выводить символы - стоит, например, поднять скорость UART. зы. И кстати, если вы видите, что прерывание TIM4 работает, так стоит убрать из прерывания вывод индикатора срабатывания и оставить только в прерывании TIM2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 5 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 14 minutes ago, HardEgor said: А если что-то нечитаемое, значит UART не успевает выводить символы Не может там быть "нечитаемого". Буферизация там всё-таки есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 1 час назад, MPetrovich сказал: Не исправили ситуацию. По-прежнему зависает на месте прерывания и в UART сыпется надпись "TIM4_IRQHandler\r\n " Вы жалуетесь на TIM4, но всё время показываете обработчик TIM2. Покажите уже обработчик TIM4 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 3 20 апреля, 2020 Опубликовано 20 апреля, 2020 · Жалоба 54 minutes ago, dimka76 said: Пока у вас идет отправка по UART могут новые события таймера произойти, которые вызывают прерывание. Да, похоже Вы правы. Вот в таком виде: void TIM2_IRQHandler(void) { if(TIM2->DIER != 0)//If all TIM2 interrupts are not DISABLE { if(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2))//Check flags of CCx interrupts(counter overflow) { TIM2->SR = 0;//Clear all flags of TIM2 n++; //PWM_OFF_Period(); } //else 0; } } прерывание работает и счетчик n считает сколько раз оно произошло. Вот только при подключении вызова функции PWM_OFF_Period(); сама функция не срабатывает. Убедился в этом вставив счетчик внутрь этой функции. 1 minute ago, AHTOXA said: Вы жалуетесь на TIM4, но всё время показываете обработчик TIM2. Покажите уже обработчик TIM4 :) void TIM4_IRQHandler(void) { if(TIM4->DIER != 0)//If all TIM4 interrupts are not DISABLE { if(TIM_GetFlagStatus(TIM4, TIM_FLAG_CC1|TIM_FLAG_CC2|TIM_FLAG_CC3|TIM_FLAG_CC4)) { TIM4->SR = 0;//Clear all flags of TIM2 n++; //PWM_OFF_Period(); } // else 0; } } Они идентичны. Просто каналы ШИМ TIM4 задействуются раньше и его я и обнаружил в первую очередь))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться