Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 25.08.2017, 21:33   #1
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию STM32. Вопрос по отладке

Всем привет!
Вопрос по отладке. Плата дискаверка c STM32F100RB, проект в Keil-е, все работает, но есть недопонимание процесса.

Как работает. TIM2 генерит импульсы с периодом 100 мс. Измеряется период этих импульсов - для этого TIM4_CH3 работает в режиме захвата. По захвату от TIM4 идет запрос в DMA1_Channel5. DMA кладет два значения в память и по окончанию их передачи делает прерывание. В прерывании вычисляется расстояние между двумя значениями - видны ожидаемые 100 мс. DMA работает в цикле. Т.е. "захват-DMA-память-захват-DMA-память-прерывание-захват-DMA-память-захват-DMA-память-прерывание.....".

В отладке в прерывании DMA по брекпоинту смотрю два захваченных значения - разница между ними как положено 100 мс. Делаю еще один запуск отладчика - снова попадаю в прерывание DMA - смотрю два захваченных значения - разница между ними как положено 100 мс, НО!!! вижу что между предыдущей парой значений и текущей никак не получается 100 мс, а больше и всегда разные и т.д. от брека до брейка. При этом вставляю в это же прерывание триггер на переключение PC9, запускаю без брейка и осциллографом вижу четкие импульсы с периодом 400 мс, как и ожидалось.

Вопрос! Там что пока стоим на бреке таймер продолжает тикать????
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 26.08.2017, 10:50   #2
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 57
Сообщений: 2,827
Вес репутации: 3948/106
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от petrd Посмотреть сообщение
Там что пока стоим на бреке таймер продолжает тикать????
И тикает... и проскакивает... и затыкаться ещё может...
Все хардварные решения такого уровня отладчиком не отлаживаются... и это как бы уже давно не новость...
Тестовые пины и логанализатор в помощь... Да... непривычно по началу... но другого выхода нет... у вас всё по сути работает асинхронно...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 26.08.2017, 12:27   #3
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
И тикает... и проскакивает... и затыкаться ещё может...
Может быть, но пока не согласен. Изучение RM и файла stm32f10x.h дало такое решение:
Код:
DBGMCUEN->CR |= DBGMCU_CR_DBG_TIM4_STOP; // TIM4 counter stopped when core is halted
Но в железе смогу убедиться только после выходных.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 27.08.2017, 06:29   #4
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 59
Сообщений: 2,374
Вес репутации: 3125/96
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: STM32. Вопрос по отладке

Так и есть. Отладка может быть с прекращением тактирования только ядра, а может и периферию "замораживать".
Марк вне форума   Ответить с цитированием
Старый 28.08.2017, 11:41   #5
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от petrd Посмотреть сообщение
Но в железе смогу убедиться только после выходных.
Проверил. Все работает правильно, только на рабочем компьютере другая версия stm32f10x.h оказалась, а там надо писать чуть иначе:
Код:
DBGMCU->CR |= DBGMCU_CR_DBG_TIM4_STOP; // TIM4 counter stopped when core is halted
DBGMCU->CR |= DBGMCU_CR_DBG_TIM2_STOP; // TIM2 counter stopped when core is halted
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 23.07.2018, 13:25   #6
HJV
Senior Member
 
Регистрация: 25.02.2007
Адрес: Чита
Возраст: 38
Сообщений: 264
Вес репутации: 485/50
HJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of light
Отправить сообщение для HJV с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Более подходящую тему не нашел, спрошу здесь. МК STM32F103C8. Настроил PA0 на вход с подтяжкой вверх, померил напругу - 3,3В.
Записал 0 в него - напруга упала почти до нуля. Это баг или фича?
Код:
tGPIO.GPIO_Pin = GPIO_Pin_0;    
tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
tGPIO.GPIO_Mode = GPIO_Mode_IPU; 
GPIO_Init(GPIOA, &tGPIO);
    
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
HJV вне форума   Ответить с цитированием
Старый 23.07.2018, 15:43   #7
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от HJV Посмотреть сообщение
Более подходящую тему не нашел, спрошу здесь. МК STM32F103C8. Настроил PA0 на вход с подтяжкой вверх, померил напругу - 3,3В.
Записал 0 в него - напруга упала почти до нуля. Это баг или фича?
Зайдите в отладку и посмотрите, что там в GPIOA->CRL и сравните с тем, что должно быть в референс мануале RM0008. Тактирование GPIOA надеюсь включено. STM32 Peripheral Library не использую, но могу показать код как без нее это делается.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 23.07.2018, 15:54   #8
HJV
Senior Member
 
