<?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/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html</link>
		<lastBuildDate>Tue, 14 Apr 2026 19:05:33 +0000</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="https://chipenable.ru/index.php/component/jcomments/feed/com_k2/219.html" rel="self" type="application/rss+xml" />
		<item>
			<title>Keisha says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5285</link>
			<description><![CDATA[I have noticed that your page needs some fresh content. Writing manually takes a lot of time, but there is tool for this boring task, search for: Wrastain's tools for content Feel free to surf to my homepage PatX: https://Roy2009.blogspot.com]]></description>
			<dc:creator>Keisha</dc:creator>
			<pubDate>Sun, 15 Oct 2017 15:00:08 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5285</guid>
		</item>
		<item>
			<title>Rashad says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5284</link>
			<description><![CDATA[Patriot Care is happy to provide the qualified sufferers of Massachusetts with a wide-variety of medicine-grade, naturally produced marijuana products for medical use with the best quality customer support available. Some states have processes for certifying and registering eligible folks. Some have additionally designated dispensaries, or medical marijuana facilities, the place individuals can get the product and advice on dosing and what type to make use of for his or her condition. Research report that marijuana has doable profit for several conditions. State legal guidelines range in which situations qualify individuals for treatment with medical marijuana. If you happen to're contemplating marijuana for medical use, verify your state's regulations. Nausea, vomiting or extreme wasting related to most cancers remedy. If you're experiencing uncomfortable symptoms or unintended effects of medical remedy, particularly ache and nausea, speak with your physician about all your choices before attempting marijuana. The state had nearly 10,800 registered patients as of the top of last yr. Craig West, the dispensary operations supervisor, stated Thursday the most important cause is that Compassionate Sciences is the only one in the state to offer cannabis extract s to its patients. In all probability between 20 and 30 p.c of our patients buy extracts,” he said, including that a whole lot of sufferers journey two hours from the tippy-prime of the state” to obtain the extracts. The primary cannabis-infuse d lozenges have been accredited for sale within the state final October. At that time, the dispensary was selling a bottle of 30 grape- or cherry-flavor lozenges for $75, or $60 if sufferers qualify for financial help, in response to a discover despatched out to sufferers. Which means the Egg Harbor-based mostly dispensary in Atlantic County is the second to the final in the state in terms of patients and gross sales. According to the report, about 4,seven hundred new sufferers registered for the program final year, nearly doubling the number from the previous year. WebMD describes spasticity as a muscle control dysfunction that is characterised by tight or stiff muscle tissue and an incapability to manage these muscle groups.” About 39 percent of patients who are eligible for marijuana are recognized with this situation. The second most common ailment was listed as severe or power pain,” based on the Health Division report. The brand new heart had some hiccups early Friday in the form of some laptop issues associated to the state's new customer monitoring system for ensuring patients don't exceed a limit of 3 ounces in a 14-day period. But those hold-ups were nothing compared with the gradual progress of Delaware's foray into medical marijuana , a point of frustration for many sufferers. Marijuana is still unlawful below federal legislation, even for medicinal use. But under state regulation, Delawareans can apply for a medical marijuana card to purchase cannabis at a dispensary so long as a physician has licensed that they have sure qualifying situations, together with cancer, Alzheimer's illness, a number of sclerosis, HIV and illnesses that cause severe ache and nausea. Legal points and construction delays pushed First State's opening in Wilmington back to mid-2015 - around the same time lawmakers voted to decriminaliz e marijuana, downgrading possession of 1 ounce from a felony offense to a civil violation, like a parking ticket. By then, greater than 300 Delawareans have been licensed to make use of medical marijuana. At present, more than three,000 patients statewide are licensed to buy cannabis. First State Compassion Middle, a new medical marijuana dispensary near Lewes. As a substitute, the New Castle County dispensary has nearly doubled its crop production to accommodate the Sussex County operation and growing demand close to Wilmington. Columbia's facility is slated to open this fall, although an exact location has not yet been disclosed. Shari Mosley, a fifty seven-year-old Dover resident who makes use of medical marijuana to help treat her multiple sclerosis, said she's trying forward to with the ability to purchase cannabis nearer to residence. The within of the Columbia Care medical marijuana dispensary is seen in New York January 7, 2016.Shannon Stapleton. THE BIG APPLE (Reuters) - New York state opened its first medical marijuana dispensaries on Thursday, launching one of the most conservative and tightly monitored applications of its form within the United States. Not like all the opposite states that permit medical marijuana except Minnesota, New York prohibits marijuana for smoking. It permits the drug to be offered solely in liquid or oil form to be used in vaporizers and inhalers, or capsules taken orally. In addition, New York requires a 4-hour mandatory training course for physicians before they can certify sufferers and for pharmacists earlier than they will dispense the drug, a requirement not mandated by different state applications, based on the National Convention of State Legislatures. By allowing solely refined marijuana extracts, not smokable crude plant or so-referred to as edibles, the state is permitting for larger dosing standardization and purity, Bednarczyk mentioned. We're additionally proud to perpetuate the Cannabis motion by way of our efforts in local and nationwide business and affected person outreach programs. We strive to present the widest variety of regionally sourced and in home strains for our sufferers. Signal up to obtain the most recent news and deals from The Clinic Nevada! Nonetheless, we're too busy swooning over the plush interiors of America's rising dispensary architecture to care about any of those things. The rising authorized marijuana industry is the quickest-growin g trade in the United States. Indeed, there are even structure and design corporations that specialize in the design of dispensaries and develop rooms. Jensen stated the durability and security of a financial institution added to the constructing's enchantment as a house for the potential dispensary. Jensen, an lawyer turned entrepreneur who has worked as a mentor with the Maryland Middle for Entrepreneurshi p, Howard County's business incubator, mentioned his experience as a most cancers survivor was one thing that led him to the medical cannabis trade, which is simply getting its begin within the state. The business' team also contains Melanie Galloway, the previous director of Crownsville's Serenity Acres drug rehabilitation clinic. Evolution Wellness was certainly one of 12 businesses awarded a dispensary license in December to function in Anne Arundel. Rising Medical Marijuana Card Doctor and the Studio City Easy Clinic in Valley Village additionally moved across the road to the easily accessible Starbucks shopping middle. The Studio Metropolis Simple clinic is now at the nook of Laurel Canyon and Riverside Dr at 12045 Riverside Dr Los Angeles CA, 91607. Open since 2009, Hollywood Easy Clinic and Medical Marijuana Card Physician concentrate on medical hashish evaluations, recommendations , renewals, playing cards and cultivation licenses for growing marijuana. Cannabis in Hollywood Los Angeles has its biggest advocate with Medical Marijuana Card Physician of the Hollywood Simple Clinic. California marijuana patients of Medical Marijuana Card Physician on the Hollywood Simple Clinic are the best advocates for how you can get a medical marijuana card. You should use this advice alone to get access to a cannabis club. However, a medical marijuana card is offered via our clinic for $20. Solely after you might have a valid and verified medical hashish suggestion are you able to receive a California State Verified medical marijuana identification card administered by your native county Division of Public Well being. If you are at the moment ready over an hour at one other docs workplace that looks just like the DMV, name and ask our cannabis clinic workers how simple it's to get a medical cannabis card at one in every of our clinics. These articles are thought of the California authority on medical hashish.Medical Marijuana Card Doctor and his consulting marijuana physicians comparable to Rising Medical Marijuana Doctor also work at the Studio Metropolis Simple Clinic. Studio Metropolis Simple Clinic, open since 2011, serves the sufferers of Sherman Oaks, North Hollywood, Van Nuys, Reseda. Our medical cannabis medical doctors train our patients about the advantages of organic meals, train and pure medicine as a complement to present medical care. Medical hashish patients as far west as Ventura County, Santa Barbara and Pismo Beach come to see if cannabis could be a protected part of their therapy plan. Renewals $forty five (renewal worth only counts if your suggestion hasn't expired prior to now 6 months) Full Bundle $eighty five. Often called the California Compassionate Use Act,” Proposition 215 was enacted by California voters and took effect on November sixth, 1996. Marijuana Dispensaries are fashioned by these collectives or teams of medical marijuana patients. Medical hashish in California has given energy again to the patient and made medical marijuana medical doctors objective observers to help patients in managing the advantages of marijuana with the negative effects of marijuana.Medic al marijuana card necessities have turn out to be higher defined because the legalization of medical marijuana. Alternative suggestions are $30 and includes a miniature advice so you're much less more likely to lose it again. Medical Marijuana Card San Francisco Doctor is a local Californian with a family history of farmers from Sonoma County in Northern California. He has worked with many different doctor's workplaces that specialize in medical marijuana and was dissatisfied with the level of disregard for affected person nicely being. However, he has utilized all of the greatest rules from each medical marijuana docs office into his personal apply with the Hollywood Easy Clinic. Hollywood Easy Clinic is a medical doctor's office that is situated in Los Angeles County, California specializing in medical marijuana cards, evaluations, suggestions and renewals. Our staff supplies steerage based on the affected person's needs and most sufferers uncover sure strains that provide the very best aid for his or her individual symptoms. Medical marijuana dispensaries are open in Nevada. Anyone with a medical marijuana card (even from out-of-state) is allowed to possess as much as 2.5 oz of hashish. Leisure and medical marijuana dispensaries are up and running in Nevada. Nevada recognizes reciprocity with different medical marijuana states, which means your medical card from out-of-state is valid at any Nevada dispensary. The Easiest Method to Get a Medical Marijuana Card from Medical doctors Who Care. You'll even be issued a medical marijuana card and literature containing California's medical marijuana legal guidelines. Your medical marijuana card permits you access to holistic drugs all through the state, whether you live in Downtown Los Angeles, Long Beach, CA, Culver Metropolis, CA, South Gate, CA, Inglewood, CA, Huntington Park, CA or anywhere else. Patients who have accomplished our medical examination with a qualifying condition will receive a durable, plastic affected person ID card containing your photograph, name, patient ID number, and your birthdate. This card could also be presented to regulation enforcement and incorporates necessary information about California's medical marijuana legal guidelines. Also visit my blog ... marijuana clinic - www.smartmylife.fr: https://www.smartmylife.fr/smartnews/groups/california-is-the-first-state-to-cross-marijuana-legal-guidelines-to-permit-california-sufferers-to-satisfy-with-medical-doctors-in-clinic-or-online-by-way-of-tele-medicine-to-visit-with-420-docs-for/members/ -]]></description>
			<dc:creator>Rashad</dc:creator>
			<pubDate>Sun, 15 Oct 2017 09:53:47 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5284</guid>
		</item>
		<item>
			<title>Jonah says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5280</link>
			<description><![CDATA[Create Trackers for Twitter, Instagram and Facebook. My web-site: best time to post on social media: https://www.4shared.com/web/preview/pdf/H9p8vvU7ca?]]></description>
			<dc:creator>Jonah</dc:creator>
			<pubDate>Thu, 12 Oct 2017 12:02:13 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5280</guid>
		</item>
		<item>
			<title>mikhail says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5278</link>
			<description><![CDATA[Спасибо за интересную публикацию! Читал с удовольствием как саму статью так и разгоревшуюся дискуссию в комментариях]]></description>
			<dc:creator>mikhail</dc:creator>
			<pubDate>Wed, 11 Oct 2017 16:02:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-5278</guid>
		</item>
		<item>
			<title>Владимир_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4973</link>
			<description><![CDATA[С точки зрения программиста программа написана на высоком уровне. Она полностью самодостаточка. Приятно полазить, понажимать кнопки... Оценил график (делал нечто подобное), наверняка пришлось порядком повозиться. С прикладной точки зрения все не так однозначно. Главная проблема - необходимость определять время выполнения каждой функции (знаю, в симуляторе AVR это легко). Для небольших проектов реально, но в ряде случаев это может стать проблемой. В целом интересная утилитка. Мне понравилась.]]></description>
			<dc:creator>Владимир_</dc:creator>
			<pubDate>Tue, 13 Dec 2016 04:15:42 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4973</guid>
		</item>
		<item>
			<title>Антон_Ш says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4948</link>
			<description><![CDATA[Представляю вашему вниманию утилиту которая визуализирует выполнение задач данным планировщиком. https://drive.google.com/file/d/0B6yun0FRTB-DalJhUmpFSF80Y28/view]]></description>
			<dc:creator>Антон_Ш</dc:creator>
			<pubDate>Sun, 20 Nov 2016 05:05:59 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4948</guid>
		</item>
		<item>
			<title>arhiv6 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4932</link>
			<description><![CDATA[Ваш на практике пробовал в одном проекте. Свой - пока только пару тестов запускал. В ближайшее время буду небольшой проект делать - там попробую. Если какие-то правки/исправле ния вносить буду - внесу исправления в репозиторий и тут в комментариях напишу.]]></description>
			<dc:creator>arhiv6</dc:creator>
			<pubDate>Tue, 25 Oct 2016 06:29:37 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4932</guid>
		</item>
		<item>
			<title>Владимир_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4931</link>
			<description><![CDATA[На практике уже пробовали его или просто ради удовольствия сделали?]]></description>
			<dc:creator>Владимир_</dc:creator>
			<pubDate>Tue, 25 Oct 2016 06:24:12 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4931</guid>
		</item>
		<item>
			<title>arhiv6 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4930</link>
			<description><![CDATA[Вот, выложил: https://github.com/arhiv6/arm-task-sheduler]]></description>
			<dc:creator>arhiv6</dc:creator>
			<pubDate>Mon, 24 Oct 2016 06:09:09 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4930</guid>
		</item>
		<item>
			<title>Владимир_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4929</link>
			<description><![CDATA[Более чем достаточно. Это 100%-ный OpenSource. Если не затруднит, оставьте здесь ссылку на гит. Интересно будет посмотреть.]]></description>
			<dc:creator>Владимир_</dc:creator>
			<pubDate>Mon, 24 Oct 2016 05:44:44 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4929</guid>
		</item>
		<item>
			<title>arhiv6 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4928</link>
			<description><![CDATA[Автор, я перенес планировщик на ARM и немного его доработал. Используются встроенные в ядро системный таймер SysTick и прерывание PendSV, что позволяет использовать планировщик на любом Cortex микроконтроллер е. Т.к. вся обработка сделана в прерываниях, в main вместо бесконечного вызова DispatchTask() можно оставить пустой цикл или заменить его на for(;;){idle()} ; - вызов какой-нибудь фоновой задачи, которую допускается в любой момент прервать остальными. Ещё добавил приоритеты задачам - если в один момент времени пришло время выполнить несколько задач одновременно - они выполняются в порядке, определённом их приоритетами. Собственно вопрос - у Вас в статье не указана лицензия проекта. Если я выложу код на github, достаточно того, что я укажу ссылку на эту статью и Вас в качестве автора изначального кода, на основе которого сделаны правки?]]></description>
			<dc:creator>arhiv6</dc:creator>
			<pubDate>Mon, 24 Oct 2016 04:14:10 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4928</guid>
		</item>
		<item>
			<title>Владимир_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4924</link>
			<description><![CDATA[Чтобы заданный период соответствовал действительност и. А иначе задачи будут выполняться через количество системных тиков period+1.]]></description>
			<dc:creator>Владимир_</dc:creator>
			<pubDate>Wed, 12 Oct 2016 04:34:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4924</guid>
		</item>
		<item>
			<title>ujin says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4921</link>
			<description><![CDATA[под разные задачи разные реализации...вы ше уже это говорили...поэт ому планировщику в этом мире есть свое место....с небольшой адаптацией вполне себе взлетел под CVAVrом вполне нормально так работает...нагр евалки-мигалки аля подобное ак раз вполне это для него... автору спасибо что делитесь своими знаниями ,и подробные объяснения по коду.]]></description>
			<dc:creator>ujin</dc:creator>
			<pubDate>Mon, 03 Oct 2016 15:32:16 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4921</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4919</link>
			<description><![CDATA[Мы с Владимиром уже обсуждали это творение. Остались при своих. Этот планировщик и ему подобные не имеют никакого смысла. Потому что начинающие программисты считают, что подобные планировщики и диспетчеры якобы решают их проблемы. Но на самом деле приобретают лишний геморрой. Решение главной проблемы (взаимодействие модулей и своевременное выполнение программного кода) следующее: Исключение долгих циклов программных модулей, дробление выполнения модулями программного кода. Программные таймеры. Автоматное программировани е. Конечные автоматы.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 01 Oct 2016 12:01:42 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4919</guid>
		</item>
		<item>
			<title>arhiv6 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4918</link>
			<description><![CDATA[А зачем в функции void RTOS_DispatchTa sk() в строчке TaskArray.delay = TaskArray.perio d-1; отнимается единица?]]></description>
			<dc:creator>arhiv6</dc:creator>
			<pubDate>Sat, 01 Oct 2016 11:46:20 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4918</guid>
		</item>
		<item>
			<title>Владимир_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4872</link>
			<description><![CDATA[Будут вопросы - спрашивайте. Я сюда периодически заглядываю.]]></description>
			<dc:creator>Владимир_</dc:creator>
			<pubDate>Tue, 26 Jul 2016 09:46:07 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4872</guid>
		</item>
		<item>
			<title>*Dim says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4871</link>
			<description><![CDATA[:-) Увидел ссыль на паяльную станцию, буду разбираться, спасибо.]]></description>
			<dc:creator>*Dim</dc:creator>
			<pubDate>Sat, 23 Jul 2016 10:18:31 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4871</guid>
		</item>
		<item>
			<title>*Dim says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4870</link>
			<description><![CDATA[А нет ли полного проекта с этим планировщиком? Нужен пример "правильного" построения программы.]]></description>
			<dc:creator>*Dim</dc:creator>
			<pubDate>Sat, 23 Jul 2016 10:15:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4870</guid>
		</item>
		<item>
			<title>Анатолий says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4718</link>
			<description><![CDATA[ Спасибо буду знать]]></description>
			<dc:creator>Анатолий</dc:creator>
			<pubDate>Sun, 10 Jan 2016 13:40:55 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4718</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4716</link>
			<description><![CDATA[Пожалуйста. В свойствах проекта надо прописать корневой каталог проекта, тогда угловые скобки будут работать. Ну или переделать на кавычки. Как пример можно посмотреть код моей станции: http://we.easyelectronics.ru/sva_omsk/vtoraya-zhizn-ersa-rds-80.html. Там много файлов, но для начала надо смотреть ssf.c и buttons.c]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sat, 09 Jan 2016 08:12:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4716</guid>
		</item>
		<item>
			<title>Анатолий says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4714</link>
			<description><![CDATA[Спасибо за планировщик. Все работает четко. Запустил на LED матрице 8х8. Параметр ПЕРИОД очень пригодился, позволил визуально проверить последовательно сть зажигания светодиодов и работу кода. Маленькая поправка. В коде заголовочные файлы в угловых скобках (а не кавычках), поэтому компилятор ругается. Или это только у меня?!. И еще было бы не плохо написать процедуру запуска с одной тестовой задачей (TskTest). Легче сразу разобраться.]]></description>
			<dc:creator>Анатолий</dc:creator>
			<pubDate>Tue, 05 Jan 2016 00:28:47 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4714</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4289</link>
			<description><![CDATA[Нет, нельзя. Как вариант - использовать глобальные переменные.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Fri, 19 Sep 2014 11:15:32 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4289</guid>
		</item>
		<item>
			<title>Chugun says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4286</link>
			<description><![CDATA[Можно ли передавать параметры в задачу при добавлении её в очередь, как при работе с функциями ???]]></description>
			<dc:creator>Chugun</dc:creator>
			<pubDate>Wed, 17 Sep 2014 20:35:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4286</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4278</link>
			<description><![CDATA[Ответил в сообществе]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Tue, 02 Sep 2014 12:33:48 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4278</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4277</link>
			<description><![CDATA[Владимир. Что вы скажете насчет такого варианта? ссылка: https://yadi.sk/d/tdS6dOLHasCMQ]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Tue, 02 Sep 2014 10:47:40 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4277</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4271</link>
			<description><![CDATA[Пожалуйста! А в каких случаях используете эту функцию?]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sat, 16 Aug 2014 09:03:19 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4271</guid>
		</item>
		<item>
			<title>megannnn98 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4269</link>
			<description><![CDATA[Единственное, что мне не хватило функции очистки очереди void RTOS_Reset() {	arrayTail = 0; // "хвост" в 0 }]]></description>
			<dc:creator>megannnn98</dc:creator>
			<pubDate>Fri, 08 Aug 2014 12:26:56 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4269</guid>
		</item>
		<item>
			<title>megannnn98 says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4262</link>
			<description><![CDATA[Спасибо огромное за планировщика. :D реально нужная штука]]></description>
			<dc:creator>megannnn98</dc:creator>
			<pubDate>Fri, 01 Aug 2014 09:44:50 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4262</guid>
		</item>
		<item>
			<title>Vlad says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4254</link>
			<description><![CDATA[Успешно прикрутил к STM8L. Кому интересно -- пишите.]]></description>
			<dc:creator>Vlad</dc:creator>
			<pubDate>Mon, 21 Jul 2014 06:57:08 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4254</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4229</link>
			<description><![CDATA[ В mega328 нет таких регистров, вот и выдаёт ошибку. Там TIMSK соответствует TIMSK0, TIFR - TIFR0 и так далее.]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Wed, 02 Jul 2014 14:22:04 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4229</guid>
		</item>
		<item>
			<title>Casper says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4228</link>
			<description><![CDATA[Жалуется на это rtos.c: In function 'RTOS_Init':
rt os.c:15: error: 'TCCR0' undeclared (first use in this function)
rtos. c:15: error: (Each undeclared identifier is reported only once
rtos.c:15: error: for each function it appears in.)
rtos.c:16: error: 'TIFR' undeclared (first use in this function)
rtos. c:17: error: 'TIMSK' undeclared (first use in this function)]]></description>
			<dc:creator>Casper</dc:creator>
			<pubDate>Tue, 01 Jul 2014 16:34:51 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4228</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4227</link>
			<description><![CDATA[Еще возможно потребуется изменить в главном файле .с строку
#include  на
#include "rtos.h"]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Tue, 01 Jul 2014 13:39:58 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4227</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4226</link>
			<description><![CDATA[скорей всего компилятор ругается на функции авр студии. уберите из функций диспетчера DISABLE_INTERRU PT и RESTORE_INTERRU PT (они не обязательны). Затем уберите инклуды из файла commons.h. Там же удалите ENABLE_, DISABLE_ и RESTORE_INTERRU PT. После этого оформите программу по правилам вашей среды разработки.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Tue, 01 Jul 2014 13:37:10 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4226</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4225</link>
			<description><![CDATA[ Как так? Что там переписывать нужно? Если плюсы понимает, то си наверняка поймёт.]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Tue, 01 Jul 2014 08:37:25 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4225</guid>
		</item>
		<item>
			<title>Casper says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4224</link>
			<description><![CDATA[Там проц atmega328 используется, но он сишный язык как я понял не понимает, надо под с++ переписывать..]]></description>
			<dc:creator>Casper</dc:creator>
			<pubDate>Mon, 30 Jun 2014 17:30:06 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4224</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4223</link>
			<description><![CDATA[Никогда не интересовался ардуиной, даже не знаю, какой там контроллер используется. Переделать несложно: поправить инициализацию аппаратного таймера в функции RTOS_Init, не забыть обновить счетчик в прерывании таймера (у меня это ISR(RTOS_ISR)). Разрешить глобальные прерывания. Все.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Mon, 30 Jun 2014 13:44:53 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4223</guid>
		</item>
		<item>
			<title>Casper says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4222</link>
			<description><![CDATA[День добрый. А под ардуино такой планировщик сложно будет переписать? Его очень не хватает мне для проекта)) Постепенно ухожу конечно я с ардуино, но самый большой проект всетаки на нем остался...]]></description>
			<dc:creator>Casper</dc:creator>
			<pubDate>Mon, 30 Jun 2014 09:56:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4222</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4212</link>
			<description><![CDATA[Да, и какой это у меня изврат с опросом кнопок? Вызов его (опроса) каждые 10 мс осуществляется одной строчкой:
RTOS_ SetTask(BUT_Sca n, 0, 10); Остальное разрулит фрагмент, приведенный выше. А он к диспетчеру можно сказать не имеет отношения.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 13:12:40 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4212</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4211</link>
			<description><![CDATA[На контроллере гальваники я примерно так и делал, только железно, почти без дефайнов. Опыта маловато было. Была матрица 3х4.
key_code = 0; SetPortKeys = 0x08; PortKeys = 0x77; if ((PinPortKeys&0 x01)==0x00) key_code=HEAT_k ey; if ((PinPortKeys&0 x02)==0x00) key_code=PREV_k ey; if ((PinPortKeys&0 x04)==0x00) key_code=START_ key; SetPortKeys = 0x10; PortKeys = 0x6F; if ((PinPortKeys&0 x01)==0x00) key_code=ESC_ke y; if ((PinPortKeys&0 x02)==0x00) key_code=SET_ke y; if ((PinPortKeys&0 x04)==0x00) key_code=ENTER_ key; SetPortKeys = 0x20; PortKeys = 0x5F; if ((PinPortKeys&0 x01)==0x00) key_code=PAUSE_ key; if ((PinPortKeys&0 x02)==0x00) key_code=NEXT_k ey; if ((PinPortKeys&0 x04)==0x00) key_code=STOP_k ey; SetPortKeys = 0; PortKeys = 0x40; Потом в основном цикле проверял код кнопки. В паяльной станции я сделал по другому, т.к. всего 5 кнопок.
void BUT_Scan()
{
// define | counter | short press | long press TestButton (BUT_FEN_SET, &fenSetPressed, FEN_SetMode, FEN_Off); TestButton (BUT_FEN_DOWN, &fenDownPressed , FEN_TempDown, NULL); TestButton (BUT_FEN_UP, &fenUpPressed, FEN_TempUp, FEN_SaveTemp); TestButton (BUT_SOLD_DOWN, &soldDownPresse d, SOLD_TempDown, SOLD_Off); TestButton (BUT_SOLD_UP, &soldUpPressed, SOLD_TempUp, SOLD_SaveTemp); 
} Согласитесь, приведенный фрагмент (если его выровнять, получится таблица) раскрывает весь функционал программы. К этому я и стремился.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 12:56:32 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4211</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4210</link>
			<description><![CDATA[Вот вам ссылка http://is.ifmo.ru/works/ Цикл статей Татарчевского. Для поиска. Татарчевский В. Применение SWITCH-технолог ии при разработке прикладного программного обеспечения для микроконтроллер ов. Часть 1 Ну и там много еще чего интересного. К примеру у Татарчевского рассказано, как можно реализовать опрос клавиатуры. Вкратце: перед вызовом автомата сканируются кнопки. В зависимости от того, какая клавиатура, пишется соответствующая функция. Матричная клавиатура, на одном порту, на нескольких портах. Дальше работает конечный автомат. Главная идея: сколько бы кнопок не было, они обрабатываются, как одна. И вам не нужно извращаться с диспетчером. Лично у меня опрос клавиатуры идет в модуле вывода информации на дисплей. Ну а если уж так приспичило использовать диспетчер, смотрите по программе, как вам запускать. Или как самостоятельную задачу, или в составе модуля. http://pastebin.com/URMd767u Идем дальше. Как дальше использовать. Отсканировали, распознали кнопки. В буфере у нас код кнопки. У меня это сделано так: В конечном автомате:
void Tui_Service_Mai n_Init (void)
{ set_menu (L_OUT_MODE);
} 
void Tui_Service_Mai n_Out_Mode (void) { if (proc_menu_keys ()) return; // Если была обработка кнопок - выход.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sun, 22 Jun 2014 08:47:12 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4210</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4209</link>
			<description><![CDATA[ Так я с этим и не спорил. Даже наоборот, говорил что для каждой задачи организация программы выбирается индивидуально! Я не имею ничего против автоматов!]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 07:01:26 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4209</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4208</link>
			<description><![CDATA[Микроменю я использовал в контроллере управления гальваникой, у меня там было ЕМНИП 168 пунктов меню - параметры системы для 3-х технологических процессов. Диспетчера тогда еще не было.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 06:07:31 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4208</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4207</link>
			<description><![CDATA[ну что за... Про реализацию - это мой ответ на пост ниже]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 06:03:35 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4207</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4206</link>
			<description><![CDATA[Вы наверно видели реализацию, описанную в статье. Там же я принавал, что это криво и что исправленный вариант (не привязанный к диспетчеру, можно и с автоматами использовать) в комментариях.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 06:02:22 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4206</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4205</link>
			<description><![CDATA[del]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 06:01:22 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4205</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4204</link>
			<description><![CDATA[ Между коньками естесственно]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 05:58:25 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4204</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4203</link>
			<description><![CDATA[Это бесконечный спор. Что не устраивало Вас в том диспетчере? Когда я сформировал свои требования и реализовал их, использование диспетчера приносит только удовольствие, никаких мучений! Вобще не согласен, на своем диспетчере я делал подсветку для коньков с более чем 10-ю эффектами, в большинстве из них используются переливы. При этом есть ИК-синхронизаци я между ними + пара кнопок. Очень прозрачно все написано, даже после длительного перерыва можно быстро во всем разобраться. Я не спорю, можно сделать и на автоматах. В этом случае будет даже эффективней в плане производительно сти. Но прога и так простаивает большую часть времени. А удобство восприятия программы на диспетчере с функциями SetTask(func, delay, period) мне нравится гораздо больше, чем просто список функций, непонятно как и когда вызываемых. ИМХО.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sun, 22 Jun 2014 05:56:32 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4203</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4201</link>
			<description><![CDATA[И кстати, автор, посмотрите в сторону micro menu. В инете найдете. Только за основу возьмите оригинал, а не как там товарищ сделал. И вы тем более поймете, что диспетчер во многих случаях не нужен.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 21 Jun 2014 18:19:44 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4201</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4200</link>
			<description><![CDATA[Кстати, я увидел вашу реализацию с короткими и длинными нажатиями. Вы диспетчер натягиваете, как ту сову, там где надо и не надо... Дайте ваш прямой контакт. Я отправлю вам пример, как можно спокойненько сделать на КА. И удержание (длинное нажатие по вашему), и автоповтор, и много чего еще можно сделать. И нафиг диспетчер не нужен.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 21 Jun 2014 18:08:36 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4200</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4199</link>
			<description><![CDATA[Диспетчер не может быть быстрее по определению. В обычном цикле нет переключения. На данный момент я не вижу для себя смысла в диспетчере. Если мне требуется что-то запустить с какой-либо периодичностью, достаточно флагов или конечного автомата. Если мне потребуется запустить моргалку светодиодом, мне не нужно превращать это в отдельную задачу. На автоматах можно запустить что угодно как угодно, в диспетчере же замаешься разруливать. Вы недавно правильно сказали, дело в опыте. Я мучался с диспетчером, пока меня не ткнули в автоматное программировани е. Поверьте, как только я увидел преимущество КА, сразу же выкинул диспетчер.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 21 Jun 2014 18:04:00 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4199</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4198</link>
			<description><![CDATA[Задача диспетчеров (планировщиков) - как раз таки запуск функции через заданное время. А распараллеливан ие задач - прерогатива ОСРВ. Не надо валить все в одну кучу. Для разных задач оптимальная организация программы определяется индивидуально. Тем более, кто Вам мешает в одну из задач диспетчера включить конечный автомат, реализующий эти самые световые эффекты. А потом задать период запуска этой задачи. Конечно, если вся программа состоит только из смены эффектов, то тогда да, смысла использования диспетчера нет. Но бывают ведь случаи и посложнее. И при чем тут avr? Какая разница какая архитектура контроллера? Дело ведь не в ней, а в структурном представлении программы. Причем модульности последней никто не отменял! На форумах иногда попадались личности, нежелающие использовать диспетчеры на avr, основываясь только на малом объеме памяти и быстродействии. Зато переходя на эти же stm первым делом изучали например freeRTOS. Только потому, что "так все делают". Появилась какая-то тенценция применения ОСРВ на ARM'ах, особенно, если присутствует мало-мальский графический интерфейс. На мой взгляд, совершенно необоснованная. Возможности диспетчеров позволяют в большинстве случаев обойтись без ОСРВ, а разница в быстродействии с автоматами измеряется микросекундами, не думаю, что сильно критично. Более того, могут быть ситуации, когда диспетчер окажется быстрее. Зависит от количества задач и частоты их запуска.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sat, 21 Jun 2014 17:38:44 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4198</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4197</link>
			<description><![CDATA[Нахер. На AVR никогда больше не вернусь к диспетчеру. Диспетчеры и RTOS хороши в системах, где код загружается с какого-либо носителя. На AVR код программы во флеш. И хоть через диспетчер, хоть в main крути функции, обвешав флагами или автоматом, суть не меняется. Только через диспетчер функции дольше переключаются. Если использовать диспетчер, то нужно четко определить, что считать задачей? Почему-то в диспетчерах задачей считают моргалку светодиодом. Воткнули моргалку, она исправно моргает, вау! Диспетчер, задача, епт! Хорошо, а если много светодиодов? И разные световые эффекты. Как тогда быть? На автоматах легко это делается. Через диспетчер замаешься разруливать. Вот если вытеснение, тогда уже другое дело. Простенький переключатель задач уже имеет право на существование. Но опять же, нужно четкое определение, что такое задача. Это не какая-то функция, которая запускается через определенное время. Задача диспетчеров - распараллеливан ие задач. Но опять же, если следовать некоторым правилам, то выясняется, что диспетчер опять не требуется. Правила простые. Модульность. Большие функции разбиваются. Никаких долгих циклов в функциях. Зашли, выполнили код, вышли. Проверили условие, вышли. Все это делается на флагах, автоматах, какие-либо условия.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 21 Jun 2014 10:12:23 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4197</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4196</link>
			<description><![CDATA[Да. А для точности тайминга и упрощения диспетчера лучше настроить таймер в режим СТС. Более того,раз это не прерывание, то там же в шедулере и сбрасывать вачдог.]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Sat, 21 Jun 2014 09:10:38 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4196</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4195</link>
			<description><![CDATA[ Плюсую. Диспетчер DI HALT-а сразу же так и переделал. У него в прерывании было, я вынес в основной цикл. В прерывании взводится флаг. В основном цикле проверяется флаг, если установлен, сброс флага, прочесывание очереди. Точность в единицы, десятки мкс не критична. Я решил все-таки собрать диспетчер. Позже выложу результат.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sat, 21 Jun 2014 06:30:15 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4195</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4194</link>
			<description><![CDATA[Совершенствоват ь можно до бесконечности, главное вовремя остановиться. Меня устроила текущая реализация, поэтому я и остановился на ней. Согласен с тем, о чем Вы говорите. Про опрос флага таймера в основном цикле я не думал. Возможно кто-нибудь захочет доработать этот диспетчер, добавить функциональност и. Например было бы неплохо добавить удаление задачи из списка через заданное время. Возможно сам доработаю, но уже не для avr, а для stm. Следующий проект будет на нем и планирую переводить туда этот диспетчер.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Sat, 21 Jun 2014 06:18:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4194</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4193</link>
			<description><![CDATA[Но тогда зачем вообще здесь прерырвания? Будет проще после прлхода всех задач опрашивать флаг таймера - тем более точность тайминга при этом не ухудшится по сравнению с данной реализацией. Зато будет короче, понятнее и безо всяких флагов состояния задач.]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Sat, 21 Jun 2014 05:33:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4193</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4192</link>
			<description><![CDATA[Дело вкуса. Просто у меня так сложилось, что если модуль представляет собой самостоятельную структуру, я добавляю префикс. Только для того, чтобы видеть, из какого именно модуля вызывается функция: RTOS_, WH1602_, WG12864_, UART_ и т.д. Согласен, бросается в глаза. Но когда подключено много модулей, как-то понятнее выглядит программа.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Thu, 19 Jun 2014 14:10:14 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4192</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4191</link>
			<description><![CDATA[блин, форматирование не получается, все смещается на начало строки]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Thu, 19 Jun 2014 14:00:22 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4191</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4190</link>
			<description><![CDATA[Всего так сразу и не вспомнишь... Из значительного: функция DeleteTask сначала сдвигала очередь после удаляемой задачи на одну позицию. Потом один человек подсказал идею с перестановкой только последней задачи. На тот момент функция Dispatch выглядела так:
void RTOS_DispatchTa sk()
{ u08 i; for (i=0; i]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Thu, 19 Jun 2014 13:55:04 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4190</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4189</link>
			<description><![CDATA[В строках RTOS_Set_Task и тд RTOS_ я бы убрал. В данном случае у нас простенький диспетчер. Set_Task Del_Task будет вполне достаточно и верно.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Thu, 19 Jun 2014 13:33:26 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4189</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4188</link>
			<description><![CDATA[Мне тот диспетчер тоже не понравился, но по другим причинам. Там не получится так прозрачно запустить такую простую задачу, как однократное включение нагрузки, скажем, на 1 минуту (примеры 2 и 3 в статье). Ну и куча лишних переборов очередей мне не нравится. По поводу автоматов, когда задач становится слишком много, сложно понять структуру программы. Я ничуть не умаляю достоинств такой организации, тем более диспетчер по своей сути автоматом и является. Точнее его более структурированн ым вариантом. Вот с этим абсолютно согласен.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Thu, 19 Jun 2014 13:20:33 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4188</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4187</link>
			<description><![CDATA[Вы правы, незачем. Это следы моих экспериментов с минимальным временем системного тика. Можно убрать. Но еще раз подчеркну, очень важно, чтобы все активные задачи успевали выполняться за один тик!]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Thu, 19 Jun 2014 13:06:06 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4187</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4186</link>
			<description><![CDATA[Тогда зачем критические секции в SetTask() и DeleteTask(), если прерывание не пересекается с работой ни одной из задач?]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Thu, 19 Jun 2014 07:56:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4186</guid>
		</item>
		<item>
			<title>Kodex says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4185</link>
			<description><![CDATA[Владимир, можешь рассказать/пока зать что конкретно менял в коде при отладке?]]></description>
			<dc:creator>Kodex</dc:creator>
			<pubDate>Thu, 19 Jun 2014 07:10:11 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4185</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4184</link>
			<description><![CDATA[Вот именно. Я споткнулся на диспетчере DI HALT-а. Понимаете на тот момент у меня была проблема, взаимодействие модулей. Казалось бы, вот оно решение. Но облегчения не наступило. Но стало все наоборот. Вдобавок, я вовремя поймал засаду с дамокловым мечом. Примерно в то время на одном форуме мне указали на автоматное программировани е. Да и на асме я тогда застрял. Все слазить с него не хотел. Когда у меня началось получаться с си, тогда я начал понимать, что мне говорили спецы на форуме. Поэтому я и говорю, не стоит тратить время на диспетчеры, если еще не научился модульному программировани ю, автоматному программировани ю. И тогда тебе, возможно вообще не потребуются диспетчеры. RTOS - это уже иная тема...]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Wed, 18 Jun 2014 17:46:59 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4184</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4183</link>
			<description><![CDATA[Это приходит с опытом.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 17:07:15 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4183</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4182</link>
			<description><![CDATA[Да, будут стоять и ждать. К моменту, когда ожидается прерывание, все задачи с установленным флагом Run должны выполниться. В цикле только прочесывается очередь и проверяется этот флаг, который у всех (!) задач должен быть равен 0. Прерывание никак не может прервать обращение к переменной delay.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 17:05:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4182</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4181</link>
			<description><![CDATA[Насчет атоиарности доступа к "длинным" переменным, исрользуемым в прерывании - необходимо выполнять простые правила: а) если переменная лишь читается в прерывании, то достаточно в фоновой функции обеспечить атомарность при ее изменении. б) если переменная изменяется в прерывании - то в фоновой функции нужно обеспечивать атомарность и при ее чтении и при ее изменении]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Wed, 18 Jun 2014 16:04:52 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4181</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4180</link>
			<description><![CDATA[Гм.... ну уложились все задачив один тик. И... что, будут стоять на месте и ждать прерывания? Нет, DispatchTask() так и будет вызываться в фоновой программе(см. пример работы старого планировщика) . И таким образом опасность прерывания внутри чтения/записи двухбайтового delay сохраняется. Надо делать критическую секцию.]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Wed, 18 Jun 2014 15:55:43 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4180</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4179</link>
			<description><![CDATA[А писать надо нормально, чтобы можно было и потом в код заглядывать.... http://pastebin.com/Qdhdh370]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Wed, 18 Jun 2014 15:46:54 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4179</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4178</link>
			<description><![CDATA[Ну так в статье тогда все правильно, и в архиве тоже! Свою рабочую версию я исправил. Но все равно, учту на будущее. Спасибо!]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 15:02:11 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4178</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4177</link>
			<description><![CDATA[ Вот на них как раз проблемы и могут быть - на более новых мегах обычно на каждый таймер выделяется свой TIFRx.
TIFR=1]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:52:44 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4177</guid>
		</item>
		<item>
			<title>JoJo says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4176</link>
			<description><![CDATA[Вот так TIFR = (1]]></description>
			<dc:creator>JoJo</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:41:55 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4176</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4175</link>
			<description><![CDATA[Я использовал только меги8, 16, 32. Проблем не было. Как тогда правильно будет установить этот бит на С? Или только вставки делать?]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:29:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4175</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4174</link>
			<description><![CDATA[Не туда отправил, ну да ладно]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:22:15 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4174</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4173</link>
			<description><![CDATA[По большому счету, диспетчер и есть флаговый автомат, просто более структурированн ый]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:21:17 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4173</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4172</link>
			<description><![CDATA[Скобки я ставлю только для того, чтобы стоящие рядом команды установки и снятия (тут то скобки обязательны) бита были красиво выровнены. Люблю аккуратно оформленный код)]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 14:09:46 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4172</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4171</link>
			<description><![CDATA[Паяльник, фен, корпус с 5-ю кнопками, два 3-символьных 7-сегментника, несколько светодиодов. Дело не в том, сколько чего вешается на порты, а в том, как разрулить все необходимые режимы работы системы. Причем так, чтобы было удобно сопровождать. Я ни в коем случае не заставляю всех использовать диспетчеры! Можно реализовать это на них, можно на автоматах или полноценных ОСРВ. Дело вкуса. Но я сделал так, мне понравилось, и решил поделиться. Еще могу добавить по автоматному программировани ю. 2 года назад я делал контроллер управления гальванической линией металлизации печатных плат, а это: 5 ванн с терморегулирова нием и контролем уровня, 3 струйных промывки, включение источников тока и барботажа, система перемещения заготовки (2 шаговых дигателя с концевиками), дисплей. Делал на автоматах. Сейчас я даже не хочу в тот код залазить. Так вот, к чему я это? А к тому, что для каждой задачи надо выбирать оптимальное решение!]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 13:57:41 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4171</guid>
		</item>
		<item>
			<title>_Артём_ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4170</link>
			<description><![CDATA[ Транслируется правильно, но сам алгоритм неправильный. Видимо для ваших программ это не было важно. Проблема может возникнуть в старых мегах - регистр TIFR зашарен между некоторыми таймерами. Поэтому в результате операции |= могут быть сброшены все флаги, а не один. В результате можно потерять прерывания или не отреагировать на нужный флаг. И для сброса бита в TIFR достаточно записать в нужную позицию 1 - на асме это две команды:
ldi reg, 1]]></description>
			<dc:creator>_Артём_</dc:creator>
			<pubDate>Wed, 18 Jun 2014 13:57:25 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4170</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4169</link>
			<description><![CDATA[Не сочтите, что я вообще против диспетчера. Приведу пример. Не так давно я делал один проект. Блок управления, термоформовочны й станок. Типа СТА-150. Это: несколько датчиков, пульт управления (пульт оператора), символьный VFD, матричная клавиатура 4х4, выходы. В итоге получилось 3 порта дискретных входов, 1 порт клавиатура, 1 порт VFD, 2 порта выходы. Я взвесил и принял решение применить сдвиговые регистры для расширения ввода-вывода. 74HC165 и 74HC595. То есть, используется SPI. МК в DIP40 корпусе. Если что, вытащил из панельки, заменил. Так вот никакого диспетчера у меня в помине нет. Main и список вызываемых функций. Все. А вы диспетчер в паяльную тсанцию засунули. Что у вас там? Кнопки, дисплей, неважно какой. Термодатчик, нагреватель паяльника. Ну управление питанием еще. Спрашивается, зачем в паяльной станции диспетчер? Лучше автоматным программировани ем бы занялись. И диспетчеры тогда вам еще не скоро понадобятся...]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Wed, 18 Jun 2014 13:30:17 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4169</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4168</link>
			<description><![CDATA[5) Создавать нужно то, что тебе нужно. А не делать что-то, а потом думать, а зачем?! Я лично писал диспетчер для конкретной задачи, формируя только то, что нужно мне. Результат мне понравился. Настолько, что решил опубликовать. Этот планировщик был первой моей публикацией в жизни. 6) По поводу тестирования. Я очень долго прогонял его и в симуляторе, и в железе. И он претерпел немало доработок. Но если кому-то захочется целенаправленно его потестировать на баги - я только за!)]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:25:29 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4168</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4167</link>
			<description><![CDATA[4) Применение диспетчеров не панацея от всего. И везде их совать ни к чему. Я это прекрасно понимаю. Но, уже в сотый раз, да ладно, приведу пример моей горемычной паяльной станции. Там применен этот планировщик. И мне бы очень хотелось бы сравнить код, выполняющий те же функции, что у меня реализованы, только без диспетчера, так же легко читаемый, структурированн ый, логичный. Удобство сопровождения я теперь ценю гораздо выше, чем года 3-4 назад. Станция уже почти готова, скоро выложу.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:24:39 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4167</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4166</link>
			<description><![CDATA[3) Атомарный доступ к переменной delay тут не обязателен. Уже говорилось в статье про исходный планировщик, что все готовые к запуску задачи (я называю это сценарий) должны уложиться в системный тик. Это довольно важный момент, который надо учитывать, если задачи требуют больших вычислительных мощностей.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:24:05 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4166</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4165</link>
			<description><![CDATA[2) Применение подобных планировщиков никогда не позволит соблюсти абсолютную временную точность выполнения задач. Погрешность может составлять до одного системного тика. И в этом нет ничего страшного, по крайней мере в большинстве приложений.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:23:35 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4165</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4164</link>
			<description><![CDATA[плин... 1) по поводу |=. Установка флага в регистре TIFR у меня происходит именно так, архив чуть устаревший отправил Паше. Уже попросил его поправить статью. Я не силен в ассемблере, но команда TIFR |= (1 shl TOV0); транслируется в 3 асмкоманды: IN, ORI, OUT. Ни разу у меня не было конфликтов, связанных с установкой флага с помощью |=. Возможно потому, что в инициализациях я не разрешаю глобальные прерывания. Делаю это уже перед основным циклом.]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:23:02 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4164</guid>
		</item>
		<item>
			<title>Владимир says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4163</link>
			<description><![CDATA[Нда, не ожидал такой дискуссии) Постараюсь ответить на все вопросы: 1) по поводу |=. Установка флага в регистре TIFR у меня происходит именно так, архив чуть устаревший отправил Паше. Уже попросил его поправить статью. Я не силен в ассемблере, но команда TIFR |= (1]]></description>
			<dc:creator>Владимир</dc:creator>
			<pubDate>Wed, 18 Jun 2014 12:21:38 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4163</guid>
		</item>
		<item>
			<title>JoJo says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4162</link>
			<description><![CDATA[Спортивный интерес .. только и всего]]></description>
			<dc:creator>JoJo</dc:creator>
			<pubDate>Tue, 17 Jun 2014 14:19:29 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4162</guid>
		</item>
		<item>
			<title>Kodex says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4161</link>
			<description><![CDATA[Я вот сегодня доделал для себя версию этого "старого планировщика". Добавил два уровня приоритетов. Массив задачь такой же как здесь. Задачи готовые для выполнения суются в один из двух массивов, в зависимости от приоритета. После нек. количества запуска высокоприоритет ных задачь обязятельно запускается одна низкоприоритетн ая. Одно не пойму. Нахрена мне все это...]]></description>
			<dc:creator>Kodex</dc:creator>
			<pubDate>Tue, 17 Jun 2014 14:12:40 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4161</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4160</link>
			<description><![CDATA[Нет. Всему свое применение. Только прежде чем лепить что-то свое, нужно прогнать как следует. Выявить недостатки. И не диспетчеры нужно лепить, а научиться взаимодействию модулей. Потому что эти материалы читают начинающие. Которые вроде как нашли решение, как же, ляпаешь как попало задачи, и они блин работают. А если таким начинающим придет в голову применить эти диспетчеры и потом вляпываются по самое не балуй...]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Tue, 17 Jun 2014 11:28:48 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4160</guid>
		</item>
		<item>
			<title>САБ says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4159</link>
			<description><![CDATA[На данный момент мне ни разу не понадобились: FPGA, многослойные платы, долбежный станок, картофелеубороч ный комбайн, женские прокладки и много чего еще. Предлагаете доказывать всем их ненужность?]]></description>
			<dc:creator>САБ</dc:creator>
			<pubDate>Tue, 17 Jun 2014 11:17:43 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4159</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4157</link>
			<description><![CDATA[В таких планировщиках не только проблема атомарности. Взять, к примеру диспетчер DI HALT-а. В его диспетчере, в начальной версии, на асме (в сишной я еще не копался, да и нет желания) два момента. 1. Таймерная служба работает в прерывании. 2. Дамоклов меч. Представим ситуацию, мы на таком диспетчере написали программу для станка. В очереди таймеров болтается задача на исполнение. И тут бац, аварийная ситуация. Ну ладно, встали в соответствующий режим, а из прерывания таймерная служба выстрелила задачу на исполнение. Потому и назвал дамоклов меч. И вот как теперь шерстить очередь на предмет удаления задач? Если мы даже не знаем, что можно удалять, а что нельзя. Мало ли какие моменты, пусть и аварийная ситуация. На данный момент мой опыт: пока всякие диспетчеры мне ни разу не понадобились. void main (void) { func_1 (); func_2 (); func_3 (); } Все! Главные принципы: модули, автоматное программировани е. Каждая задача разбивается так, чтобы не было долгих циклов. К примеру, системный тик 1 мс. И каждый пробег main должен с запасом уложиться в 1 мс. Ну как-то так...]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Tue, 17 Jun 2014 07:28:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4157</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4156</link>
			<description><![CDATA[Вот мы дошли и до анализа потенциальной уязвимости "улучшенного планировщика". Кто мне объяснит, что будет, если вызываемая в фоновом режиме функция DispatchTask() прервётся от таймера во время доступа к двухбайтовой переменной TaskArray.delay ? Да, я о проблеме атомарности, если че))]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Tue, 17 Jun 2014 06:42:15 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4156</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4155</link>
			<description><![CDATA[delete]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Mon, 16 Jun 2014 08:04:11 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4155</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4154</link>
			<description><![CDATA[delete]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Mon, 16 Jun 2014 08:00:43 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4154</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4153</link>
			<description><![CDATA[http://pastebin.com/4Vz96ASs]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Mon, 16 Jun 2014 08:00:01 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4153</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4152</link>
			<description><![CDATA[Этой таймерной службы мне хватает практически для всех проектов. Точность - +- 1-10 мкс. Но есть но: представим ситуацию. Нам нужно запустить задачу на 10 мс. И установка таймера задача произошла перед прерыванием. В итоге получится не 10 мс, а 9 с небольшим. Но так как я эти таймеры использую в задачах, где 10, даже 100 мкс погоды не играют. Абсолютно. Ну будет разброс в мкс обработки матричной клавиатуры, или обновление символьного ЖКИ. Ну и хрен на него, на это расброс. Зато я получил простую в использовании таймерную службу. Максимальное время 65535 мс. Если мне требуются большие отрезки времени, в модулях использую дополнительные счетчики. Скажем, счет каждые 100 мс. Дальше планирую допилить, чтобы был флаг инкремент-декре мент. И пауза таймеров. Например, это потребуется в следующих ситуациях. Есть оборудование с режимом "Пауза". Вот в этих случаях и требуется наличие паузы в таймерах.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Mon, 16 Jun 2014 07:59:24 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4152</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4151</link>
			<description><![CDATA[Трабла есть, если используется системный тик. Скажем, 1 мс. У меня сейчас сделано так: Массив из нужного кол-ва таймеров. Структура массива: статусный байт, 16-битный счетчик. Прерывание настроено на 1 мс. В обработчике прерывания только перезапуск таймера, для точного отбивания по 1 мс. И установка флага. В основной программе вызывается Service_Timers. Зашли, проверили флаг, не установлен, вышли. Установлен, пробежались по массиву, если в статусном байте установлен флаг TMR_UNLOCK_FLG, декремент 16-битного счетчика. Обработка следующего таймера. Если флаг не установлен, обработка следующего таймера. Время вышло (0), установка флага TIME_OUT_FLG.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Mon, 16 Jun 2014 07:58:28 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4151</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4150</link>
			<description><![CDATA[Ну что ж, с очисткой флагов регистра TIFR разобрались. Теперь, перед анализом багов собственно планировщика, надо научиться правильно запускать таймер. Пользователь, поверив "продвинутому разработчику планировщика", возьмет за основу этот метод, и так и будет запускать свои таймеры в своих задачах. И может огрести кучу траблов. Для исключения этого я просто перечислю шаги запуска таймера - на примере AVR, но, наверно, и независимо от МК. 1. Остановить таймер. 2. Задать в регистрах режим работы таймера (для AVR это TCCRA, TCCRC, если они есть. А если нет - то пропустить этот шаг). Причем делать это явным присваиванием (а не пресловутой операцией |= ). Регистр, где запускается таймер - не трогать. 3. Инициализовать счетный регистр TCNTn. 4. Инициализовать регистр(ы) сравнения OCCRn 5. В регистре TIFR cбросить флаги относящиеся к таймеру-пОциент у. 6. Разрешить нужные прерывания таймера, запрещая ненужные. 7. Запустить таймер, одновременно до-задавая режим его работы - для AVR это TCCRnB(если он есть) или TCCRn. Причем тоже операцией простого присваивания, а не |=. После такой процедуры таймер не подведет. Готов обсудить.]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Mon, 16 Jun 2014 07:03:16 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4150</guid>
		</item>
		<item>
			<title>demiurg says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4149</link>
			<description><![CDATA[Как бы вы не одушевляли МК, камнем он и остается. И нужно знать, как заставить этот камень правильно шевелиться. Согласен, я не сразу вкупился в чем дело. Бегло глянул, вроде отличия только в скобках. Ну и успокоился. А то что вы рассказали, я и так знал. Ну и удивился формулировке "не любит". И наличие команд sbi cbi. Делать новый проект, чтобы убедиться, какие команды будут подставлены мне лениво. Все равно я для этих регистров делаю прямую запись. Нули-то все равно бесполезно пихать, не так ли? В крайнем случаю лишний раз гляну в даташит, чтобы уточнить как запустить периферию.]]></description>
			<dc:creator>demiurg</dc:creator>
			<pubDate>Sun, 15 Jun 2014 08:53:28 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4149</guid>
		</item>
		<item>
			<title>Peter says:</title>
			<link>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4148</link>
			<description><![CDATA[Рад что Вы наконец поняли. А дело свое надо именно ЛЮБИТЬ. Тогда и предмет работы будет казаться живым. Удачи!]]></description>
			<dc:creator>Peter</dc:creator>
			<pubDate>Sun, 15 Jun 2014 08:45:03 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/embedded-programming/219-planirovschik-dlya-mikrokontrollera.html#comment-4148</guid>
		</item>
	</channel>
</rss>
