Например TDA7294

Форум РадиоКот • Просмотр темы - Отладка с временными задержками stm32
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср июл 24, 2019 09:55:59

Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Отладка с временными задержками stm32
СообщениеДобавлено: Ср июл 11, 2012 20:49:42 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
Делаю часы на stm32. использую плату stm32discovery
Задействовал часовой кварц, настроил для него прерывания и моргаю синим светодиодом раз в секунду.
Теперь хочу подключить lcd nokia 3310.
Запускаю через eclipse отладку (для отладки используется st-link gdb server)
На каком-то этапе отладчик отваливается, а плата продолжает жизнерадостно моргать.
Подозреваю что дело в задержках в реальном времени, которые отладчик естественно не может отследить и поэтому отваливается.

Какие есть способы отлаживать программу в которой есть такие особенности?
(к отладке приема данных по интерфейсам наверно тоже относится. как дать понять отладчику что вот эту часть нужно прошагать, а на эту отпустить контроллер для к-н обработки?)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Ср июл 11, 2012 21:13:02 
Собутыльник Кота
Аватар пользователя

Карма: 40
Рейтинг сообщений: 364
Зарегистрирован: Вс июл 17, 2011 12:51:52
Сообщений: 2622
Рейтинг сообщения: 0
У меня нормально отлаживается stm32 но я пользуюсь другими отладчиками и средой программирования.
Вполне возможно дело не в задержках, а что-то Вы намутили в проекте. Проблемы бывают, например, при неправильных таймингах флеши, при слишком активном обмене по DMA, при коротких циклах поллинга флагов периферии, при слишком высокой частоте тактирования jtag, при неправильной настройке AFIO GPIO на котором висит jtag, также возможно у Вас происходит банальный сброс по вачдогу или вылет по недопустимой инструкции. Возможны и аппаратные проблемы, если отлаживаемое устройство питается от отдельного импульсного БП без (или с плохим) EMI-фильтром на входе


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Ср июл 11, 2012 22:23:35 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 312
Зарегистрирован: Вт ноя 27, 2007 12:32:06
Сообщений: 2176
Откуда: Tashkent
Рейтинг сообщения: 0
А вачдог у вас в проекте используется? Если да, то его следует тормозить вместе с остальными таймерами чтобы не произошел сброс при входе в отладку.

Про EMI - правельно замечено. Сразу легче жить стало когда комп с дискавери начал питаться через хороший UPS. До этого работало через раз. Ну и версию IDE с драйвером на ST-link самую свежую.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Чт июл 12, 2012 23:10:22 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
А можно подробнее про торможение таймеров?
Их дебаггер сам отлавливает или это как-то нужно настраивать?
собаку не использую :)


Вернуться наверх
 
Плавкие предохранители LittelFuse. Грамотный подбор

Выбор оптимального плавкого предохранителя требует учета многих параметров. Для упрощения выбора оптимального предохранителя и автоматизации расчетов Littelfuse предлагает онлайн-утилиту. Подробнее>>
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Чт июл 12, 2012 23:33:52 
Собутыльник Кота
Аватар пользователя

Карма: 40
Рейтинг сообщений: 364
Зарегистрирован: Вс июл 17, 2011 12:51:52
Сообщений: 2622
Рейтинг сообщения: 0
Торможение таймеров при отладке на отваливание отладчика не влияет.
Оно влияет, например, на переполнение таймеров и возникновение событий пока программа остановлена. Иногда это важно, иногда наоборот, в любом случае это не то, что Вы ищите.

Покажите свой код, может удастся увидеть потенциально ненадежные места


Вернуться наверх
 
Немногим дороже дискретного решения: новое поколение импульсных стабилизаторов Mornsun

Практически во всех радиоэлектронных устройствах массово применяются линейные понижающие стабилизаторы напряжения типа КРЕН в корпусе TO220 (другое обозначение – 78хх) и им подобные для формирования основного напряжения питания схемы.
Данные стабилизаторы позволяют без особых затрат получить нужное для каскада или узла схемы напряжение, если устройство питается от внешнего источника с более высоким напряжением. Для этого требуются… Подробнее>>
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Пт июл 13, 2012 21:01:27 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
Нашел место на котором отваливается дебагер
выдает
Код:
ST_LINK Halt Reason halt requested by NVIC, including step
Unknown(Err)

Отваливается когда доходит до функции delay_ms(100) и начинает в ней крутиться:

Код:
/* задержка в микросекундах
 * диапазон значений от 0x00000001 до 0x00FFFFFF/multiplier
 * работает на прерывании */
void delay_us(uint32_t us)
{
   SysTick_Config(us*multiplier);
   __WFI();   //Wait for Interrupt.
}

void delay_ms(uint32_t ms)
{
   while(ms--) delay_us(1000);
}

///* код для обработчика прерываний */
//
//void SysTick_Handler(void)
//{
//   //для отключения счетчика, когда дойдет до 0, если не отключать, будет постоянно работать
//   /*
//   SysTick->CTRL=0x00000000;   //отключение системного таймера
//   SysTick->VAL=0x00000000;   //сброс текущего значения системного таймера
//   */
//}


