Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 11.10.2011, 19:54  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dadigor Посмотреть сообщение
а не пробовали в прерывании
led_flash(BLUE_LED);
закоментаривать, мож оно как-то мешает
Пробовал, конечно. Но этот подход я не люблю. Когда теряешь нить смысла, начинаешь тыкать пальцем в небо. Это не правильно.
На самом деле в этой процедуре всего три строчки - инверсия бита на IF ELSE. Так что сомневаюсь, что оно что-то портит.
Реклама:
Easyrider83 вне форума  
Непрочитано 11.10.2011, 20:06  
dadigor
Прописка
 
Аватар для dadigor
 
Регистрация: 10.09.2010
Сообщений: 113
Сказал спасибо: 31
Сказали Спасибо 27 раз(а) в 27 сообщении(ях)
dadigor на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

ну, я просто не видел его... тела этой процедуры... поэтому на всяк случай ))

боюсь спрашивать... про фронты и вообще про сигналы с энкодера... я бы попробовал вместо него подключить пару кнопок, чтоб мух от котлет... Хотя наверное проверяли сигналы-то.

А если с сигналами все ОК, тогда скорее всего что-то с настройками прерывания.
Я бы здесь посоветовал посмотреть.
Или здесь еще подробнее.

Последний раз редактировалось dadigor; 11.10.2011 в 21:53.
dadigor вне форума  
Непрочитано 12.10.2011, 10:04  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Да не, с настройками все отлично - проект оказался рабочим. Если перевести пины в режим IN FLOAT и подтяжку пина сделать внешнюю - резистором, все отлично работает. Похоже, это глюк такой. Тогда как ученые умы подключают к этому камню кнопки? Это же какое расточительство резисторов? Безобразие!
Кстати, энкодер оказался не очень честный - в некотором секторе дребезг контактов ощутим. Либо надо ставить конденсатор и оставлять, как есть. Либо отказываться от использования прерывания по спаду фронта и опрашивать пин по таймеру, чего очень не хотелось делать. Но вариант проверенный - придется.
Кстати, до этого пытался запустить прерывание, используя библиотеки ST. Вот инициализация:
Код:
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	NVIC_InitTypeDef NVIC_InitStructure;
	EXTI_InitTypeDef EXTI_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_AP  B2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
				
	//LEDs init
	GPIO_InitStruct.GPIO_Pin=BLUE_LED|GREEN_LED;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOC, &GPIO_InitStruct);

	//Encoder Pins init
	GPIO_InitStruct.GPIO_Pin=ENCODER_Q1_PIN|ENCODER_Q2  _PIN;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(ENCODER_GPIO, &GPIO_InitStruct);

    	/* Connect EXTI Line to Button GPIO Pin */
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);

	    /* Configure EXTI line */
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

		/* Enable and set EXTI Interrupt to the lowest priority */
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori  ty = 0x0F;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure); 

	while(1)
}
Ничего не заработало вообще. Точнее прерывание вызывается, в файле stm32f10x_it.c добавлена процедура сброса:
void EXTI0_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI0_Interrupt();
}
Но проц зависает. А где именно - выловить не могу. В дебаггере дохожу до цикла while(1), поворачиваю энкодер, проц куда-то отправляется чего-то делать, указатель исчезает и ничего не происходит. Помогает только RESET.

Вот еще хороший вопрос. Как и где обрабатывать прерывания - очень понятно. Не понятно совершенно, где искать, какие флаги сбрасывать. Это просто кошмар - любая элементарная задача начинается с поиска готового решения, чтобы передрать строчку кода.
Нельзя сразу было в stm32f10x_it.c флаги обозначить?

А вот рабочий как часы код для опроса энкодера по таймеру с защитой от дребезга:
Код:
void TIM1_UP_TIM16_IRQHandler (void)
{
	if (((GPIOB-›IDR&GPIO_Pin_0)!=0)&button_pressed==0)
		{
			button_pressed=1;
			if ((GPIOB-›IDR&GPIO_Pin_1)!=0){cnt++;flag=0xff;}else{cnt--;flag=0xff;}
		}
	if (((GPIOB-›IDR&GPIO_Pin_0)==0)&button_pressed!=0)
		{
			button_pressed=0;
		}
 	TIM1-›SR &= ~(1‹‹0); 
}
Период таймера определяется максимальной скоростью вращения энкодера. Я поставил 10мс.
Такой код я бы не стал применять в измерительных энкодерах, когда пропуск одного зуба приведет к выходу из строя какого-нибудь привода.

Последний раз редактировалось Easyrider83; 12.10.2011 в 10:55.
Easyrider83 вне форума  
Непрочитано 12.10.2011, 11:52  
Oleg Galizin
Частый гость
 
Регистрация: 25.03.2010
Адрес: Voronezh
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
Oleg Galizin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Easyrider83 Посмотреть сообщение
Но проц зависает. А где именно - выловить не могу. В дебаггере дохожу до цикла while(1), поворачиваю энкодер, проц куда-то отправляется чего-то делать, указатель исчезает и ничего не происходит. Помогает только RESET.
Вот это поведение косвенно говорит о вызове какого то другого прерывания. Можно увидеть в окне ассемблера.
Сообщение от Easyrider83 Посмотреть сообщение
Вот еще хороший вопрос. Как и где обрабатывать прерывания - очень понятно. Не понятно совершенно, где искать, какие флаги сбрасывать. Это просто кошмар - любая элементарная задача начинается с поиска готового решения, чтобы передрать строчку кода.
Смотрите RM. Там написано какие прерывания какой периферии соответствуют и какие флаги выставляются.
Рядом с каждым флагом описание каким образом он сьрасывается.
Oleg Galizin вне форума  
Сказали "Спасибо" Oleg Galizin
Easyrider83 (12.10.2011)
Непрочитано 12.10.2011, 11:54  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Oleg Galizin Посмотреть сообщение
Смотрите RM.
Простите, что есть RM?
Easyrider83 вне форума  
Непрочитано 12.10.2011, 12:06  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Reference Manual...
st_1 вне форума  
Непрочитано 12.10.2011, 12:08  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от st_1 Посмотреть сообщение
Reference Manual...
У меня на STM32 уже пол тонны этих мануалов. Что конкретно вы имеете в виду?
Информацию приходится клещами вытаскивать.

Ладно, я понял, меня ткнули носом в 600 страниц мануала, типа, копай сам. Спасибо, умею. Есть и более легкие способы поиска информации.

Последний раз редактировалось Easyrider83; 12.10.2011 в 12:19.
Easyrider83 вне форума  
Непрочитано 12.10.2011, 12:30  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну так и посмотрите в ассемблере... загляните в Peripherals/ Core Peripherals/ Fault Reports... Может проц уже на полпути к Луне... или к Марсу...
st_1 вне форума  
Непрочитано 12.10.2011, 12:35  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от st_1 Посмотреть сообщение
Ну так и посмотрите в ассемблере... загляните в Peripherals/ Core Peripherals/ Fault Reports...
И как прикажете это читать?

А проц живой. Это ж плата STM32 Discovery. Чего ей сделается-то?
Easyrider83 вне форума  
Непрочитано 12.10.2011, 12:49  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

У-у-у-у... да у вас тут целый курятник...
Я ж вам говорил... говнокодите с битами... и ещё с чем-то...
Читать 600 страниц... RM...
По хорошему... должны быть птички только по Debug...
А проц живой... он просто в коматозе...

Последний раз редактировалось st_1; 12.10.2011 в 12:51.
st_1 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 23:36.


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