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

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

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

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

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

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


Ответ
Опции темы

обработка одновременных прерываний в STM32

Непрочитано 30.03.2017, 16:13   #21
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Позволю себе задать уточняющий вопрос: а каким образом определяются срабатывания прерываний?
Да и вообще код самих обработчиков прерываний не помешало бы привести.
Тут или ошибка в программе или аппаратный глюк в камне. Ничего третьего в голову не приходит.
Реклама:
H4LF вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 16:15   #22
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Сообщение от H4LF Посмотреть сообщение
аппаратный глюк в камне
А доказательства имеются?
STM32F0 вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 16:20   #23
serb-radio
Гражданин KAZUS.RUN
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Код:
void EXTI15_10_IRQHandler  (void)
{
//-------------	capt0 --------------------------
	if(EXTI-›PR & EXTI_PR_PR13)// capt0
	{
	//	EXTI-›PR |= EXTI_PR_PR13; // EXTI13
		n_sns=0; //ïðèíÿë 0 äàò÷èê
		exti_det ();
		EXTI-›PR |= EXTI_PR_PR13; // EXTI13
	}
	return;
}
void EXTI3_IRQHandler ()
{
//------------- capt 7 --------------------------
	if(EXTI-›PR & EXTI_PR_PR3)// capt7
	{
		//EXTI-›PR |= EXTI_PR_PR3; // EXTI3
		n_sns=7; //ïðèíÿë 7 äàò÷èê
		exti_det ();
		EXTI-›PR |= EXTI_PR_PR3; // EXTI3
	}
	return;
}

void exti_det (void)
{
	if(dist_cnt_en==1)
	{
		if((dist_cnt›=d_raise)&(dist_cnt‹dist_max[n_sns]/2)) // äèàãíîñòèêà íà ëåòó
		{
			if((resp_is_det&_BV(n_sns))==0)
			{
				d_resp_val[n_sns]=dist_cnt;
				resp_is_det|=_BV(n_sns);	
				tst_high;tst_low;						
			}
		}
		
		if(dist_cnt›=d_min_resp) // ïðîïóñê çâîíà
		{
			if((det[step]&_BV(n_sns))==0)
			{
				if(dist_cnt›=2*dist_min[n_sns]) // ìèíèìàëüíàÿ äèñòàíöèÿ
				{
					dist[n_sns]=dist_cnt/2;
					dist_lev[n_sns]=dist_to_lev (dist[n_sns]);
					n_cur=n_sns;d_cur=dist[n_sns];
					
				//	exti_msk_tmp[step]&= ~_BV(n_sns);
				//	exti_capt(exti_msk_tmp[step]);
					
					det[step]|=_BV(n_sns);
					
					tst_high;tst_low;
					send_dist=1;
				}							
			}
			//tst_high;tst_low;
		}
	}
	return;
}
__________________
То, что нас не убивает - делает нас сильнее

Последний раз редактировалось realid; 30.03.2017 в 16:23.
serb-radio вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 16:24   #24
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Ну а с чего бы тут возникать прерывание, если закомментировано включение маски прерываний. Регистр IMR.
Закомментировано разрешение прерывания от указанной линии

Последний раз редактировалось NewWriter; 30.03.2017 в 16:26.
NewWriter вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 16:35   #25
serb-radio
Гражданин KAZUS.RUN
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