Конфигурация:
Код:
   Init_Clock();
   //Настройка контроллера прерываний
   NVIC_Configuration();


Код:
//конфигурация тактирования - начальная настройка кварца
void Init_Clock()
{
   //после запуска должна быть частота 24 мГц, установлена соответствующий define

    /* RTC Configuration */
    RTC_Configuration();
}



Код:
/**
  * @brief  Configures the RTC.
  * @param  None
  * @retval None
  */
void RTC_Configuration(void)
{
  /* Enable PWR and BKP clocks */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

  /* Allow access to BKP Domain */
  PWR_BackupAccessCmd(ENABLE);

  /* Reset Backup Domain */
  BKP_DeInit();

  /* Enable LSE */
  RCC_LSEConfig(RCC_LSE_ON);
  /* Wait till LSE is ready */
  while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {}

  /* Select LSE as RTC Clock Source */
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

  /* Enable RTC Clock */
  RCC_RTCCLKCmd(ENABLE);

  /* Wait for RTC registers synchronization */
  RTC_WaitForSynchro();

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();

  /* Enable the RTC Second */
  RTC_ITConfig(RTC_IT_SEC, ENABLE);

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();

  /* Set RTC prescaler: set RTC period to 1sec */
  //RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
  RTC_SetPrescaler(16383); /* частота=32768/PrescalerValue+1 */

  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
}


Код:
/**
  * @brief  Configures the nested vectored interrupt controller.
  * @param  None
  * @retval None
  */
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

  /* Enable the RTC Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Сб июл 14, 2012 16:27:55 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 312
Зарегистрирован: Вт ноя 27, 2007 12:32:06
Сообщений: 2176
Откуда: Tashkent
Рейтинг сообщения: 0
Ну так вы активируете СисТик, далее ждем прерывание. Прерывание появилось, а обрабочик, но он закомментирован. Процу только в HardFault и остается.

При разработке прог я юзаю болванку с обработчиками из пакета дискавери(не нужно вручную их прописывать). Только во все Fault-обработчики ставлю бесконечный цикл while(TRUE); Так сразу видно что сделал что-то не то.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Вс июл 15, 2012 10:44:13 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
Обработчик у меня не закомментирован, он в другом файле написан, тут я комментарий добавил чтобы не забыть как его использовать и заодно показать какой он.
А с бесконечным циклом попробую, может в какое другое прерывание вываливается


Вернуться наверх
 
Prist.ru предлагает скидку всем частным лицам при покупке приборов АКИП, GW Instek, APPA (кроме осциллографов АКИП-4115/1А, GDS-71102)!

Интересные новинки уже на складе:

Осциллограф АКИП-4126Е

Многоканальные источники питания серии GPP

Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Вс июл 15, 2012 13:04:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
кстати, для hardFault можно обработчик написать? я не нашел функции


Вернуться наверх
 
Купить электронные компоненты в LCSC

Отправка со склада через 4 часа после заказа!
900 000 пользователей, 3000+ заказов в день!
Зарегистрируйтесь сегодня и получите скидку 8 долларов на первый заказ!
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Пн июл 16, 2012 16:58:23 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 312
Зарегистрирован: Вт ноя 27, 2007 12:32:06
Сообщений: 2176
Откуда: Tashkent
Рейтинг сообщения: 0
Что значит не нашел? Startup на что?
Код:
__Vectors       DCD     __initial_sp                    ; Top of Stack
                DCD     Reset_Handler                   ; Reset Handler
                DCD     NMI_Handler                     ; NMI Handler
                DCD     HardFault_Handler               ; Hard Fault Handler
                DCD     MemManage_Handler               ; MPU Fault Handler
                DCD     BusFault_Handler                ; Bus Fault Handler
                DCD     UsageFault_Handler              ; Usage Fault Handler
                DCD     0                               ; Reserved
                DCD     0                               ; Reserved
                DCD     0                               ; Reserved
                DCD     0                               ; Reserved
                DCD     SVC_Handler                     ; SVCall Handler
                DCD     DebugMon_Handler                ; Debug Monitor Handler
                DCD     0                               ; Reserved
                DCD     PendSV_Handler                  ; PendSV Handler
                DCD     SysTick_Handler                 ; SysTick Handler


Пакет VL discovery предлагает вот такой файл с обработчиками.

ЗЫ. имена векторов должны в точности соответствовать именам обработчиков в программе.


Вложения:
stm32f10x_it.c [4.23 KiB]
Скачиваний: 233
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Отладка с временными задержками stm32
СообщениеДобавлено: Вт июл 17, 2012 08:43:43 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс окт 31, 2010 17:46:10
Сообщений: 100
Откуда: Оттуда
Рейтинг сообщения: 0
А для чего нужен Debug Monitor? только чтобы состояния таймеров и т.п. смотреть? или через него их можно приостанавливать?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 4


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y