Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 22:36

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 22 ] 
Автор Сообщение
 Заголовок сообщения: STM32F103 + EXTI + время
СообщениеДобавлено: 25 мар 2012, 20:43 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
Помогите разобраться пожалуйста.
Имеется плата HY-MINI32. Не получается реализовать все кнопки, которых 11 штук. И не понял почему не работают глобальные переменные. Например, в задаче с LED инкрементируется счетчик time1, который в другой задаче выводится на LCD, но значение не меняется; тоже и с остальными. Нажатие любой кнопки меняет состояние светодиода LED1(PB0). Однако он иногда мигает как-будто по UART обмен отражаю его миганием и не все кнопки меняют его состояние (Проблемы с PD3, PC10).
Код ниже... Кнопки на PD0-PD6, PC10-PC13

Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 28 мар 2012, 23:29 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
не ужели совсем нет мыслей? Гуру, хотя бы предложите идею?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 15:41 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Eugene_K писал(а):
не ужели совсем нет мыслей? Гуру, хотя бы предложите идею?
Программа Вами написана или это нерабочий пример?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 19:01 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
я писал на основе примеров на базе сборки на Freertos 6.1, которая была на диске с платой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 19:29 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Eugene_K писал(а):
я писал на основе примеров на базе сборки на Freertos 6.1, которая была на диске с платой.

Я бы в случае такой запутанной истории поступил следующим образом. Выкинул бы из программы всё, что касается дисплея, оставив задачу с мигающим светодиодом. Если мигает удовлетворительно, начал подвязывать кнопки или что у Вас там ещё есть. Убедившись, что работает, как надо, добавил бы вторую задачу для другого светодиода с его кнопками. Короче, от простого к сложному.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 19:35 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
я закоментировал все, что связано с дисплеем. и оставил только задачу с мигалкой - индицировать, что он живой. и написал обработчики прерываний для кнопок. Было предположение, что какой- из пинов сконфигурирован на что-то другой, нежели я его использую. А так-как в обработчике написано мигать - он и мигает. Но я отключал поочередно все пины. Так реагирует на многие, пробовал на порту B - тоже. На что они могут быть сконфигурированы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 19:53 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Не запускайте задачу мигалки вовсе, а посмотрите, будете ли запрыгивать в EXTI0_IRQHandler без нажатия на кнопки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 20:11 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
оставил только инициализацию и шедуллер - led1 мигает. начал вырубать функции инициализайии на мигание влияет только LCD_Clear(Blue);
Посмотрел ее определение:
void LCD_Clear(uint16_t Color)
{
uint32_t index=0;
LCD_SetCursor(0,0);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
for(index=0;index<76800;index++)
{
LCD_RAM=Color;
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 20:25 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
LCD_RAM предположительно какой-то макрос для писания в память с автоматическим инкрементом, так?

Закоментируйте эту строчку, чтобы никуда ничего (поверху) не писалось. Вообще повыкидывайте отдельные части.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 20:31 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
неа... дела не только в этой функции


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 29 мар 2012, 22:27 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
собрал тот же мэин без ОС оставил только подмигивания по прерыванию. Такое ощущение, что светодиод загорается от того, что купер на плате с кнопками ловит все подряд. тем не менее это не решает проблему неработоспособности некоторых пинов. Попробую сделать ремаппинг или перекинуть на другие пины.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 30 мар 2012, 03:51 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Это уже кое-что. У Вас в обработчик прерывания запрыгивает по нажатию кнопки или тоже хаотично?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 30 мар 2012, 13:21 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
хаотично


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 30 мар 2012, 13:30 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Eugene_K писал(а):
хаотично

Как я понимаю, прерывание по теории должно генерируется при изменении состояния на пине, а именно при нажатии на кнопку. Значит, если кнопку нажать и держать, больше прерываний, а значит повода прыгать в хендлер возникать не должно. Это надо бы проверить. Я бы ещё убедился, что флаг этого прерывания действительно снимается.
Потом вообще отключить это кнопочное прерывание (не включать его) и посмотреть, не бузит ли там ещё кто-то, используя ту же процедуру. Может, как раз фраги этих прерываний-приведений не снимаются и заскок происходит циклично.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 31 мар 2012, 20:36 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
Спасибо за советы. Снес все. начал с нуля по одному добавлять прерывания. Цикличных переключений нет. 3 линия чем-то занята, чем пока не понял. дребезг происходит от того, что ноги чего-то ловят. Убрал плату с кнопками и купером, замыкаю пины проводами. Лучше, но все-равно если рядом не заземленный палец прерывания срабатывают. (Как отфильтровать? на реальном-то устройстве дофига может быть помех, и будет нехорошо, если все будет прыгать). с задачами пока не разбирался, но тут вроде пока все понятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 31 мар 2012, 23:08 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Привяжите пины резисторами либо к земле, либо питанию, смотря куда у Вас кнопки замыкают. Возможно они просто плавающие без пулапов. Можно в противоположную сторону и кондёры добавить, но, думаю, резисторов хватит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 02 апр 2012, 15:56 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
можно ведь внутренними подтяжками воспользоваться? или есть смысл вешать снаружи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 02 апр 2012, 16:05 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Если Вы уверены, что они действительно активированы, то да. Если пин ловит, то что-то его от этого НЕ удерживает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 11 апр 2012, 15:02 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
с кнопками разобрался - теперь глобальные переменные... Значения nCount для подмигивания светодиода меняются. Почему не перерисовывается картинка на LCD?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 11 апр 2012, 15:42 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
То бишь, если я правильно помню (много времени прошло), было хаотичное срабатывание прерывания и теперь этой проблемы нет. Так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 11 апр 2012, 18:14 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Если переменная изменяется в прерывании, то она должна быть объявлена как volatile


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F103 + EXTI + время
СообщениеДобавлено: 20 апр 2012, 12:57 
Только пришел

Зарегистрирован: 24 июл 2011, 17:31
Сообщения: 17
Хаотичное срабатывание прерываний решилось привязкой входов к земле. Правда только 7 линий прерываний удалось использовать. Остальные не реагируют. Изменение переменных происходит по прерыванию, volatile не помогает. Если успеваю изменить переменную до первой прорисовки экрана - то рисуется с измененным значением переменной. Спасибо за помощь.


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


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB