Использование прерываний для управления процессами в PIC24

Views: 1279


Во второй главе для управления светодиодами применялись макросы задержки, они “типа” стопорили работу процессора на пол секунды, после чего, контроллер выполнял необходимые команды по переключению светодиодов  и опять занимался тем что ожидал. в реальной жизни это непозволительная роскошь. Если контроллеру необходимо выполнять обработку информации, то наши задержки будут только стопорить его основную работу.

Для решение этой проблемы можно использовать прерывания, которые формирует аппаратный таймер и который работает независимо от функционирования центрального процессора. Одно из решений задачи, контроллер занимается основной задачей и циклически проверяет флаг который устанавливается когда выполняется прерывание от таймера. Если флаг установлен выполняется процедура “мигания” светодиодами  Если нет выполняется основная задача.

Основные различия от предыдущего проекта это при настройки таймера включение прерывания от таймера TMR1.

//---------------------------------------------------------------------------
// Настройка таймера TMR1
	 	 T1CON = 0b1000000000110000;
//				  |||||||||||||||+-- неиспользуемый
//				  ||||||||||||||+--- TCS: источник тактовых импульсов FOSC/2 
//				  |||||||||||||+---- TSYNC: состояние игнорируется, так как тактовая частота системный генератор  
//				  ||||||||||||+----- неиспользуемый 
//				  ||||||||||++------ TCKPS1:TCKPS0: настройка предделителя 11 = 1:256
//				  |||||||||+-------- TGATE: 0- режим измерение длительности входного импульса отключен 
//				  |||++++++--------- неиспользуемые
//				  ||+--------------- TSIDL: 0- продолжать работу в режиме ожидания (сна) 
//				  |+---------------- неиспользуемый
//				  +----------------- TON: 1 -таймер включен
 		PR1=0xFFFF;	// период счета
		_T1IF=0;	// очистить бит прерывания от таймера TMR1
		_T1IE=1;	// разрешить прерывание от таймера TMR1

//---------------------------------------------------------------------------

Создание функции прерывания от таймера TMR1.

// подпрограмма обслуживания прерываний от таймера TMR1
void __attribute__((__interrupt__, __auto_psv__)) _T1Interrupt(void)
{

	_T1IF=0;		// сброс флага прерывания от таймера TMR1
	Bit.MIG=1;
	
}//

А сам главный цикл программы теперь будет выглядеть так:

while(1)
	{
        ClrWdt();			// сброс сторожевого таймера

//-------------------------
// переключение светодиодов
		if(Bit.MIG)
       	{        
	       	if(Bit.NAG)
			{
	        	_LATA0 = 1; 	// выключить светодиод
	        	_LATB0 = 0;	// выключить светодиод
	     	 	Bit.NAG=0;
	      	}
	      	else
	      	{ 
	        	_LATA0 = 0; 	// выключить светодиод
	        	_LATB0 = 1;	// включить светодиод
			Bit.NAG=1;
			}

			Bit.MIG=0;
		}
//-------------------------	
	// основная программа в этом месте

	
	}

Расчет периода прерываний для таймера TMR1 (смотри в описании по работе с таймером).


Загрузка проекта

Значок

Использование прерываний для управления процессами в PIC24 45.72 KB 758 downloads

Использование прерываний для управления процессами...


Это может быть интересно

  • Индикатор кода – RC-5 Protocol PhilipsИндикатор кода – RC-5 Protocol Philips
    Views: 993 Индикатор кода – RC-5 Protocol Philips При конструировании дистанционного управления на инфракрасных лучах для контроля удобно иметь индикатор кодов передаваемых пультом. Плата ch-c3000 позволяет изготавливать устройства с возможностью …
  • Счетчики посетителейСчетчики посетителей
    Views: 1270 Вас сосчитали!? или счетчики посетителей.   Для чего нужны счетчики посетителей? Какие они бывают? ТОРГОВЛЯ. Подсчитайте, сколько ваш магазин посещает человек за день. Кок много человек приходит утром, какое …
  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Views: 1943 Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое …
  • Temperature measurement with NTC thermistor.Temperature measurement with NTC thermistor.
    Views: 325 Проекты в которых присутствовало измерение температуры начинал с цифровых датчиков, т.к. в них все просто и не надо ничего преобразовывать и вычислять. При использовании цифровых датчиков ты получаешь …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Views: 1089 Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код if(EUSART_DataReady) // проверим флаг готовности данных …
  • Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)
    Views: 3206 Солнечные коллекторы для отопления в Европе используют в более 50% от общего количества установленных гелиосистем. Однако следует понимать, что гелиосистемы предназначены лишь для поддержки отопления и экономии затрат на основную …
  • CLUBBEST-50-LightCLUBBEST-50-Light
    Views: 277 CLUBBEST-50-LIGHT   Зміст Короткий опис проекту. 1 Опис схемотехніки візуалізатора музики. 2 Аудіо вхід. 3 MCU. 4 Цифровий вихід. 5 Схема живлення MCU. 6 Складання пристрою. 7 Список …
  • Analog-to-Digital Converter with Computation Technical BriefAnalog-to-Digital Converter with Computation Technical Brief
    Views: 1276 Аналого-цифровой преобразователь с вычислительным модулем. ВВЕДЕНИЕ Аналого-цифровой преобразователь (ADC) с вычислительным модулем (ADC2) в 8-разрядном микроконтроллере Microchip имеет встроенные вычислительные функции, которые обеспечивают функции пост-обработки, такие как передискретизация, …
  • CLUBBEST – reasoning on the visualization of music.CLUBBEST – reasoning on the visualization of music.
    Views: 130 ВІД ЗАХОДУ ДО СВІТАНКУ АБО ПОБАЧИТИ МУЗИКУ.     Час доби, коли почуття людини загострюються, – це час від заходу до світанку. В цей час людина відкрита для …
  • LATINO – открытый проект ch-светомузыкиLATINO – открытый проект ch-светомузыки
    Views: 1660   Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была …


Поделись этим!