у меня этот бит устанавливается в программе
Код:
void exti_capt (unsigned int exti_msk)
{
	// capt0
	if(exti_msk&0x0001){EXTI-›IMR |= EXTI_IMR_MR13;		}
	else{EXTI-›IMR &= ~EXTI_IMR_MR13;		}

	// capt1
	if(exti_msk&0x0002){EXTI-›IMR |= EXTI_IMR_MR12;	}
	if((exti_msk&0x0002)==0){EXTI-›IMR &= ~EXTI_IMR_MR12;}

	// capt2		
	if(exti_msk&0x0004){EXTI-›IMR |= EXTI_IMR_MR15;	}
	if((exti_msk&0x0004)==0){EXTI-›IMR &= ~EXTI_IMR_MR15;	}

	// capt3
	if(exti_msk&0x0008){EXTI-›IMR |= EXTI_IMR_MR14;	}
	if((exti_msk&0x0008)==0){EXTI-›IMR &= ~EXTI_IMR_MR14;}

	// capt4
	if(exti_msk&0x0010){EXTI-›IMR |= EXTI_IMR_MR6;}
	if((exti_msk&0x0010)==0){EXTI-›IMR &= ~EXTI_IMR_MR6;}

	// capt5
	if(exti_msk&0x0020){EXTI-›IMR |= EXTI_IMR_MR7;}
	if((exti_msk&0x0020)==0){EXTI-›IMR &= ~EXTI_IMR_MR7;}
	
	// capt6
	if(exti_msk&0x0040){EXTI-›IMR |= EXTI_IMR_MR0;}
	if((exti_msk&0x0040)==0){EXTI-›IMR &= ~EXTI_IMR_MR0;	}


	// capt7	
	if(exti_msk&0x0080){EXTI-›IMR |= EXTI_IMR_MR3;}
	if((exti_msk&0x0080)==0){EXTI-›IMR &= ~EXTI_IMR_MR3;}

	// capt8	
	if(exti_msk&0x0100){EXTI-›IMR |= EXTI_IMR_MR1;	}
	if((exti_msk&0x0100)==0){EXTI-›IMR &= ~EXTI_IMR_MR1;	}

	// capt9
	if(exti_msk&0x0200){EXTI-›IMR |= EXTI_IMR_MR2;}
	if((exti_msk&0x0200)==0){EXTI-›IMR &= ~EXTI_IMR_MR2;}

	// capt10
	if(exti_msk&0x0400){EXTI-›IMR |= EXTI_IMR_MR11;}
	if((exti_msk&0x0400)==0){EXTI-›IMR &= ~EXTI_IMR_MR11;}

	// capt11	
	if(exti_msk&0x0800){EXTI-›IMR |= EXTI_IMR_MR10;}
	if((exti_msk&0x0800)==0){EXTI-›IMR &= ~EXTI_IMR_MR10;}

	return;
}
__________________
То, что нас не убивает - делает нас сильнее

Последний раз редактировалось realid; 30.03.2017 в 17:13.
serb-radio вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 16:54   #26
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Вот это вот:
Код:
EXTI-›PR |= EXTI_PR_PR13;
точно сбрасывает только свой флаг, а не все что есть в EXTI-›PR?
Как я понимаю должно быть так:
Код:
EXTI-›PR = EXTI_PR_PR13;
dgrishin об этом и написал.
И никаких аппаратных глюков тут, видимо, нет
H4LF вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 17:06   #27
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Немного поясню.
Сброс флага осуществляется записью в регистр EXTI-›PR единицы на место нужного флага (где уже стоит единица). Запись нуля (в этом регистре) флаг не изменяет (1 не станет 0). Это всё сделано для удобства сброса отдельных флагов (ну может ещё по каким-то причинам, я не знаю).
Запись
EXTI-›PR |= EXTI_PR_PR13;
тоже самое что и
EXTI-›PR = EXTI-›PR | EXTI_PR_PR13;
Таким образом все установленные флаги сбрасываются.
H4LF вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 17:13   #28
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

serb-radio, тегом CODE религия не позволяет пользоваться?
realid вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 17:23   #29
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Сообщение от H4LF Посмотреть сообщение
Немного поясню.
Если сами запутались, то не путайте ТСа и всех остальных.
STM32F0 вне форума   Ответить с цитированием
Непрочитано 30.03.2017, 17:25   #30
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: обработка одновременных прерываний в STM32

Сообщение от STM32F0 Посмотреть сообщение
Если сами запутались, то не путайте ТСа и всех остальных.
Сообщение от H4LF Посмотреть сообщение
EXTI-›PR = EXTI_PR_PR13;
Все правильно он написал.
realid вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по непрерывности прерываний в STM32 MaxiMuz79 ARM 33 19.01.2014 08:32
Обработка прерываний в LPC1114 swat24 Микроконтроллеры, АЦП, память и т.д 7 09.12.2011 01:11
Обработка прерываний UART ADuC7026 korel_one Микроконтроллеры, АЦП, память и т.д 0 01.04.2010 10:44
Обработка нескольких прерываний AVR (вопрос) festoon Микроконтроллеры, АЦП, память и т.д 27 17.11.2008 18:02
Обработка прерываний. Tibo Микроконтроллеры, АЦП, память и т.д 12 13.07.2007 17:22


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.