Регистрация: 25.02.2007
Адрес: Чита
Возраст: 38
Сообщений: 264
Вес репутации: 485/50
HJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of light
Отправить сообщение для HJV с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от petrd Посмотреть сообщение
Зайдите в отладку и посмотрите, что там в GPIOA->CRL и сравните с тем, что должно быть в референс мануале RM0008. Тактирование GPIOA надеюсь включено. STM32 Peripheral Library не использую, но могу показать код как без нее это делается.
Тактирование включено. Вот функция инициализации портов полностью
Код:
static void port_init(void) 
{
    GPIO_InitTypeDef tGPIO;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |      RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); 
    //GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);   
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //disable JTAG and release PB3 PB4 PA15 !!!
    /*----------------------------------------------------------------------------------*/
    tGPIO.GPIO_Pin = GPIO_Pin_5;    
    tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
    tGPIO.GPIO_Mode = GPIO_Mode_Out_PP; 
    GPIO_Init(GPIOA, &tGPIO);
    GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_RESET);
    /*----------------------------------------------------------------------------------*/
    tGPIO.GPIO_Pin = GPIO_Pin_0;    
    tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
    tGPIO.GPIO_Mode = GPIO_Mode_IPU; 
    GPIO_Init(GPIOA, &tGPIO);
    
 /*----------------------------------------------------------------------------------*/
}
Отладку смогу включить только завтра. За совет спасибо.
HJV вне форума   Ответить с цитированием
Старый 25.07.2018, 15:54   #9
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от HJV Посмотреть сообщение
Более подходящую тему не нашел, спрошу здесь. МК STM32F103C8. Настроил PA0 на вход с подтяжкой вверх, померил напругу - 3,3В.
Записал 0 в него - напруга упала почти до нуля. Это баг или фича?
Код:
tGPIO.GPIO_Pin = GPIO_Pin_0;    
tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
tGPIO.GPIO_Mode = GPIO_Mode_IPU; 
GPIO_Init(GPIOA, &tGPIO);
    
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);

Все правильно. Переключение режима работы происходит через регистр CRL, а подтягивающие резисторы переключаются в регистре ODR (0 - pull-down, 1 - pull-up), видимо GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET) как раз и пишет в ODR. Ох, уж эти обертки.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 25.07.2018, 16:34   #10
HJV
Senior Member
 
Регистрация: 25.02.2007
Адрес: Чита
Возраст: 38
Сообщений: 264
Вес репутации: 485/50
HJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of light
Отправить сообщение для HJV с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от petrd Посмотреть сообщение
Все правильно. Переключение режима работы происходит через регистр CRL, а подтягивающие резисторы переключаются в регистре ODR (0 - pull-down, 1 - pull-up), видимо GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET) как раз и пишет в ODR. Ох, уж эти обертки.
Вот функция GPIO_WriteBit
Код:
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_BIT_ACTION(BitVal)); 
  
  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRR = GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = GPIO_Pin;
  }
}
HJV вне форума   Ответить с цитированием
Старый 25.07.2018, 16:49   #11
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 47
Сообщений: 1,777
Вес репутации: 1860/75
petrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant futurepetrd has a brilliant future
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Все нормально. BSRR, BRR - суть одна, они отражаются на ODR.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 25.07.2018, 16:51   #12
HJV
Senior Member
 
Регистрация: 25.02.2007
Адрес: Чита
Возраст: 38
Сообщений: 264
Вес репутации: 485/50
HJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of lightHJV is a glorious beacon of light
Отправить сообщение для HJV с помощью ICQ
По умолчанию Re: STM32. Вопрос по отладке

Цитата:
Сообщение от petrd Посмотреть сообщение
Все нормально. BSRR, BRR - суть одна, они отражаются на ODR.
Понятно. Спасибо за разъяснения.
HJV вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по прерываниям RB7-RB4 KSB31 Продукция MICROCHIP 4 15.08.2010 23:53
Вопрос по Altium Designer Iptash Печатный монтаж 2 14.09.2008 14:57
вопрос по PICC EXT_INT Вопросы начинающих 13 26.08.2008 07:53
Вопрос по отладке в MPLAB 8.14 MonstroNB Вопросы начинающих 2 14.08.2008 16:12
Вопрос новичка по Си ramonchik Продукция MICROCHIP 3 05.03.2007 16:28


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


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