<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Организация программ. Событийная система на таблице</title>
		<description>Discuss Организация программ. Событийная система на таблице</description>
		<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html</link>
		<lastBuildDate>Thu, 16 Apr 2026 18:40:15 +0000</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="https://chipenable.ru/index.php/component/jcomments/feed/com_k2/73.html" rel="self" type="application/rss+xml" />
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4099</link>
			<description><![CDATA[ Не обязательно на асме: у atmega32 все нужные регистры доступны. Но стеком можно и не заморачиваться - проще так:
void isr_handler()
{ if (NeedRestart()) asm("JMP 0x0000");
} Но вряд ли нужно так программу делать...]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Wed, 21 May 2014 14:04:10 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4099</guid>
		</item>
		<item>
			<title>Spectr says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4098</link>
			<description><![CDATA[ На асме что ли? Можно пример?]]></description>
			<dc:creator>Spectr</dc:creator>
			<pubDate>Wed, 21 May 2014 13:29:37 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4098</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4097</link>
			<description><![CDATA[ Если хочется, то можно извратится: с помощью манипуляций с SP можно что-нибудь придумать. Правда надо ли такое? Стек можно откорректироват ь. На 3-5 задач 1кБ ОЗУ хватит. Если оставшегося килобайта для программы достаточно, то можно и RTOS применить.]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Wed, 21 May 2014 12:14:59 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4097</guid>
		</item>
		<item>
			<title>Spectr says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4096</link>
			<description><![CDATA[ Впервые слышу, что в исполнении main'а можно выходить за его же пределы, в данном случае, используя Си-код. И вообще, разве переход куда-либо в прерывании без возврата не забивает стек? Насчет RTOS, думаю, что ее использование будет слишком жирненько для Atmega32.]]></description>
			<dc:creator>Spectr</dc:creator>
			<pubDate>Wed, 21 May 2014 11:00:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4096</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4093</link>
			<description><![CDATA[ Ну, вас не поймёшь: то мгновенная передача, то завершение текущих циклов. Если хотите мгновенную, то можно в прервании перейти куда-нибудь в точку до вызова main и запустить его снова или вообще несколько main-ов сделать и запускать нужный. Или RTOS попробуйте - будет переключаться за 400-500 тактов.]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Tue, 20 May 2014 12:22:01 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4093</guid>
		</item>
		<item>
			<title>Spectr says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4090</link>
			<description><![CDATA[Спасибо! Пару дней назад тоже пришел к похожему коду. Только тут есть своя особенность. В функции Task1(), например, в условии главного цикла проверяется флаг CurrentTask. Такая организация становится неприемлемой, если в таком цикле есть множество других вложенных циклов, которые тормозят мгновенную передачу управления другой ф-ии, при возникновении события. Вывод: нужно ставить проверку флага в другое - более "оживленное" место цикла.]]></description>
			<dc:creator>Spectr</dc:creator>
			<pubDate>Tue, 20 May 2014 07:08:57 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4090</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4089</link>
			<description><![CDATA[volatile unsigned char SheduledTask;
u nsigned char CurrentTask;
vo id interrupt_handl er()
{	Sheduled Task=DefineActu alTask();
}
voi d Task0()
{	while (CurrentTask==S heduledTask) {	// çàäà÷à 0	}
}
void Task1()
{	while (CurrentTask==S heduledTask) {	// çàäà÷à 1	}
}
void Task2()
{	while (CurrentTask==S heduledTask) {	// çàäà÷à 2	}
}
int main()
{	while (1) {	CurrentTask=S heduledTask;	sw itch (SheduledTask) {	case 0:	Task0();	bre ak;	case 1:	Task1();	bre ak;	case 2:	Task2();	bre ak;	}	}
}]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Mon, 19 May 2014 16:01:47 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4089</guid>
		</item>
		<item>
			<title>Spectr says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4088</link>
			<description><![CDATA[Подскажите, как можно было бы организовать постоянную передачу управления различным функциям при возникновении соотв. события? Например, есть бегущая строка, которая работает в 3 основных режимах: скроллинг текста, редактор текста и командная консоль. Каждый из этих режимов - это функция с бесконечным циклом внутри. В любой момент вся система работает под управлением только ОДНОЙ функции. Задача: при возникновении события (в прерывании) производить передачу управления конкретному режиму (другой ф-ии с бесконечным циклом), при этом завершая выполнение текущей ф-ии. Т.е. как скакать по бесконечным циклам, в соотв. с тем или иным событием?]]></description>
			<dc:creator>Spectr</dc:creator>
			<pubDate>Sun, 18 May 2014 11:18:07 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-4088</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3315</link>
			<description><![CDATA[Есть. Сейчас что-нибудь добавлю, чтобы было более очевидно.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Wed, 02 Oct 2013 10:44:37 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3315</guid>
		</item>
		<item>
			<title>sayya78 says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3312</link>
			<description><![CDATA[решено хотя в статье нет ни слова про то что currentState нужно обьявить как глобальную переменную...]]></description>
			<dc:creator>sayya78</dc:creator>
			<pubDate>Wed, 02 Oct 2013 10:04:36 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3312</guid>
		</item>
		<item>
			<title>sayya78 says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3311</link>
			<description><![CDATA[Пробую перенести данную заготовку на IAR под АРМы 6.5 и тут же получаю затыки: Не объявленна переменная table Error[Pe020]: identifier "table" is undefined и не объявлен currentState: Error[Pe020]: identifier "currentState" is undefined Как я понимаю диспетчер должен тупо крутиться по кругу.]]></description>
			<dc:creator>sayya78</dc:creator>
			<pubDate>Wed, 02 Oct 2013 09:54:51 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-3311</guid>
		</item>
		<item>
			<title>Iren says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1522</link>
			<description><![CDATA[А что будет, если автомат находится в состоянии "Установка времени", а пришло прерывание от секундного таймера? Даже для такой несложной задачи таблица становится либо многомерной либо двумерной, но с повторениями. Может автомат лучше прицепить именно к часам, а не к диспетчеру. Диспетчер пусть занимается обработкой событий, то есть вызовом функций, а уж что эти функции делают - их проблемы.]]></description>
			<dc:creator>Iren</dc:creator>
			<pubDate>Mon, 06 Jun 2011 13:40:14 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1522</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1295</link>
			<description><![CDATA[Еще не отредактировал. Не знаю.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Sat, 05 Mar 2011 06:37:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1295</guid>
		</item>
		<item>
			<title>foxit says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1290</link>
			<description><![CDATA[ Когда выложишь?]]></description>
			<dc:creator>foxit</dc:creator>
			<pubDate>Fri, 04 Mar 2011 17:28:36 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1290</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1105</link>
			<description><![CDATA[А зачем это делать? Это уже будут связанные списки. Несколько иная структура данных. Для подменю не нужно создавать свою структуру. Просто забивай подменю в таблицу и все.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 03 Feb 2011 13:34:48 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1105</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1104</link>
			<description><![CDATA[Только там один косячок всплыл. Нужно добавить слово __flash для CV перед обявлением массива. Вот так.
__flash struct ROW_TABLE table[] Перед структурой CV это слово игнорирует, а потому засовывает всю таблицу в ОЗУ.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 03 Feb 2011 13:32:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1104</guid>
		</item>
		<item>
			<title>teiggery says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1090</link>
			<description><![CDATA[Pashgan, а для организации меню на массиве структур как задать структуре следующий элемент и предыдущий? и еще: для каждого подменю, как я понимаю нужно создавать свою структуру?]]></description>
			<dc:creator>teiggery</dc:creator>
			<pubDate>Thu, 03 Feb 2011 08:50:01 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1090</guid>
		</item>
		<item>
			<title>teiggery says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1078</link>
			<description><![CDATA[думал что CVAVR не поймет. а понял. отлично!]]></description>
			<dc:creator>teiggery</dc:creator>
			<pubDate>Tue, 01 Feb 2011 22:45:59 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1078</guid>
		</item>
		<item>
			<title>teiggery says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1077</link>
			<description><![CDATA[а вот по поводу массивов структур очень познавательно. :lol:]]></description>
			<dc:creator>teiggery</dc:creator>
			<pubDate>Tue, 01 Feb 2011 22:44:32 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-1077</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-929</link>
			<description><![CDATA[Ничуть. Просто более быстрый и безопасный вариант все того же Вашего опроса if (countBuf > 0) ....]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Sun, 19 Dec 2010 14:48:16 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-929</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-913</link>
			<description><![CDATA[Ученые будут биться над этим. Но не обещаю в ближайшее время по этой теме статьи. У меня есть почти законченный перевод про реализацию конечного автомата. Довольно интересный. Вот может его выложу.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Mon, 13 Dec 2010 22:02:05 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-913</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-912</link>
			<description><![CDATA[Это опять возврат к суперлупу и полингу большого количества флагов.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Mon, 13 Dec 2010 21:59:53 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-912</guid>
		</item>
		<item>
			<title>Zliva says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-900</link>
			<description><![CDATA[ А можно подробней про обмен между мк Протоколов обмена между контролерами существует не очень много. Я делаю обычно по аналогу модбас с небольшой доработкой. В зависимости от сложности задачи, с контрольной или без контрольной сумы, с слейвом или без. Функции пишу свои.]]></description>
			<dc:creator>Zliva</dc:creator>
			<pubDate>Sun, 12 Dec 2010 12:00:31 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-900</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-895</link>
			<description><![CDATA[Флаг - это не обязательно бит. Это, как написал выше, может быть char-величина количества пришедших но необработанных запросов от конкретного источника в своем небольшом буферке. 0-нет запросов, 1,2,3,пусть даже допустили чудовищный случай 4 события без обработки. Источник запроса, например, обработчик быстрого SPI-slave, принял байт, положил новый пришедший байт в свой маленький буферок-массивч ик[4], и инкрементировал "флаг"(который не флаг а char). Прерывания запрещаются всего на несколько тактов. --------------- --------------- -------
char smallbufSPI[4], flag_counterSPI =0;
-------
-- Событие: пришел очередной байт SPI--
SAVE_INTE RRUPT;
CLI; smallbuf[flag_c ounterSPI]=SPDR ; if(flag_counter SPI]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Fri, 10 Dec 2010 16:25:10 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-895</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-894</link>
			<description><![CDATA[Это не RTOS. Такая система не обеспечивает заданное время реакции на события. Может случиться вообще такая ситуация, что программа заткнется в обработчике.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Fri, 10 Dec 2010 14:56:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-894</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-893</link>
			<description><![CDATA[Да можно, конечно. Делаешь два буфера и два обработчика. Навернуть тут можно много, главное не увлечься. Ведь все эту нужно в конце концов для решения конкретных задач.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Fri, 10 Dec 2010 14:54:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-893</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-892</link>
			<description><![CDATA[Это скорее достоинство, чем недостаток. Все статьи сайта я пытаюсь делать простыми и понятными.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Fri, 10 Dec 2010 14:49:02 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-892</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-891</link>
			<description><![CDATA[Это стандартный подход, используемый повсеместно. А вообще все зависит от приложения. Для многих приложений эти 40 тактов, что мертвому припарка, ничего не дают. Ни в плане улучшения, ни в плане ухудшения характеристик. По поводу флагов. Флаг можно выставить однократно. А если событие успело прийти несколько раз? Как это отразить?]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Fri, 10 Dec 2010 14:46:25 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-891</guid>
		</item>
		<item>
			<title>Антон says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-888</link>
			<description><![CDATA[Я делал на ПИК24. В регуляторе нет ничего "космического". П-закон регулирования, динамическая индикация, + АЦП, - выход ШИМ :-)]]></description>
			<dc:creator>Антон</dc:creator>
			<pubDate>Fri, 10 Dec 2010 14:10:23 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-888</guid>
		</item>
		<item>
			<title>foxit says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-886</link>
			<description><![CDATA[ +1]]></description>
			<dc:creator>foxit</dc:creator>
			<pubDate>Fri, 10 Dec 2010 13:26:16 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-886</guid>
		</item>
		<item>
			<title>foxit says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-885</link>
			<description><![CDATA[ А можно подробней про обмен между мк]]></description>
			<dc:creator>foxit</dc:creator>
			<pubDate>Fri, 10 Dec 2010 13:25:43 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-885</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-883</link>
			<description><![CDATA[В этой системе точно такая же ситуация, как в подобии RTOS на easyelectronics .ru. События-задачи болтаются в буфере-очереди задач. И все это как дамоклов меч. Представим ситуацию, когда событие вдруг стало не актуально, но оно болтается в буфере-очереди. И когда очередь дойдет до него оно и произойдет. Хотя, вполне может быть, что эта ситуация как-то у вас решается...]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Fri, 10 Dec 2010 12:43:56 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-883</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-882</link>
			<description><![CDATA[Конечно, у каждого источника можно не один код события поставлять "наверх", а поставить свой индивидуальный например 2-х уровневый буферок. Так, на всякий случай, чтоб не быть особо уязвимым при частых событиях. Get_Event будет анализировать char-флаг а там 0(пусто), 1(одно событие от опрашиваемого устройства), или 2(ого, накопилось! :)). Причем все это без особенных затрат.]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Fri, 10 Dec 2010 11:06:44 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-882</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-881</link>
			<description><![CDATA[Запрет прерывания? Не хватало еще МК "оглохнуть" на 40 тактов :) Подход в принципе не тот. Поясняю: ко вводу в очередь нового события подпускать нельзя ни фоновую программу, ни прерывательскую . Они все ставят только флаг и код события. А функция (пучть в Вашем случае ES_GetEvent), прежде чем анализировать что там есть в буфере событий, в цикле спокойно "сканирует источники" на предмет установленных флагов и тогда уж и кладет результаты их жизнедеятельнос ти в буфер, каждый раз на коротенькое время запрещая прерывания на момент опроса флага конкретного источника. Ну буквально на 4 такта. Кстати, этим одновременно придается источникам некий "приоритет", ставя важные опросы пораньше и прерывая дальнейший опрос при нахождении флага.]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Fri, 10 Dec 2010 10:55:54 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-881</guid>
		</item>
		<item>
			<title>Zliva says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-879</link>
			<description><![CDATA[У меня вопрос: Можно ли организовать двух и трех поточную событийную систему? У кого какие будут идеи?]]></description>
			<dc:creator>Zliva</dc:creator>
			<pubDate>Fri, 10 Dec 2010 06:13:55 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-879</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-878</link>
			<description><![CDATA[Спасибо, надо будет с ними разобраться.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 09 Dec 2010 23:19:17 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-878</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-877</link>
			<description><![CDATA[Даешь материал по регулятору давления пара!!!]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 09 Dec 2010 23:18:37 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-877</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-876</link>
			<description><![CDATA[Да пожалуйста.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 09 Dec 2010 23:17:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-876</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-875</link>
			<description><![CDATA[Да, сразу на ногу перепад давать. Такая событийная система не обеспечивает заданное время реакции на событие. Это же не RTOS.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 09 Dec 2010 23:16:08 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-875</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-874</link>
			<description><![CDATA[Indigo, необязательно переписывать функцию, можно вызывать ее так
__disable_i nterrupt();
ES_ PlaceEvent(..); 
__enable_inter rupt(); ну или объявить ее с ключевым словом __monitor
__mon itor void ES_PlaceEvent(. .) Grigorij, если прервется ES_GetEvent() ничего не случиться. До тех пор пока в буфере есть события голова и хвост указывают на разные ячейки. А по поводу сокращения условия - да. можно избавиться. Я написал так код для наглядности]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Thu, 09 Dec 2010 22:53:21 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-874</guid>
		</item>
		<item>
			<title>Zliva says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-873</link>
			<description><![CDATA[Спер. Респект. Жду часть 2 для наглядности. А то уже начал путаться в структуре switch-case. Эта система более наглядная и понятная. Сейчас думаю, как организовать обмен между двумя контролерами по УСАПП чтобы каждый видел статус, а такой подход вообще шикарно подходит. Спасибо Pashgan]]></description>
			<dc:creator>Zliva</dc:creator>
			<pubDate>Thu, 09 Dec 2010 22:04:32 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-873</guid>
		</item>
		<item>
			<title>Grigorij says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-872</link>
			<description><![CDATA[Тогда, наверное, надо переписать еще и ES_GetEvent. Ведь теоретически возможна ситуация, когда при вызове ES_PlaceEvent (в прерывании) будет перезаписано то значение cycleBuf[headBu f], которые мы ожидали получить вызвав ES_GetEvent. Ну и до кучи тогда. Можно в обоих функциях избавиться от условий вида: if (XXX == SIZE_BUF) XXX = 0; Заменив на: XXX &= (SIZE_BUF-1) Единственное только число SIZE_BUF должно быть степенью двойки.]]></description>
			<dc:creator>Grigorij</dc:creator>
			<pubDate>Thu, 09 Dec 2010 17:08:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-872</guid>
		</item>
		<item>
			<title>DVF says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-871</link>
			<description><![CDATA[Самое интересное тут - это как реализовать точность хода "часов". Гуманоиду, конечно, на мили и микро наплевать, а если надо синхронизироват ь от них внешние действия? А событие в очереди, блин, застряло. Можно, конечно, сразу на ногу перепады выложить...]]></description>
			<dc:creator>DVF</dc:creator>
			<pubDate>Thu, 09 Dec 2010 17:02:49 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-871</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-870</link>
			<description><![CDATA[Тоесть и "фоновая" функция кнопку опросит сгенерит свое событие, и независимо от нее таймер в обработчике прерывания тоже может сгенерить свое событие? Тогда уж перепишите функцию ES_PlaceEvent чтобы запрещала прерывания при манипуляциях с переменной tailBuf.]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Thu, 09 Dec 2010 15:58:02 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-870</guid>
		</item>
		<item>
			<title>Grigorij says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-869</link>
			<description><![CDATA[Внесу маленькое дополнение: 1. Кратко на русском про протопотоки - http://bsvi.ru/protopotoki-protothreads/ 2. Оригинал на англ. и сама библиотека - http://www.sics.se/~adam/pt/]]></description>
			<dc:creator>Grigorij</dc:creator>
			<pubDate>Thu, 09 Dec 2010 10:10:33 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-869</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-866</link>
			<description><![CDATA["Источником события может выступать периферийный модуль, внешнее воздействие (например, нажатие кнопки), функция,..."]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Wed, 08 Dec 2010 19:41:47 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-866</guid>
		</item>
		<item>
			<title>Антон says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-864</link>
			<description><![CDATA[Хорошо было бы сделать статью по организации программы по-switch технологии (конечный автомат). Мне понравилась событийна система. Я даже сделал на её основе регулятор давления пара и всё "сносно" работает.]]></description>
			<dc:creator>Антон</dc:creator>
			<pubDate>Wed, 08 Dec 2010 10:22:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-864</guid>
		</item>
		<item>
			<title>Indigo says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-863</link>
			<description><![CDATA[А источник событий может быть только из прерывания? А чтобы и прерывание и опрос генерили события можно сделать?]]></description>
			<dc:creator>Indigo</dc:creator>
			<pubDate>Wed, 08 Dec 2010 08:57:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-863</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-862</link>
			<description><![CDATA[А мне нравится этот велосипед. На нем, например, удобно меню делать.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Tue, 07 Dec 2010 22:40:42 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-862</guid>
		</item>
		<item>
			<title>BSVi says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-861</link>
			<description><![CDATA[>но при превышении определенного порога сложности Фигня, если превышается уровень сложности - стоит юзать полноценную ОС, плюс ко всему получаешь кучу плюшек. Если ОС - жирно, и хочется как-то покрасивше и побыстрее, можно заюзать протопотоки. А городить такой велосипед я бы не стал. В винде события сделаны из-за того, что они хорошо ложатся на логику работы форм, а не из-за быстродействия.]]></description>
			<dc:creator>BSVi</dc:creator>
			<pubDate>Tue, 07 Dec 2010 22:26:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-861</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-859</link>
			<description><![CDATA[Использовать глобальные переменные.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Tue, 07 Dec 2010 16:27:23 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-859</guid>
		</item>
		<item>
			<title>Антон says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-855</link>
			<description><![CDATA[А как передать параметры в обработчик события или использовать только глобальные переменные?]]></description>
			<dc:creator>Антон</dc:creator>
			<pubDate>Tue, 07 Dec 2010 10:44:12 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-855</guid>
		</item>
		<item>
			<title>Alca says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-853</link>
			<description><![CDATA[О новый урок!!! Спасибо.]]></description>
			<dc:creator>Alca</dc:creator>
			<pubDate>Tue, 07 Dec 2010 07:03:23 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/73-organizatsiya-programm-sobytiynaya-sistema-na-tablitse.html#comment-853</guid>
		</item>
	</channel>
</rss>
