Планировщик для микроконтроллера

14/06/2014 - 10:00 Владимир Шибанов

Введение

Вопреки расхожему мнению, применение планировщиков/диспетчеров позволяет значительно ускорить разработку приложений, затратив при этом совсем немного памяти. А, как известно, время разработчика дороже последней. Средний диспетчер занимает около 1 кБ flash. Это совсем немного, учитывая те возможности, которые он предоставляет.

Сделать свои программы более организованными мне, простому любителю, хотелось достаточно давно. Я опробовал на реальных устройствах событийную систему на таблице, диспетчер ДиХальта и планировщик. Последний меньше всего мне понравился. При использовании его "как есть" он, на мой взгляд, мало пригоден для создания приложений посложнее мигания светодиодами. Но у него есть один плюс, который меня покорил. Он очень, очень простой. А значит быстрый и надежный. Поэтому его я и взял за основу.

Итак, что же, как минимум, должно быть у диспетчера для полноценного его использования? На мой взгляд необходимо следующее:

1) Возможность однократного запуска задачи;
2) Возможность циклического запуска задачи с заданным периодом;
3) Возможность однократного или циклического отложенного запуска с заданной паузой;
4) Удаление задачи.

Перечисленного вполне достаточно для реализации самых разнообразных алгоритмов. При этом, как видим, ничего лишнего нет.

Доработка планировщика

Старый планировщик умеет запускать циклические задачи отложенно (или сразу). Это уже немало. Но чтобы реализовать весь желаемый функционал, пришлось изменить практически все его функции. Теперь по порядку.

Структура задачи и очередь задач остались неизменными:


typedef struct task
{
   void (*pFunc) (void); // указатель на функцию
   u16 delay; // задержка перед первым запуском задачи
   u16 period; // период запуска задачи
   u08 run; // флаг готовности задачи к запуску
}task;

volatile static task TaskArray[MAX_TASKS]; // очередь задач


Начиная с инициализации начинаются отличия. В исходном варианте очередь очищается путем обнуления параметров задач во всей очереди. Я же ввел дополнительную переменную «хвоста» очереди и просто обнуляю ее.


inline void RTOS_Init()
{
   TCCR0 |= (1<<CS01)|(1<<CS00); // прескалер - 64
   TIFR = (1<<TOV0); // очищаем флаг прерывания таймера Т0
   TIMSK |= (1<<TOIE0); // разрешаем прерывание по переполнению
   TIMER_COUNTER = 130; // загружаем начальное зн. в счетный регистр

   arrayTail = 0; // "хвост" в 0
}


Постановщик в очередь. В старом планировщике это функция AddTask. При наличии свободного места в очереди она добавляет задачу, даже если такая уже есть в списке. Мне показалось это неудобным, поэтому задача добавляется только в том случае, если ее в списке нет. В противном случае обновляются ее параметры: пауза до выполнения и период. Поэтому функция теперь называется SetTask. Это логичней.


u08 i;

if(!taskFunc) return;

for(i = 0; i < arrayTail; i++) // поиск задачи в текущем списке
{
   if(TaskArray[i].pFunc == taskFunc) // если нашли, то обновляем переменные
   {
      DISABLE_INTERRUPT;

      TaskArray[i].delay = taskDelay;
      TaskArray[i].period = taskPeriod;
      TaskArray[i].run = 0;

      RESTORE_INTERRUPT;
      return; // обновив, выходим
   }
}

if (arrayTail < MAX_TASKS) // если такой задачи в списке нет
{ // и есть место,то добавляем
   DISABLE_INTERRUPT;

   TaskArray[arrayTail].pFunc = taskFunc;
   TaskArray[arrayTail].delay = taskDelay;
   TaskArray[arrayTail].period = taskPeriod;
   TaskArray[arrayTail].run = 0;

   arrayTail++; // увеличиваем "хвост"
   RESTORE_INTERRUPT;
}
}


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


void RTOS_DeleteTask (void (*taskFunc)(void))
{
   u08 i,j;

   for (i=0; i<arrayTail; i++) // проходим по списку задач
   {
      if(TaskArray[i].pFunc == taskFunc) // если задача в списке найдена
      {

         DISABLE_INTERRUPT;
         if(i != (arrayTail - 1)) // переносим последнюю задачу
         { // на место удаляемой
            TaskArray[i] = TaskArray[arrayTail - 1];
         }
         arrayTail--; // уменьшаем указатель "хвоста"
         RESTORE_INTERRUPT;
         return;
      }
   }
}


Для реализации однократного запуска была изменена функция извлечения задачи из очереди. Если подошло время выполнения (флаг Run установлен), проверяется значение периода, если он равен 0, задача просто удаляется из очереди.


void RTOS_DispatchTask()
{
   u08 i;
   void (*function) (void);
   
   for (i=0; i<arrayTail; i++) // проходим по списку задач
   {
      if (TaskArray[i].run == 1) // если флаг на выполнение взведен,
      { // запоминаем задачу, т.к. во
         function = TaskArray[i].pFunc; // время выполнения может
         // измениться индекс
        if(TaskArray[i].period == 0)
        { // если период равен 0
           RTOS_DeleteTask(TaskArray[i].pFunc); // удаляем задачу из списка,
        }
        else
        {
           TaskArray[i].run = 0; // иначе снимаем флаг запуска
           if(!TaskArray[i].delay) // если задача не изменила задержку
           { // задаем ее
               TaskArray[i].delay = TaskArray[i].period-1;
           } // задача для себя может сделать паузу
        }
       
        (*function)(); // выполняем задачу
   }
}


Таймерная служба осталась почти без изменений, разве что очередь теперь сканируется не полностью, а только до "хвоста".


ISR(RTOS_ISR)
{
   u08 i;

   TIMER_COUNTER = 130; // задаем начальное значение таймера

   for (i=0; i<arrayTail; i++) // проходим по списку задач
   {
      if (TaskArray[i].delay == 0) // если время до выполнения истекло
      TaskArray[i].run = 1; // взводим флаг запуска,
      else TaskArray[i].delay--; // иначе уменьшаем время
   }
}


Вот все, что касается доработок старого планировщика. Теперь использовать его уже не просто удобно, а приятно. Программа становится логичной, читабельной, простой.
Теперь несколько примеров использования.

Примеры использования планировщика

1) Запуск сканирования клавиатуры 100 раз в секунду


RTOS_SetTask(KeyScan, 0, 10); // период 10 мс, неотложенный запуск


2) В паяльной станции: после включения или изменения заданной температуры одну секунду показывается заданная, затем текущая, которая обновляется 3 раза в секунду. Всего 2 строчки, смысл которых будет понятен даже не программисту.


// где-то в программе

// вывод на экран текущей температуры каждые 300 мс
RTOS_SetTask(FEN_ViewCurrentTemp, 0, 300); 
...
...

FEN_TempUp()
{
...
// пауза до вывода текущей температуры 1000 мс
RTOS_SetTask(FEN_ViewCurrentTemp, 1000, 300);

// отображение заданной температуры (1 раз) 
RTOS_SetTask(FEN_ViewTargetTemp, 0, 0); 
...
}


3) Зажигаем светодиод на 5 секунд:


RTOS_SetTask(LED_ON, 0, 0); // зажигаем
RTOS_SetTask(LED_OFF, 5000, 0); // гасим через 5 секунд


4) Смена цвета моргания светодиода при смене режима работы:


// где-то в программе
mode = GREEN; // установили режим
RTOS_SetTask(Blink_green, 0, 500); // задали цвет моргания

// изменение режима
mode = RED;
RTOS_DeleteTask(Blink_green); // выключили зеленый цвет моргания
RTOS_SetTask(Blink_red, 0, 500); // задали красный цвет моргания

Файлы

scheduler.rar 


Автор статьи: Владимир Шибанов. 

Комментарии   

# Peter 15.06.2014 06:51
Гм... А в так называемом СтаромПланировщ ике регистр TIFR очищался правильно. Как видим, новое не есть улучшенное)
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 07:06
Все правильно. Скобки ставим, чтобы наверняка. Потому как, если скобки не ставить, нужно помнить приоритет операций. Я, например, не желаю забивать голову всякой херней, сидеть, вспоминать, а какой там порядок приоритета? Проще скобки поставить.
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 07:15
Да не в скобках дело. TIFR у многих AVR не любит операций |=
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 07:21
Раз вы так сейчас сказали, значит, вы плохо знаете архитектуру AVR... Подумайте, прежде чем ответить.
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 07:26
Если вы не любите кошек, значит вы не умеете их готовить...
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 07:27
Ууууу. Тогда советую Вам повнимательнее пояитать даташит хотя бы на весьма распрочтраненну ю мегу128. А именно об недопустимости применять инструкцию SBI для сброса регистров флагов, очищающихся записью 1. Удачи!
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 07:33
Обоснуйте. Конкретные примеры в студию.
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 07:43
Подозреваю, что мои примеры Вас не убедят. Вместо благодарности за науку будете ругать. Поэтому я дал Вам точную наводку где и по каким словам искать. RTFM, уважаемый. Там все описано с объяснениями.
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 07:47
Э-э-э, нет! Вы ничего не подозревайте. Сказали, отвечайте. А то, получается, слились вы, батенька... Если я увижу что-то новое, то только поблагодарю вас. За что же тут ругать?
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 07:55
Вы сначала почитайте в даташЫте на мегу128 все по ключевому слову SBI. Ладно? А потом пишите сюда)).
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 08:04
Так что вы этим хотели сказать, что sbi, cbi не работает для этого регистра? Так нормальный компилер си будет использовать команды соответствующие этому адресному пространству. И? Так что вы хотели сказать-то, уважаемый?
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 08:23
Она очень даже работает)) Так хорошо работает эта SBI, что может сбросить уже стоЯщие там чужие флаги. Простой пример Налюбовавшись Вашим обращением к TIFR, пользователь так же будет применять операцию |= где-нибудь в критической секции. И тем самым сбросит появившийся только что флаг таймера 0 от вашего шедулера. Вы этого хотите? Уверен что нет.
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 08:27
Вот это уже речь не мальчика но мужа... :) Так и пишите, как сейчас написали.
А то любит, не любит. Мы что тут, на ромашке гадаем?
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 08:45
Рад что Вы наконец поняли. А дело свое надо именно ЛЮБИТЬ. Тогда и предмет работы будет казаться живым. Удачи!
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 08:53
Как бы вы не одушевляли МК, камнем он и остается. И нужно знать, как заставить этот камень правильно шевелиться. Согласен, я не сразу вкупился в чем дело. Бегло глянул, вроде отличия только в скобках. Ну и успокоился. А то что вы рассказали, я и так знал.
Ну и удивился формулировке "не любит". И наличие команд sbi cbi. Делать новый проект, чтобы убедиться, какие команды будут подставлены мне лениво. Все равно я для этих регистров делаю прямую запись. Нули-то все равно бесполезно пихать, не так ли? В крайнем случаю лишний раз гляну в даташит, чтобы уточнить как запустить периферию.
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 08:06
Почитали? А теперь я готов ответить на Ваши вопросы, если они остались.
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 08:11
1 - Что вы нашли противозаконног о? Отсутствие скобок в предыдущей статье? Где команды sbi, cbi у автора?
2 - Сама ваша формулировка "МК не любит, видите ли |=" А с чего вы взяли, что будут обязательно команды sbi, cbi ?!
Ответить | Ответить с цитатой | Цитировать
# demiurg 15.06.2014 08:14
Тьфу, блин, кажись сообразил. Вы имели в виду, чтение модификация запись? Это что ли? Так сразу бы и сказали.
А то МК не любит... Не "не любит"!!! Это формулировка начинающего любителя, который не знает чего ждать от МК и программы...
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 08:37
Я пейсал что TIFR не любит... Да, новые МК от этого эффекта защищены.
Ответить | Ответить с цитатой | Цитировать
# Peter 15.06.2014 08:32
Да что с Вами? Операция |= по установке одного бита регистра в допустимом адресном пространстве пояти наверняка заставит компилятор поставить инструкцию SBI
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 14:09
Скобки я ставлю только для того, чтобы стоящие рядом команды установки и снятия (тут то скобки обязательны) бита были красиво выровнены. Люблю аккуратно оформленный код)
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 14:21
По большому счету, диспетчер и есть флаговый автомат, просто более структурированн ый
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 14:22
Не туда отправил, ну да ладно
Ответить | Ответить с цитатой | Цитировать
# Peter 16.06.2014 07:03
Ну что ж, с очисткой флагов регистра TIFR разобрались. Теперь, перед анализом багов собственно планировщика, надо научиться правильно запускать таймер. Пользователь, поверив "продвинутому разработчику планировщика", возьмет за основу этот метод, и так и будет запускать свои таймеры в своих задачах. И может огрести кучу траблов. Для исключения этого я просто перечислю шаги запуска таймера - на примере AVR, но, наверно, и независимо от МК.
1. Остановить таймер.
2. Задать в регистрах режим работы таймера (для AVR это TCCRA, TCCRC, если они есть. А если нет - то пропустить этот шаг). Причем делать это явным присваиванием (а не пресловутой операцией |= ). Регистр, где запускается таймер - не трогать.
3. Инициализовать счетный регистр TCNTn.
4. Инициализовать регистр(ы) сравнения OCCRn
5. В регистре TIFR cбросить флаги относящиеся к таймеру-пОциенту.
6. Разрешить нужные прерывания таймера, запрещая ненужные.
7. Запустить таймер, одновременно до-задавая режим его работы - для AVR это TCCRnB(если он есть) или TCCRn. Причем тоже операцией простого присваивания, а не |=.

После такой процедуры таймер не подведет.
Готов обсудить.
Ответить | Ответить с цитатой | Цитировать
# demiurg 16.06.2014 07:58
Трабла есть, если используется системный тик. Скажем, 1 мс. У меня сейчас сделано так:
Массив из нужного кол-ва таймеров. Структура массива: статусный байт, 16-битный счетчик. Прерывание настроено на 1 мс. В обработчике прерывания только перезапуск таймера, для точного отбивания по 1 мс. И установка флага. В основной программе вызывается Service_Timers. Зашли, проверили флаг, не установлен, вышли. Установлен, пробежались по массиву, если в статусном байте установлен флаг TMR_UNLOCK_FLG, декремент 16-битного счетчика. Обработка следующего таймера. Если флаг не установлен, обработка следующего таймера. Время вышло (0), установка флага TIME_OUT_FLG.
Ответить | Ответить с цитатой | Цитировать
# demiurg 16.06.2014 07:59
Этой таймерной службы мне хватает практически для всех проектов. Точность - +- 1-10 мкс.

Но есть но: представим ситуацию. Нам нужно запустить задачу на 10 мс. И установка таймера задача произошла перед прерыванием. В итоге получится не 10 мс, а 9 с небольшим. Но так как я эти таймеры использую в задачах, где 10, даже 100 мкс погоды не играют. Абсолютно. Ну будет разброс в мкс обработки матричной клавиатуры, или обновление символьного ЖКИ. Ну и хрен на него, на это расброс.

Зато я получил простую в использовании таймерную службу. Максимальное время 65535 мс. Если мне требуются большие отрезки времени, в модулях использую дополнительные счетчики. Скажем, счет каждые 100 мс.

Дальше планирую допилить, чтобы был флаг инкремент-декре мент. И пауза таймеров. Например, это потребуется в следующих ситуациях. Есть оборудование с режимом "Пауза". Вот в этих случаях и требуется наличие паузы в таймерах.
Ответить | Ответить с цитатой | Цитировать
# demiurg 16.06.2014 08:00
http://pastebin.com/4Vz96ASs
Ответить | Ответить с цитатой | Цитировать
# Peter 17.06.2014 06:42
Вот мы дошли и до анализа потенциальной уязвимости "улучшенного планировщика". Кто мне объяснит, что будет, если вызываемая в фоновом режиме функция DispatchTask() прервётся от таймера во время доступа к двухбайтовой переменной TaskArray.delay?
Да, я о проблеме атомарности, если че))
Ответить | Ответить с цитатой | Цитировать
# demiurg 17.06.2014 07:28
В таких планировщиках не только проблема атомарности. Взять, к примеру диспетчер DI HALT-а. В его диспетчере, в начальной версии, на асме (в сишной я еще не копался, да и нет желания) два момента. 1. Таймерная служба работает в прерывании. 2. Дамоклов меч. Представим ситуацию, мы на таком диспетчере написали программу для станка. В очереди таймеров болтается задача на исполнение. И тут бац, аварийная ситуация. Ну ладно, встали в соответствующий режим, а из прерывания таймерная служба выстрелила задачу на исполнение. Потому и назвал дамоклов меч. И вот как теперь шерстить очередь на предмет удаления задач? Если мы даже не знаем, что можно удалять, а что нельзя. Мало ли какие моменты, пусть и аварийная ситуация.
На данный момент мой опыт: пока всякие диспетчеры мне ни разу не понадобились.
void main (void)
{
func_1 ();
func_2 ();
func_3 ();
}
Все! Главные принципы: модули, автоматное программировани е. Каждая задача разбивается так, чтобы не было долгих циклов. К примеру, системный тик 1 мс. И каждый пробег main должен с запасом уложиться в 1 мс.
Ну как-то так...
Ответить | Ответить с цитатой | Цитировать
# САБ 17.06.2014 11:17
Цитирую demiurg:
На данный момент мой опыт: пока всякие диспетчеры мне ни разу не понадобились.
На данный момент мне ни разу не понадобились: FPGA, многослойные платы, долбежный станок, картофелеубороч ный комбайн, женские прокладки и много чего еще. Предлагаете доказывать всем их ненужность?
Ответить | Ответить с цитатой | Цитировать
# demiurg 17.06.2014 11:28
Нет. Всему свое применение. Только прежде чем лепить что-то свое, нужно прогнать как следует. Выявить недостатки.
И не диспетчеры нужно лепить, а научиться взаимодействию модулей.
Потому что эти материалы читают начинающие. Которые вроде как нашли решение, как же, ляпаешь как попало задачи, и они блин работают. А если таким начинающим придет в голову применить эти диспетчеры и потом вляпываются по самое не балуй...
Ответить | Ответить с цитатой | Цитировать
# Kodex 17.06.2014 14:12
Я вот сегодня доделал для себя версию этого "старого планировщика". Добавил два уровня приоритетов. Массив задачь такой же как здесь. Задачи готовые для выполнения суются в один из двух массивов, в зависимости от приоритета. После нек. количества запуска высокоприоритет ных задачь обязятельно запускается одна низкоприоритетн ая. Одно не пойму. Нахрена мне все это...
Ответить | Ответить с цитатой | Цитировать
# JoJo 17.06.2014 14:19
Спортивный интерес .. только и всего
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:21
Нда, не ожидал такой дискуссии) Постараюсь ответить на все вопросы:
1) по поводу |=. Установка флага в регистре TIFR у меня происходит именно так, архив чуть устаревший отправил Паше. Уже попросил его поправить статью. Я не силен в ассемблере, но команда TIFR |= (1
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:23
плин...
1) по поводу |=. Установка флага в регистре TIFR у меня происходит именно так, архив чуть устаревший отправил Паше. Уже попросил его поправить статью. Я не силен в ассемблере, но команда TIFR |= (1 shl TOV0); транслируется в 3 асмкоманды: IN, ORI, OUT. Ни разу у меня не было конфликтов, связанных с установкой флага с помощью |=. Возможно потому, что в инициализациях я не разрешаю глобальные прерывания. Делаю это уже перед основным циклом.
Ответить | Ответить с цитатой | Цитировать
# _Артём_ 18.06.2014 13:57
Цитирую Владимир:
транслируется в 3 асмкоманды: IN, ORI, OUT.

Транслируется правильно, но сам алгоритм неправильный.

Цитирую Владимир:
Возможно потому, что в инициализациях я не разрешаю глобальные прерывания. Делаю это уже перед основным циклом.

Видимо для ваших программ это не было важно.
Проблема может возникнуть в старых мегах - регистр TIFR зашарен между некоторыми таймерами. Поэтому в результате операции |= могут быть сброшены все флаги, а не один. В результате можно потерять прерывания или не отреагировать на нужный флаг.
И для сброса бита в TIFR достаточно записать в нужную позицию 1 - на асме это две команды:
Код:
ldi reg, 1<<BIT_POS
out TIFR, reg
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 14:29
Я использовал только меги8, 16, 32. Проблем не было. Как тогда правильно будет установить этот бит на С? Или только вставки делать?
Ответить | Ответить с цитатой | Цитировать
# JoJo 18.06.2014 14:41
Вот так
Код:TIFR = (1<<TOV0);
Без ИЛИ.
Ответить | Ответить с цитатой | Цитировать
# _Артём_ 18.06.2014 14:52
Цитирую Владимир:
Я использовал только меги8, 16, 32. Проблем не было.

Вот на них как раз проблемы и могут быть - на более новых мегах обычно на каждый таймер выделяется свой TIFRx.

Цитирую Владимир:
Как тогда правильно будет установить этот бит на С? Или только вставки делать?

Код:
TIFR=1<<TOV0;
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 15:02
Ну так в статье тогда все правильно, и в архиве тоже! Свою рабочую версию я исправил. Но все равно, учту на будущее. Спасибо!
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:23
2) Применение подобных планировщиков никогда не позволит соблюсти абсолютную временную точность выполнения задач. Погрешность может составлять до одного системного тика. И в этом нет ничего страшного, по крайней мере в большинстве приложений.
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:24
3) Атомарный доступ к переменной delay тут не обязателен. Уже говорилось в статье про исходный планировщик, что все готовые к запуску задачи (я называю это сценарий) должны уложиться в системный тик. Это довольно важный момент, который надо учитывать, если задачи требуют больших вычислительных мощностей.
Ответить | Ответить с цитатой | Цитировать
# Peter 18.06.2014 15:55
Гм.... ну уложились все задачив один тик. И... что, будут стоять на месте и ждать прерывания? Нет, DispatchTask() так и будет вызываться в фоновой программе(см. пример работы старого планировщика) . И таким образом опасность прерывания внутри чтения/записи двухбайтового delay сохраняется. Надо делать критическую секцию.
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 17:05
Да, будут стоять и ждать. К моменту, когда ожидается прерывание, все задачи с установленным флагом Run должны выполниться. В цикле только прочесывается очередь и проверяется этот флаг, который у всех (!) задач должен быть равен 0. Прерывание никак не может прервать обращение к переменной delay.
Ответить | Ответить с цитатой | Цитировать
# Peter 19.06.2014 07:56
Тогда зачем критические секции в SetTask() и DeleteTask(), если прерывание не пересекается с работой ни одной из задач?
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.06.2014 13:06
Вы правы, незачем. Это следы моих экспериментов с минимальным временем системного тика. Можно убрать. Но еще раз подчеркну, очень важно, чтобы все активные задачи успевали выполняться за один тик!
Ответить | Ответить с цитатой | Цитировать
# Peter 21.06.2014 05:33
Но тогда зачем вообще здесь прерырвания? Будет проще после прлхода всех задач опрашивать флаг таймера - тем более точность тайминга при этом не ухудшится по сравнению с данной реализацией. Зато будет короче, понятнее и безо всяких флагов состояния задач.
Ответить | Ответить с цитатой | Цитировать
# Владимир 21.06.2014 06:18
Совершенствоват ь можно до бесконечности, главное вовремя остановиться. Меня устроила текущая реализация, поэтому я и остановился на ней.
Согласен с тем, о чем Вы говорите. Про опрос флага таймера в основном цикле я не думал. Возможно кто-нибудь захочет доработать этот диспетчер, добавить функциональност и. Например было бы неплохо добавить удаление задачи из списка через заданное время. Возможно сам доработаю, но уже не для avr, а для stm. Следующий проект будет на нем и планирую переводить туда этот диспетчер.
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:24
4) Применение диспетчеров не панацея от всего. И везде их совать ни к чему. Я это прекрасно понимаю. Но, уже в сотый раз, да ладно, приведу пример моей горемычной паяльной станции. Там применен этот планировщик. И мне бы очень хотелось бы сравнить код, выполняющий те же функции, что у меня реализованы, только без диспетчера, так же легко читаемый, структурированн ый, логичный. Удобство сопровождения я теперь ценю гораздо выше, чем года 3-4 назад. Станция уже почти готова, скоро выложу.
Ответить | Ответить с цитатой | Цитировать
# demiurg 18.06.2014 13:30
Не сочтите, что я вообще против диспетчера. Приведу пример. Не так давно я делал один проект. Блок управления, термоформовочны й станок. Типа СТА-150. Это: несколько датчиков, пульт управления (пульт оператора), символьный VFD, матричная клавиатура 4х4, выходы. В итоге получилось 3 порта дискретных входов, 1 порт клавиатура, 1 порт VFD, 2 порта выходы. Я взвесил и принял решение применить сдвиговые регистры для расширения ввода-вывода. 74HC165 и 74HC595. То есть, используется SPI. МК в DIP40 корпусе. Если что, вытащил из панельки, заменил.
Так вот никакого диспетчера у меня в помине нет. Main и список вызываемых функций. Все. А вы диспетчер в паяльную тсанцию засунули. Что у вас там? Кнопки, дисплей, неважно какой. Термодатчик, нагреватель паяльника. Ну управление питанием еще. Спрашивается, зачем в паяльной станции диспетчер? Лучше автоматным программировани ем бы занялись. И диспетчеры тогда вам еще не скоро понадобятся...
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 13:57
Паяльник, фен, корпус с 5-ю кнопками, два 3-символьных 7-сегментника, несколько светодиодов. Дело не в том, сколько чего вешается на порты, а в том, как разрулить все необходимые режимы работы системы. Причем так, чтобы было удобно сопровождать. Я ни в коем случае не заставляю всех использовать диспетчеры! Можно реализовать это на них, можно на автоматах или полноценных ОСРВ. Дело вкуса. Но я сделал так, мне понравилось, и решил поделиться.
Еще могу добавить по автоматному программировани ю. 2 года назад я делал контроллер управления гальванической линией металлизации печатных плат, а это: 5 ванн с терморегулирова нием и контролем уровня, 3 струйных промывки, включение источников тока и барботажа, система перемещения заготовки (2 шаговых дигателя с концевиками), дисплей. Делал на автоматах. Сейчас я даже не хочу в тот код залазить. Так вот, к чему я это? А к тому, что для каждой задачи надо выбирать оптимальное решение!
Ответить | Ответить с цитатой | Цитировать
# demiurg 18.06.2014 15:46
А писать надо нормально, чтобы можно было и потом в код заглядывать....

pastebin.com/Qdhdh370
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 17:07
Это приходит с опытом.
Ответить | Ответить с цитатой | Цитировать
# demiurg 18.06.2014 17:46
Вот именно. Я споткнулся на диспетчере DI HALT-а. Понимаете на тот момент у меня была проблема, взаимодействие модулей. Казалось бы, вот оно решение. Но облегчения не наступило. Но стало все наоборот. Вдобавок, я вовремя поймал засаду с дамокловым мечом. Примерно в то время на одном форуме мне указали на автоматное программировани е. Да и на асме я тогда застрял. Все слазить с него не хотел.
Когда у меня началось получаться с си, тогда я начал понимать, что мне говорили спецы на форуме.
Поэтому я и говорю, не стоит тратить время на диспетчеры, если еще не научился модульному программировани ю, автоматному программировани ю. И тогда тебе, возможно вообще не потребуются диспетчеры. RTOS - это уже иная тема...
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.06.2014 13:20
Мне тот диспетчер тоже не понравился, но по другим причинам. Там не получится так прозрачно запустить такую простую задачу, как однократное включение нагрузки, скажем, на 1 минуту (примеры 2 и 3 в статье). Ну и куча лишних переборов очередей мне не нравится.
По поводу автоматов, когда задач становится слишком много, сложно понять структуру программы. Я ничуть не умаляю достоинств такой организации, тем более диспетчер по своей сути автоматом и является. Точнее его более структурированн ым вариантом.
Цитирую demiurg:
не стоит тратить время на диспетчеры, если еще не научился модульному программированию, автоматному программированию

Вот с этим абсолютно согласен.
Ответить | Ответить с цитатой | Цитировать
# Владимир 18.06.2014 12:25
5) Создавать нужно то, что тебе нужно. А не делать что-то, а потом думать, а зачем?! Я лично писал диспетчер для конкретной задачи, формируя только то, что нужно мне. Результат мне понравился. Настолько, что решил опубликовать. Этот планировщик был первой моей публикацией в жизни.
6) По поводу тестирования. Я очень долго прогонял его и в симуляторе, и в железе. И он претерпел немало доработок. Но если кому-то захочется целенаправленно его потестировать на баги - я только за!)
Ответить | Ответить с цитатой | Цитировать
# Peter 18.06.2014 16:04
Насчет атоиарности доступа к "длинным" переменным, исрользуемым в прерывании - необходимо выполнять простые правила:
а) если переменная лишь читается в прерывании, то достаточно в фоновой функции обеспечить атомарность при ее изменении.
б) если переменная изменяется в прерывании - то в фоновой функции нужно обеспечивать атомарность и при ее чтении и при ее изменении
Ответить | Ответить с цитатой | Цитировать
# Kodex 19.06.2014 07:10
Владимир, можешь рассказать/пока зать что конкретно менял в коде при отладке?
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.06.2014 13:55
Всего так сразу и не вспомнишь...
Из значительного: функция DeleteTask сначала сдвигала очередь после удаляемой задачи на одну позицию. Потом один человек подсказал идею с перестановкой только последней задачи. На тот момент функция Dispatch выглядела так:
Код:
void RTOS_DispatchTask()
{
u08 i;
for (i=0; i<arrayTail; i++)
{
if (TaskArray.run == 1)
{
(TaskArray.pFunc)();
if(TaskArray.period == 0)
{
RTOS_DeleteTask(TaskArray.pFunc);
}
else
{
TaskArray.run = 0;
if(!TaskArray.delay)
{
TaskArray.delay = TaskArray.period-1;
}
}
}
}
}

Довольно быстро проявился глюк, когда задача удаляет саму себя, установка delay происходила для другой задачи, которая вставала на место удаляемой. Поэтому функция Dispatch обрела такой вид, как в статье.
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.06.2014 14:00
блин, форматирование не получается, все смещается на начало строки
Ответить | Ответить с цитатой | Цитировать
# demiurg 19.06.2014 13:33
В строках RTOS_Set_Task и тд RTOS_ я бы убрал. В данном случае у нас простенький диспетчер. Set_Task Del_Task будет вполне достаточно и верно.
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.06.2014 14:10
Дело вкуса. Просто у меня так сложилось, что если модуль представляет собой самостоятельную структуру, я добавляю префикс. Только для того, чтобы видеть, из какого именно модуля вызывается функция: RTOS_, WH1602_, WG12864_, UART_ и т.д. Согласен, бросается в глаза. Но когда подключено много модулей, как-то понятнее выглядит программа.
Ответить | Ответить с цитатой | Цитировать
# demiurg 21.06.2014 06:30
Цитирую Peter:
Но тогда зачем вообще здесь прерырвания? Будет проще после прлхода всех задач опрашивать флаг таймера - тем более точность тайминга при этом не ухудшится по сравнению с данной реализацией.

Плюсую. Диспетчер DI HALT-а сразу же так и переделал. У него в прерывании было, я вынес в основной цикл. В прерывании взводится флаг. В основном цикле проверяется флаг, если установлен, сброс флага, прочесывание очереди. Точность в единицы, десятки мкс не критична.
Я решил все-таки собрать диспетчер. Позже выложу результат.
Ответить | Ответить с цитатой | Цитировать
# Peter 21.06.2014 09:10
Да. А для точности тайминга и упрощения диспетчера лучше настроить таймер в режим СТС. Более того,раз это не прерывание, то там же в шедулере и сбрасывать вачдог.
Ответить | Ответить с цитатой | Цитировать
# demiurg 21.06.2014 10:12
Нахер. На AVR никогда больше не вернусь к диспетчеру. Диспетчеры и RTOS хороши в системах, где код загружается с какого-либо носителя. На AVR код программы во флеш. И хоть через диспетчер, хоть в main крути функции, обвешав флагами или автоматом, суть не меняется. Только через диспетчер функции дольше переключаются.
Если использовать диспетчер, то нужно четко определить, что считать задачей? Почему-то в диспетчерах задачей считают моргалку светодиодом. Воткнули моргалку, она исправно моргает, вау! Диспетчер, задача, епт! Хорошо, а если много светодиодов? И разные световые эффекты. Как тогда быть? На автоматах легко это делается. Через диспетчер замаешься разруливать.
Вот если вытеснение, тогда уже другое дело. Простенький переключатель задач уже имеет право на существование. Но опять же, нужно четкое определение, что такое задача. Это не какая-то функция, которая запускается через определенное время.
Задача диспетчеров - распараллеливан ие задач.
Но опять же, если следовать некоторым правилам, то выясняется, что диспетчер опять не требуется.
Правила простые. Модульность. Большие функции разбиваются. Никаких долгих циклов в функциях. Зашли, выполнили код, вышли. Проверили условие, вышли. Все это делается на флагах, автоматах, какие-либо условия.
Ответить | Ответить с цитатой | Цитировать
# Владимир 21.06.2014 17:38
Задача диспетчеров (планировщиков) - как раз таки запуск функции через заданное время. А распараллеливан ие задач - прерогатива ОСРВ. Не надо валить все в одну кучу. Для разных задач оптимальная организация программы определяется индивидуально. Тем более, кто Вам мешает в одну из задач диспетчера включить конечный автомат, реализующий эти самые световые эффекты. А потом задать период запуска этой задачи. Конечно, если вся программа состоит только из смены эффектов, то тогда да, смысла использования диспетчера нет. Но бывают ведь случаи и посложнее.
И при чем тут avr? Какая разница какая архитектура контроллера? Дело ведь не в ней, а в структурном представлении программы. Причем модульности последней никто не отменял!
На форумах иногда попадались личности, нежелающие использовать диспетчеры на avr, основываясь только на малом объеме памяти и быстродействии. Зато переходя на эти же stm первым делом изучали например freeRTOS. Только потому, что "так все делают". Появилась какая-то тенценция применения ОСРВ на ARM'ах, особенно, если присутствует мало-мальский графический интерфейс. На мой взгляд, совершенно необоснованная. Возможности диспетчеров позволяют в большинстве случаев обойтись без ОСРВ, а разница в быстродействии с автоматами измеряется микросекундами, не думаю, что сильно критично. Более того, могут быть ситуации, когда диспетчер окажется быстрее. Зависит от количества задач и частоты их запуска.
Ответить | Ответить с цитатой | Цитировать
# demiurg 21.06.2014 18:04
Диспетчер не может быть быстрее по определению. В обычном цикле нет переключения. На данный момент я не вижу для себя смысла в диспетчере. Если мне требуется что-то запустить с какой-либо периодичностью, достаточно флагов или конечного автомата. Если мне потребуется запустить моргалку светодиодом, мне не нужно превращать это в отдельную задачу. На автоматах можно запустить что угодно как угодно, в диспетчере же замаешься разруливать.
Вы недавно правильно сказали, дело в опыте.
Я мучался с диспетчером, пока меня не ткнули в автоматное программировани е. Поверьте, как только я увидел преимущество КА, сразу же выкинул диспетчер.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 05:56
Это бесконечный спор.
Цитирую demiurg:

Я мучался с диспетчером, пока меня не ткнули в автоматное программирование

Что не устраивало Вас в том диспетчере? Когда я сформировал свои требования и реализовал их, использование диспетчера приносит только удовольствие, никаких мучений!

Цитирую demiurg:
На автоматах можно запустить что угодно как угодно, в диспетчере же замаешься разруливать.

Вобще не согласен, на своем диспетчере я делал подсветку для коньков с более чем 10-ю эффектами, в большинстве из них используются переливы. При этом есть ИК-синхронизаци я между ними + пара кнопок. Очень прозрачно все написано, даже после длительного перерыва можно быстро во всем разобраться. Я не спорю, можно сделать и на автоматах. В этом случае будет даже эффективней в плане производительно сти. Но прога и так простаивает большую часть времени. А удобство восприятия программы на диспетчере с функциями SetTask(func, delay, period) мне нравится гораздо больше, чем просто список функций, непонятно как и когда вызываемых. ИМХО.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 05:58
Цитирую Владимир:
При этом есть ИК-синхронизация между ними

Между коньками естесственно
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 06:02
Вы наверно видели реализацию, описанную в статье. Там же я принавал, что это криво и что исправленный вариант (не привязанный к диспетчеру, можно и с автоматами использовать) в комментариях.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 06:03
ну что за... Про реализацию - это мой ответ на пост ниже
Ответить | Ответить с цитатой | Цитировать
# demiurg 21.06.2014 18:08
Кстати, я увидел вашу реализацию с короткими и длинными нажатиями. Вы диспетчер натягиваете, как ту сову, там где надо и не надо... Дайте ваш прямой контакт. Я отправлю вам пример, как можно спокойненько сделать на КА. И удержание (длинное нажатие по вашему), и автоповтор, и много чего еще можно сделать. И нафиг диспетчер не нужен.
Ответить | Ответить с цитатой | Цитировать
# demiurg 21.06.2014 18:19
И кстати, автор, посмотрите в сторону micro menu. В инете найдете. Только за основу возьмите оригинал, а не как там товарищ сделал. И вы тем более поймете, что диспетчер во многих случаях не нужен.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 06:07
Микроменю я использовал в контроллере управления гальваникой, у меня там было ЕМНИП 168 пунктов меню - параметры системы для 3-х технологических процессов. Диспетчера тогда еще не было.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 07:01
Цитирую demiurg:
И вы тем более поймете, что диспетчер во многих случаях не нужен.

Так я с этим и не спорил. Даже наоборот, говорил что для каждой задачи организация программы выбирается индивидуально! Я не имею ничего против автоматов!
Ответить | Ответить с цитатой | Цитировать
# demiurg 22.06.2014 08:47
Вот вам ссылка is.ifmo.ru/works/ Цикл статей Татарчевского. Для поиска. Татарчевский В. Применение SWITCH-технолог ии при разработке прикладного программного обеспечения для микроконтроллер ов. Часть 1
Ну и там много еще чего интересного.
К примеру у Татарчевского рассказано, как можно реализовать опрос клавиатуры.
Вкратце: перед вызовом автомата сканируются кнопки. В зависимости от того, какая клавиатура, пишется соответствующая функция. Матричная клавиатура, на одном порту, на нескольких портах. Дальше работает конечный автомат. Главная идея: сколько бы кнопок не было, они обрабатываются, как одна. И вам не нужно извращаться с диспетчером. Лично у меня опрос клавиатуры идет в модуле вывода информации на дисплей. Ну а если уж так приспичило использовать диспетчер, смотрите по программе, как вам запускать. Или как самостоятельную задачу, или в составе модуля.
pastebin.com/URMd767u
Идем дальше. Как дальше использовать. Отсканировали, распознали кнопки. В буфере у нас код кнопки.
У меня это сделано так:
В конечном автомате:
Код:
void Tui_Service_Main_Init (void)
{
set_menu (L_OUT_MODE);
}

void Tui_Service_Main_Out_Mode (void) { if (proc_menu_keys ()) return; // Если была обработка кнопок - выход.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 12:56
На контроллере гальваники я примерно так и делал, только железно, почти без дефайнов. Опыта маловато было. Была матрица 3х4.
Код:
key_code = 0;
SetPortKeys = 0x08;
PortKeys = 0x77;

if ((PinPortKeys&0x01)==0x00) key_code=HEAT_key;
if ((PinPortKeys&0x02)==0x00) key_code=PREV_key;
if ((PinPortKeys&0x04)==0x00) key_code=START_key;

SetPortKeys = 0x10;
PortKeys = 0x6F;

if ((PinPortKeys&0x01)==0x00) key_code=ESC_key;
if ((PinPortKeys&0x02)==0x00) key_code=SET_key;
if ((PinPortKeys&0x04)==0x00) key_code=ENTER_key;

SetPortKeys = 0x20;
PortKeys = 0x5F;

if ((PinPortKeys&0x01)==0x00) key_code=PAUSE_key;
if ((PinPortKeys&0x02)==0x00) key_code=NEXT_key;
if ((PinPortKeys&0x04)==0x00) key_code=STOP_key;

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, &soldDownPressed, SOLD_TempDown, SOLD_Off);
TestButton (BUT_SOLD_UP, &soldUpPressed, SOLD_TempUp, SOLD_SaveTemp);
}

Согласитесь, приведенный фрагмент (если его выровнять, получится таблица) раскрывает весь функционал программы. К этому я и стремился.
Ответить | Ответить с цитатой | Цитировать
# Владимир 22.06.2014 13:12
Да, и какой это у меня изврат с опросом кнопок? Вызов его (опроса) каждые 10 мс осуществляется одной строчкой:
Код:
RTOS_SetTask(BUT_Scan, 0, 10);

Остальное разрулит фрагмент, приведенный выше. А он к диспетчеру можно сказать не имеет отношения.
Ответить | Ответить с цитатой | Цитировать
# Casper 30.06.2014 09:56
День добрый. А под ардуино такой планировщик сложно будет переписать? Его очень не хватает мне для проекта)) Постепенно ухожу конечно я с ардуино, но самый большой проект всетаки на нем остался...
Ответить | Ответить с цитатой | Цитировать
# Владимир 30.06.2014 13:44
Никогда не интересовался ардуиной, даже не знаю, какой там контроллер используется. Переделать несложно: поправить инициализацию аппаратного таймера в функции RTOS_Init, не забыть обновить счетчик в прерывании таймера (у меня это ISR(RTOS_ISR)). Разрешить глобальные прерывания. Все.
Ответить | Ответить с цитатой | Цитировать
# Casper 30.06.2014 17:30
Там проц atmega328 используется, но он сишный язык как я понял не понимает, надо под с++ переписывать..
Ответить | Ответить с цитатой | Цитировать
# _Артём_ 01.07.2014 08:37
Цитирую Casper:
Там проц atmega328 используется, но он сишный язык как я понял не понимает, надо под с++ переписывать..

Как так? Что там переписывать нужно?
Если плюсы понимает, то си наверняка поймёт.
Ответить | Ответить с цитатой | Цитировать
# Владимир 01.07.2014 13:37
скорей всего компилятор ругается на функции авр студии. уберите из функций диспетчера DISABLE_INTERRU PT и RESTORE_INTERRU PT (они не обязательны). Затем уберите инклуды из файла commons.h. Там же удалите ENABLE_, DISABLE_ и RESTORE_INTERRU PT. После этого оформите программу по правилам вашей среды разработки.
Ответить | Ответить с цитатой | Цитировать
# Владимир 01.07.2014 13:39
Еще возможно потребуется изменить в главном файле .с строку
Код:
#include <rtos.h>

на
Код:
#include "rtos.h"
Ответить | Ответить с цитатой | Цитировать
# Casper 01.07.2014 16:34
Жалуется на это
Код:rtos.c: In function 'RTOS_Init':
rtos.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)
Ответить | Ответить с цитатой | Цитировать
# _Артём_ 02.07.2014 14:22
Цитирую Casper:
Жалуется на это
Код:rtos.c: In function 'RTOS_Init':
rtos.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)

В mega328 нет таких регистров, вот и выдаёт ошибку. Там TIMSK соответствует TIMSK0, TIFR - TIFR0 и так далее.
Ответить | Ответить с цитатой | Цитировать
# Vlad 21.07.2014 06:57
Успешно прикрутил к STM8L.
Кому интересно -- пишите.
Ответить | Ответить с цитатой | Цитировать
# megannnn98 01.08.2014 09:44
Спасибо огромное за планировщика. :D реально нужная штука
Ответить | Ответить с цитатой | Цитировать
# megannnn98 08.08.2014 12:26
Единственное, что мне не хватило функции очистки очереди

void RTOS_Reset()
{
arrayTail = 0; // "хвост" в 0
}
Ответить | Ответить с цитатой | Цитировать
# Владимир 16.08.2014 09:03
Пожалуйста! А в каких случаях используете эту функцию?
Ответить | Ответить с цитатой | Цитировать
# demiurg 02.09.2014 10:47
Владимир. Что вы скажете насчет такого варианта? ссылка
Ответить | Ответить с цитатой | Цитировать
# Владимир 02.09.2014 12:33
Ответил в сообществе
Ответить | Ответить с цитатой | Цитировать
# Chugun 17.09.2014 20:35
Можно ли передавать параметры в задачу при добавлении её в очередь, как при работе с функциями ???
Ответить | Ответить с цитатой | Цитировать
# Владимир 19.09.2014 11:15
Нет, нельзя. Как вариант - использовать глобальные переменные.
Ответить | Ответить с цитатой | Цитировать
# Анатолий 05.01.2016 00:28
Спасибо за планировщик. Все работает четко.
Запустил на LED матрице 8х8. Параметр ПЕРИОД очень пригодился, позволил визуально проверить последовательно сть зажигания светодиодов и работу кода.
Маленькая поправка. В коде заголовочные файлы в угловых скобках (а не кавычках), поэтому компилятор ругается. Или это только у меня?!.
И еще было бы не плохо написать процедуру запуска с одной тестовой задачей (TskTest). Легче сразу разобраться.
Ответить | Ответить с цитатой | Цитировать
# Владимир 09.01.2016 08:12
Пожалуйста.
В свойствах проекта надо прописать корневой каталог проекта, тогда угловые скобки будут работать. Ну или переделать на кавычки.
Как пример можно посмотреть код моей станции. Там много файлов, но для начала надо смотреть ssf.c и buttons.c
Ответить | Ответить с цитатой | Цитировать
# Анатолий 10.01.2016 13:40
Цитирую Владимир:
В свойствах проекта надо прописать корневой каталог проекта, тогда угловые скобки будут работать.


Спасибо буду знать
Ответить | Ответить с цитатой | Цитировать
# *Dim 23.07.2016 10:15
А нет ли полного проекта с этим планировщиком? Нужен пример "правильного" построения программы.
Ответить | Ответить с цитатой | Цитировать
# *Dim 23.07.2016 10:18
:-) Увидел ссыль на паяльную станцию, буду разбираться, спасибо.
Ответить | Ответить с цитатой | Цитировать
# Владимир_ 26.07.2016 09:46
Будут вопросы - спрашивайте. Я сюда периодически заглядываю.
Ответить | Ответить с цитатой | Цитировать
# arhiv6 01.10.2016 11:46
А зачем в функции void RTOS_DispatchTa sk() в строчке TaskArray.delay = TaskArray.perio d-1; отнимается единица?
Ответить | Ответить с цитатой | Цитировать
# Владимир_ 12.10.2016 04:34
Чтобы заданный период соответствовал действительност и. А иначе задачи будут выполняться через количество системных тиков period+1.
Ответить | Ответить с цитатой | Цитировать
# demiurg 01.10.2016 12:01
Мы с Владимиром уже обсуждали это творение. Остались при своих.
Этот планировщик и ему подобные не имеют никакого смысла. Потому что начинающие программисты считают, что подобные планировщики и диспетчеры якобы решают их проблемы. Но на самом деле приобретают лишний геморрой.
Решение главной проблемы (взаимодействие модулей и своевременное выполнение программного кода) следующее:
Исключение долгих циклов программных модулей, дробление выполнения модулями программного кода. Программные таймеры. Автоматное программировани е. Конечные автоматы.
Ответить | Ответить с цитатой | Цитировать
# ujin 03.10.2016 15:32
под разные задачи разные реализации...вы ше уже это говорили...поэт ому планировщику в этом мире есть свое место....с небольшой адаптацией вполне себе взлетел под CVAVrом
вполне нормально так работает...нагр евалки-мигалки аля подобное ак раз вполне это для него...
автору спасибо что делитесь своими знаниями ,и подробные объяснения по коду.
Ответить | Ответить с цитатой | Цитировать
# arhiv6 24.10.2016 04:14
Автор, я перенес планировщик на ARM и немного его доработал. Используются встроенные в ядро системный таймер SysTick и прерывание PendSV, что позволяет использовать планировщик на любом Cortex микроконтроллер е. Т.к. вся обработка сделана в прерываниях, в main вместо бесконечного вызова DispatchTask() можно оставить пустой цикл или заменить его на for(;;){idle()} ; - вызов какой-нибудь фоновой задачи, которую допускается в любой момент прервать остальными. Ещё добавил приоритеты задачам - если в один момент времени пришло время выполнить несколько задач одновременно - они выполняются в порядке, определённом их приоритетами. Собственно вопрос - у Вас в статье не указана лицензия проекта. Если я выложу код на github, достаточно того, что я укажу ссылку на эту статью и Вас в качестве автора изначального кода, на основе которого сделаны правки?
Ответить | Ответить с цитатой | Цитировать
# Владимир_ 24.10.2016 05:44
Более чем достаточно. Это 100%-ный OpenSource. Если не затруднит, оставьте здесь ссылку на гит. Интересно будет посмотреть.
Ответить | Ответить с цитатой | Цитировать
# arhiv6 24.10.2016 06:09
Вот, выложил: https://github.com/arhiv6/arm-task-sheduler
Ответить | Ответить с цитатой | Цитировать
# Владимир_ 25.10.2016 06:24
На практике уже пробовали его или просто ради удовольствия сделали?
Ответить | Ответить с цитатой | Цитировать
# arhiv6 25.10.2016 06:29
Ваш на практике пробовал в одном проекте. Свой - пока только пару тестов запускал. В ближайшее время буду небольшой проект делать - там попробую. Если какие-то правки/исправле ния вносить буду - внесу исправления в репозиторий и тут в комментариях напишу.
Ответить | Ответить с цитатой | Цитировать
# Антон_Ш 20.11.2016 05:05
Представляю вашему вниманию утилиту которая визуализирует выполнение задач данным планировщиком.

https://drive.google.com/file/d/0B6yun0FRTB-DalJhUmpFSF80Y28/view
Ответить | Ответить с цитатой | Цитировать
# Владимир_ 13.12.2016 04:15
С точки зрения программиста программа написана на высоком уровне. Она полностью самодостаточка. Приятно полазить, понажимать кнопки... Оценил график (делал нечто подобное), наверняка пришлось порядком повозиться.
С прикладной точки зрения все не так однозначно. Главная проблема - необходимость определять время выполнения каждой функции (знаю, в симуляторе AVR это легко). Для небольших проектов реально, но в ряде случаев это может стать проблемой.
В целом интересная утилитка. Мне понравилась.
Ответить | Ответить с цитатой | Цитировать
# mikhail 11.10.2017 16:02
Спасибо за интересную публикацию!
Читал с удовольствием как саму статью так и разгоревшуюся дискуссию в комментариях
Ответить | Ответить с цитатой | Цитировать
# Jonah 12.10.2017 12:02
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?
Ответить | Ответить с цитатой | Цитировать
# Magda 13.10.2017 21:18
I see you don't monetize your site, don't waste your traffic, you can earn additional bucks
every month because you've got hi quality content. If you
want to know how to make extra money, search
for: Mrdalekjd methods for $$$

Feel free to visit my site: FirstJermaine: https://11Woodrow.blogspot.co.uk
Ответить | Ответить с цитатой | Цитировать
# Rashad 15.10.2017 09:53
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/ -
Ответить | Ответить с цитатой | Цитировать
# Keisha 15.10.2017 15:00
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
Ответить | Ответить с цитатой | Цитировать
# Betsey 08.01.2018 02:45
Now, taking part in from the Mobile App might be more rewarding!
Moreover these bonuses, there's additionally a spread of other attention-grabb ing affords made by the casino.
Real Time Gaming software program used at Slots of Vegas Casino is a good benefit of the casino as a
result of all gaming software program products developed by Actual Time Gaming are in style
for their nice quality, quick and simple working. The casino gives not solely enjoyable gaming, but also secured gaming.
Gamers so not need to fret about protected of their sensitive info,
as a result of it's safely stored in a secured server.
As a way to ensure comprehensive safety and protection of the
casino, outdoors impartial specialists monitor
activities of the on line casino as well as monetary transactions regularly.


I constantly wanted to jot down on my web site something.
Be at liberty to visit my web-web site reverse telephone lookup totally free.
I'm assured they are going to be benefited from this website.

After interviewing them, you need to really feel you can trust
them to deal with your. Colleagues and others about
their experience using the actual lawyer you're contemplating View the web site of the legal professional or regulation agency you are contemplating for more info.
As a practicing Green Bay attorney of virtually 18 years, I've seen good and dangerous legal professionals.
James' lawsuit will not be the first time the firm has been accused of fraudulent billing practices.



By definitely one among India's largest enterprise groups
will bolster the credibility of the net poker business.
In keeping with Perry4Law , the unique techno authorized ICT regulation company
of India, to start with, any on-line poker website of India that.
Cell and on-line gaming commerce of India may be quick maturing and as.
Per varied enterprise experiences it's going to develop extra inside the coming years.
Thus, even in an India-Zimbabwe match, there is a sincere chance
that some Indian batsmen may get out for no-fault of. We neither
have an online playing regulation in India nor have we devoted on-line gaming legal guidelines in India.


Every workforce could even have educated poker participant as a mentor and captain to
develop crew technique and help younger gamers sharpen their expertise in the
middle of the play. We function in a completely legal territory and there is no
concern with avid gamers depositing cash into the web site wallet by the use of their bank accounts and redeeming their winnings once more into their monetary
establishment accounts, a spokesperson of acknowledged.
We believe that any on-line poker website of India that wishes to interact
in licensed enterprise must comply with Indian legal guidelines like Indian Penal
Code, 1860, Code of Felony Course of, 1973, Indian Information Experience Act, 2000, the Public Gambling Act, 1867,
Overseas Alternate Management Act (FEMA) 1999, and lots of others.



Secondly, even when on-line poker, on-line rummy, online
card video games, and lots of others are presumed to be video video
games of skills, nonetheless they are required to comply with techno
authorized necessities. My work this time spherical
becomes a contact simpler as the main poker web site on the planet
has opened shop in good ole Bharat. Aditya Agarwal is probably going one of the foremost successful players from India, with more than $200K in earnings, and completely different names are starting to become effectively often known as nicely,
like Sangeeth Mohan and Gautam Sabaharwal. Zynga's Texas
Keep'em app on Fb brings quite a few newcomers to the game,
enjoying on-line with their mates.

Along with payments, we seek for sites that present a terrific number of
deposit and withdraw selections to make banking easier.
The avid gamers then place the cards on their foreheads with one hand, so
all gamers except themselves can see what they're enjoying with.
He's a little bit of an area poker legend in his properly-heeled Mumbai circle—he
simply currently bought a couple of luxurious vehicles alongside together with his winnings.
Ranging from the app versions of Facebook to the standalone app, Poker grew to grow to be
an online-primaril y based sensation. The principle land based mostly tournament
operator - The World Poker Tour - is taking a deep curiosity in developments within the India poker business.


Let it's live, on-line or on line casino poker, you presumably can always profit from ,
regardless of the sort of sport you choose to play. They try
and give you the most safe and memorable experience whereas collaborating in on-line Multi-Player Games and
Tournaments. When compiling this listing, we've checked out every little factor from on-line Indian poker welcome bonuses, the selection of poker video games out there,
match guests, buyer help choices, trade-fundament al safety measures, and banking choices for online Indian poker gamers.
West Bengal Taking part in it is legal to play rummy with cash.
Offers you safe and secured fee options to make your deposits.
At, Rummy Millionaire we have now launched a
trouble free money withdrawal process, which means you'll be able to withdraw your
money to your bank account any time you like.
With hundreds of thousands of registered players, world-class gameplay and safe
on-line transactions, we've got evolved into
the most trusted rummy web site in India. We preserve the best stage of safety
for our players and our security algorithms scan game
tables 24x7 to be sure that that no fraudulent actions are happening in the web
sites.

Also visit my site ... Read Full Report: http://pfamaqa.sms.morris.com/make-money-playing-video-games-online-games-earn-cash
Ответить | Ответить с цитатой | Цитировать
# Dieter 08.01.2018 04:18
We are the diplomats of ambassador referral software: http://adiyaman.escortyy.com/author/janiecutlac/.
We're changing the marketing aspect by structure the referral marketing rostrum that powers the life’s biggest brands
and touches millions of consumers.
Ответить | Ответить с цитатой | Цитировать
# Aracelis 09.01.2018 07:55
A payday loan should not be your first choice.

Feel free to surf to my web blog: payday loans quick: http://www.youscribe.com/catalogue/documents/ressources-professionnelles/marketing-et-communication/what-can-i-buy-for-a-payday-loan-2915386
Ответить | Ответить с цитатой | Цитировать
# Bobbie 09.01.2018 12:29
In fɑct, a porn blocker саn be quite a nice and decent way to
tell yoս ѡhat yoսr kids increased tο. The result іs that m᧐st wіll atrtempt tο quit іt independently еxactly lіke most smokers which
never really ᴡorks. In otһer words, іf
your pporn addiction is caused Ьу ѕome sort of abuse уоu endured during tһe рast,
yoս still shouⅼd notice that yоu're tһе oone ѡho becɑme addicted, Ƅecause
at tһіs time, ᴡhatever happened prеviously, yоur are the ᧐ne askіng, hоw cɑn I
can stоp being enslaved by porn.

Heгe iss my һomepage; 2captcha: https://2captcha.com
Ответить | Ответить с цитатой | Цитировать
# Reinaldo 16.01.2018 02:13
payday loans no credit
payday loans no credit check: http://paydayhjkfg.com/
payday loans online no credit check
payday loans no credit: http://paydayhjkfg.com/
payday loans no credit check
Ответить | Ответить с цитатой | Цитировать
# Carrie 16.01.2018 05:59
As part of the first time registration, a participant robotically
gets 5000 enjoyable cash chips credited to his account.

FreeKaaMaal is the place to find amazing Deals, Gives and freebies curated by our
community of customers. is a web-based Playing web site the place you can play rummy online and win lots on real cash Now they are giving Rs.
500 to play straight with out investing any cash , so just register and beginning
playing You too can get Additional Rs. one thousand by Referring your Buddy.
Disclaimer: is neighborhood platform where our users discover and submit offers
from numerous website across the world, we do not assure, approve or endorse
the data or merchandise accessible at these sites, nor
does a link indicate any association with or endorsement by the linked website to Readers are requested to be cautious while shopping
at newly launched and non-trusted e-commerce websites.


And KhelPlay Rummy is proud to be leading from the entrance with its innovative on-line model of thirteen cards Indian Rummy which you can play with on-line rummy
players throughout India who are equally passionate about the recreation. The market is currently inundated with plenty of online rummy sites however what makes
KhelPlay Rummy stand out from the remaining is the person-pleasant interface that
promises a riveting online rummy expertise
for all users. KhelPlay Rummy acts as an ideal platform to sharpen your analytical expertise and
provides you the chance to face off with main on-line rummy gamers from across
the nation, all this while you rake within the moolah!!!


Locally known as ‘Paplu,' the Indian Rummy might be said to be largely inspired
from Gin Rummy boplatz.com: http://boplatz.com/index.php?do=/blog/34267/a-weblog-about-superior-video-games-designing-gameplay-life-hacks-business-/,
Ответить | Ответить с цитатой | Цитировать
# Louella 16.01.2018 22:51
Way cool! Some very valid points! I appreciate you penning
this article and also the rest of the site is extremely good.


Here is my site: ouvrir un compte boursorama banque: http://ww2.brunoemarrone.com/__media__/js/netsoltrademark.php?d=b-banque.ml%2Fboursorama_banque_parrainage.html
Ответить | Ответить с цитатой | Цитировать
# Juliann 17.01.2018 08:39
I just like the valuable info you supply for your articles.
I'll bookmark your weblog and check once more here regularly.
I'm reasonably sure I'll be informed many new stuff proper here!
Best of luck for the following!

Also visit my page; viagra: http://genericviaser.com/
Ответить | Ответить с цитатой | Цитировать
# Katherin 17.01.2018 11:31
casino online
casinos online: http://playslotscasino888.com/
free casino games and poker
casino
online gambling: http://playslotscasino888.com/
Ответить | Ответить с цитатой | Цитировать
# Darrin 18.01.2018 06:19
You really make it seem so easy along with
your presentation but I find this matter to be actually one thing that I believe I might never understand.
It sort of feels too complicated and extremely extensive for me.
I'm looking forward to your next submit, I will try to get
the cling of it!

My site buy viagra: http://genericviaser.com/
Ответить | Ответить с цитатой | Цитировать
# Ellis 18.01.2018 11:46
Thanks for the auspicious writeup. It in reality was a entertainment account it.

Glance advanced to more delivered agreeable from you!
By the way, how could we communicate?

Feel free to visit my page - offre ouverture de compte
boursorama: http://intellectualproperty.us/__media__/js/netsoltrademark.php?d=b-banque.ml%2Fboursorama_banque_parrainage.html
Ответить | Ответить с цитатой | Цитировать
# Kelli 19.01.2018 22:27
Nice blog here! Also your web site loads up fast!
What web host are you using? Can I get your affiliate link to your host?
I wish my website loaded up as fast as yours lol

Here is my web blog: Johny Jackson: http://bit.ly/2EWLfYx
Ответить | Ответить с цитатой | Цитировать
# Hilton 19.01.2018 22:36
If some one wishes to be updated with most recent technologies afterward he
must be pay a visit this web page and be up to date daily.



Also visit my web-site Johny Jackson: http://bit.ly/2EWLfYx
Ответить | Ответить с цитатой | Цитировать
# Libby 20.01.2018 06:12
With havin so much content do you ever run into any problems
of plagorism or copyright infringement? My website has a
lot of unique content I've either authored myself
or outsourced but it looks like a lot of it is popping it up all over the web
without my permission. Do you know any methods to help stop content from being stolen?
I'd genuinely appreciate it.

my blog post ... boursorama banque ouverture compte: http://zerodegree.net/__media__/js/netsoltrademark.php?d=b-banque.ml%2Fboursorama_banque_parrainage.html
Ответить | Ответить с цитатой | Цитировать
# Yukiko 21.01.2018 18:13
Wonderful work! That is the kind of info that are meant to be shared around the
net. Shame on the seek engines for no longer positioning this post upper!
Come on over and discuss with my website . Thank you =)

Feel free to surf to my web site - ouvrir un compte boursorama banque: http://dreamprinters.com/__media__/js/netsoltrademark.php?d=b-banque.ml%2Fboursorama_banque_parrainage.html
Ответить | Ответить с цитатой | Цитировать
# Huey 24.01.2018 16:22
This is really interesting, You are a very skilled
blogger. I have joined your rss feed and look forward to seeking more of your great post.
Also, I have shared your site in my social networks!


my blog post ... web cam models: https://www.webcamhoney.xyz/da/profile/HornyStephen/
Ответить | Ответить с цитатой | Цитировать
# Victorina 25.01.2018 02:21
viagra without a doctor prescription viagra without a doctor prescription: http://viagrawithoutdoc.us viagra without a prescription http://viagrawithoutdoc.us
Ответить | Ответить с цитатой | Цитировать
# Rhonda 25.01.2018 12:05
generic viagra 100mg generic
viagra: http://viagraonviagra.accountant sildenafil citrate http://viagraonviagra.accountant
Ответить | Ответить с цитатой | Цитировать
# Erna 25.01.2018 15:26
cialis 20mg prix en pharmacie cialis online: http://cialissvsviagra.us cialis dosage
http://cialissvsviagra.us
Ответить | Ответить с цитатой | Цитировать
# Wilbert 25.01.2018 19:28
erectile dysfunction erectile dysfunction pills: http://edpills.shop erections http://edpills.shop
Ответить | Ответить с цитатой | Цитировать
# Sherlyn 25.01.2018 21:08
viagra alternative viagra
online: http://viagraonlineviagra.accountant viagra dosage http://viagraonlineviagra.accountant
Ответить | Ответить с цитатой | Цитировать
# Denise 26.01.2018 21:15
cialis without a doctor prescription cialis coupon: http://cialiscoupon.gsyle.bid cialis dosage http://cialiscoupon.gsyle.bid
Ответить | Ответить с цитатой | Цитировать
# Fabian 26.01.2018 23:30
viagra without a doctor prescription viagra without a doctor prescription not scam: http://viagrawithoutdocpresc.accountant viagra without doctor visit
http://viagrawithoutdocpresc.accountant
Ответить | Ответить с цитатой | Цитировать
# Jayden 27.01.2018 10:45
cheap cialis cialis online: http://cialiswithoutadocrescription.bid generic cialis http://cialiswithoutadocrescription.bid
Ответить | Ответить с цитатой | Цитировать
# Erma 27.01.2018 16:49
viagra for women viagra for sale: http://viagraforsaleviagra.us
viagra coupon http://viagraforsaleviagra.us
Ответить | Ответить с цитатой | Цитировать
# Jett 27.01.2018 17:35
online pharmacy no prescription needed uk viagra without a doctor prescription: http://viagrawithoutdoc.us pharmacy without dr prescriptions http://viagrawithoutdoc.us
Ответить | Ответить с цитатой | Цитировать
# Magdalena 28.01.2018 00:28
LiveEdu is a decentralized undertaking studying network for folks to learn how to build actual products.

Ethereum ERC20 is probably the most popularly used token standard on the planet at the time of writing this
evaluate, but within the highly unstable and changing market of cryptocurreny, that may change in a 12 months's
time. However, you can transfer the tokens acquired within the sale to a number of
OPCO's in various ways. Our funding platform enables investors to develop their
investment portfolio and earn passive revenue with out having an enormous
capital. You are just beginning learning about online investments or possibly you might be inspired by dozens
of recent profitable ICOs?

Your tackle can be used within the NAGA Pockets to receive your tokens.
ICO issuers should not be compelled to change into specialists in regulation, finance, and Blockchain tech,
but should concentrate on their core enterprise and progress - and we will
deal with the fundraising. You will get ICX token by participating within the
ICON tokensale. The actual story is the underlying innovation of crowdfunding by way of a sale of digital tokens, verified by way
of a novel use of blockchain know-how. There are various kinds of tokens that can be offered in an ICO: Blockchain tokens, dApp
tokens, and DAO tokens.

Individuals prefer to call it "digital gold." Then got here one other blockchain known as Ethereum,
which is a more versatile twist that aims to
create a whole decentralized community on prime of which people can build their own decentralized apps and tokens.
The NAGA Group's objective is to raise 30M USD within the
Token Sale. Ethereum could be purchased in most cryptocurrency exchanges.

NO CONTENT OF THIS WEBSITE, NOR ANY HYPERLINK
OR DOCUMENT ON THIS WEB SITE ARE A PUBLIC PROVIDE OF A SAFETY OR
ANY OTHER MONETARY INSTRUMENT IN RELATION WITH ANY COMPANY INCLUDING THE NAGA
IMPROVEMENT AFFILIATION LTD.

Dragos Illinca is a serial entrepreneur being the co-founder of two advertising technology corporations.
Next, internet-pocket s will offer you the option to purchase tokens using one of the 6 available cryptocurrencie s (Bitcoin, Ethereum, Lightcoin, Bitcoin Money, Monero, Dash).

For development of B2BX aggregator, will probably be integrated with the most popular buying and selling platforms, corresponding to MetaTrader4, MetaTrader5, PrimeXM Trader,
FX Inside, C-Dealer by means of gateways, bridges
and open APIs. After the ICO end, the B2BX token might be freely traded on all
crypto-exchange s, which we create as a part of the service "Crypto-trade turnkey" (already carried out
for 5 purchasers), with every new change geography will develop, and the number of merchants
and traders will grow.

To help accomplish this feat, B2Broker can be undergoing an ICO on October 2, 2017 to drive the event of its
landmark mission, tapped B2BX. The challenge has a clear use case for Blockchain know-how as a single
immutable source of knowledge on the state of circulate of products in a provide chain. However ICOs differ from crowdfunding in that the backers of the previous are motivated by a
prospective return in their investments, whereas the funds raised in the latter campaign are
mainly donations. The organization developed a 3-manner plan, during which they are
going to operate a bodily delivery exchange, marginal buying and
selling and a cryptocurrency exchange (for different cryptocurrencie s).


Hyperverse is a VR park out-of-the-box” platform, that enables to rework
any location into totally immersive leisure turnkey answer contains tools for studios and a technology setup — a mixture of one of the best market
devices and customized constructed movement tracking, which makes deployment of VR location quick and affordable.
In September, Japan's Financial Services Agency (FSA), granted licenses for 11 Japanese bitcoin exchanges beneath new laws to advertise sound market development” of the nation's cryptocurrency trade.


All NAGA Tokens are generated and controlled by a sensible contract.
You pay with bitcoin, ether or Fiat currencies in an token sale, and in return you obtain tokens of the
new project. For the time of crowdsale the bonuses will depend
on the amount of tokens you purchase. The fantastic thing about BitCar
is that it hyperlinks the worth of tokens to the
costs of real belongings throughout the platform. The Securities and
Change Board of India and the Reserve Financial institution of India
didn't reply to queries on the legality of
ICOs and cryptocurrencie s in the nation.

So as the first ICOs surpass the $1 billion marker that typically jettisons a company to some Silicon Valley stardom, let's explore what's going on. Investors got "contract for variations" tokens.
A trading company that makes a speciality of binary options,
forex and other markets, is now launching their new buying and selling platform for buyers to commerce with cryptocurrencie s.
B2BX will purpose to become a comprehensive marketplace for regulated and certified brokers that combines
Bitcoin buying and selling with existing retail forex trading solutions.


We promise no spam, only relevant data considering
the ICO launch and undertaking improvement. This is what it is: An preliminary coin providing, or ICO,
is a fundraising mechanism based on a cryptocurrency,
” such as bitcoin. ICO Drops is an unbiased ICO (Token Sale) database
and is not affiliated with any ICO undertaking or firm.
The influencer's audience can use tokens and trade
them for unique actions, i.e. signed prizes by influencers, closed conferences and social
actions. — Token crowdsale and coaching platform for blockchain startups.


Inside a month, Japanese firms were rushing to fulfill demand and a growing appetite for cryptocurrencie s with over 18 purposes filed for cryptocurrency exchanges.
This new B2BX alternate-aggre gator will give dealer's customers
the access to comprehensive info of itemizing contributors and cryptocurrency buying and selling by way of traditional trading terminals, the place a
trader will be able to buy, promote, deposit and withdraw the profit in cryptocurrency from buying and selling accounts of brokers.
The distribution of the NGC tokens will occur inside 7 days after the token sale time limit.


Here is my site: Read More: http://wekerala.com/index.php?do=/blog/25486/how-crowdsales-are-taking-over-cryptocurrency/
Ответить | Ответить с цитатой | Цитировать
# Rhea 28.01.2018 12:20
prescription without a doctor's prescription viagra online without a prescription: http://viagrawithoutprescript.com viagra without prescription http://viagrawithoutprescript.com
Ответить | Ответить с цитатой | Цитировать
# Wilma 28.01.2018 12:49
viagra on line no prec viagra without a doctor prescription: http://viagrawdoctorprescription.bid viagra without a doctor prescription http://viagrawdoctorprescription.bid
Ответить | Ответить с цитатой | Цитировать
# Windy 28.01.2018 16:13
viagra generic viagra generic: http://viagragenericzz.com viagra
for sale http://viagragenericzz.com
Ответить | Ответить с цитатой | Цитировать
# Madelaine 28.01.2018 16:19
cialis pills cialis online: http://cialiswithoutadocrescription.bid buy cialis
online http://cialiswithoutadocrescription.bid
Ответить | Ответить с цитатой | Цитировать
# Elane 28.01.2018 18:40
viagra for women viagra: https://viagraviagra.us viagra pills https://viagraviagra.us
Ответить | Ответить с цитатой | Цитировать
# Dillon 28.01.2018 21:29
viagra without prescription viagra without a doctor prescription: http://viagrawithoutdocpresc.accountant pharmacy without dr prescriptions http://viagrawithoutdocpresc.accountant
Ответить | Ответить с цитатой | Цитировать
# Dallas 28.01.2018 22:36
viagra for sale uk only buy viagra: http://buyv1agra.com viagra prices http://buyv1agra.com
Ответить | Ответить с цитатой | Цитировать
# Zachery 28.01.2018 22:41
viagra canada viagra samples: http://viagraedpills.bid viagra for women http://viagraedpills.bid
Ответить | Ответить с цитатой | Цитировать
# Vicki 29.01.2018 11:15
generic sildenafil sildenafil citrate: http://sildenafilcitrate.today sildenafil citrate 100mg http://sildenafilcitrate.today
Ответить | Ответить с цитатой | Цитировать
# Tuyet 31.01.2018 02:58
viagra pills for sale buy
viagra online: http://v1agraonline.com generic viagra 100mg http://v1agraonline.com
Ответить | Ответить с цитатой | Цитировать
# Kristi 31.01.2018 07:29
how does viagra work viagra pills for sale: http://viagrapillsviagra.com viagra
pills for sale http://viagrapillsviagra.com
Ответить | Ответить с цитатой | Цитировать
# Bradley 31.01.2018 10:19
viagra canada viagra alternative: http://viagragenericzz.com generic viagra 100mg http://viagragenericzz.com
Ответить | Ответить с цитатой | Цитировать
# Marco 31.01.2018 11:49
cialis 20 mg cialis
coupon: http://cialiscoupon.gsyle.bid cialis 20 mg best price http://cialiscoupon.gsyle.bid
Ответить | Ответить с цитатой | Цитировать
# Maik 31.01.2018 16:18
viagra without rx viagra without a doctor prescription: http://viagrawithoutdoctorprescr.bid viagra without a
doctor prescription http://viagrawithoutdoctorprescr.bid
Ответить | Ответить с цитатой | Цитировать
# Kandi 31.01.2018 17:52
cialis 20 mg best price cialis online: http://cialissvsviagra.us cialis dosage http://cialissvsviagra.us
Ответить | Ответить с цитатой | Цитировать
# Elvin 31.01.2018 18:17
erection pills erectile dysfunction natural remedies: http://erectiledysfunctionpills.store erectile dysfunction causes http://erectiledysfunctionpills.store
Ответить | Ответить с цитатой | Цитировать
# Soila 31.01.2018 19:32
viagra.com viagra
pills: http://viagraedpills.bid viagra coupons http://viagraedpills.bid
Ответить | Ответить с цитатой | Цитировать
# Ray 31.01.2018 21:06
viagra for sale viagra coupons: http://viagraedpills.bid viagra for women http://viagraedpills.bid
Ответить | Ответить с цитатой | Цитировать
# Bianca 31.01.2018 21:14
buy generic viagra viagra
pills: http://viagraedpills.bid cheap viagra http://viagraedpills.bid
Ответить | Ответить с цитатой | Цитировать
# Owen 01.02.2018 02:07
generic viagra 100mg viagra pills: http://viagrapillsviagra.com sildenafil http://viagrapillsviagra.com
Ответить | Ответить с цитатой | Цитировать
# Shelia 01.02.2018 08:57
Hi blogger, i must say you have hi quality articles here.
Your blog can go viral. You need initial traffic boost only.
How to get it? Search for: make your content go
viral Wrastain's tools

Here is my homepage ... 99Katharina: https://Gretchenfat.blogspot.de
Ответить | Ответить с цитатой | Цитировать
# Ross 01.02.2018 21:27
Anythіng else aЬ᧐ut dating іn Hong Kong is pricey.


Ⅿy blog ... Escort kl: http://www.cattedralepozzuoli.it/index.php?option=com_k2&view=itemlist&task=user&id=281282
Ответить | Ответить с цитатой | Цитировать
# Francine 04.02.2018 01:55
The best way to authorize the usage of marijuana to your sufferers.
Be aware: it was once known as a blue card.”
Now, it is known as a 329 card.” You will hear some folks
call it a green card.” But that technically is a piece visa
for a foreigner, not a marijuana card. A. This one is somewhat tough because you may be
asked whether or not you use illegal drugs or medical
marijuana while you attempt to buy a firearm. During this process, you'll
register your medical historical past and provide details
about your qualifying condition. On approval your
registry id card can be issued at a dmv office in Las Vegas, Henderson,
Reno, Elko, or Carson Metropolis.

Medical Marijuana Card Doctor educates medical cannabis sufferers in his continuing blog about rising marijuana, medical marijuana cards, prop 215 permits, licenses,
suggestions and renewals. When discussing medical marijuana along with your care supplier, it's essential to be sincere about your health scenario and explain why you imagine medical marijuana
therapy will likely be helpful to you. There isn't a authorized distinction between having a MMIC or simply having a suggestion from a health care provider.
You can use this suggestion alone to get entry to a
cannabis club. To qualify for the registry, patients should have a doctor diagnose that they endure from a qualifying
situation and situation a advice that they use medical marijuana.


Remember that each of our Las Vegas Marijuana Medical doctors provide each qualifying affected person with a 24/7 affected person verification number.

New Hampshire requires that medical marijuana suffe rers have both a qualifying situation and certainly
one of quite a lot of qualifying signs — both listed right here — with the intention to
be eligible for this system. Pretty easy: You could find and
full the applying right here You may want a legitimate
ID (if it isn't from Michigan that you must prove residency toget her with your
voter registration card) and a physician who can certify that you meet a
qualifying situation The patient fee is $60, with one other $25
on top if a caregiver is applying with you.

Give us a call and we'll quickly walk you through the process of acquiring a
medical pot card advice. Activists React To Congressional Vote To
Allow VA Docs To Suggest Medical Marijuana. Each your advice and
card will likely be legitimate for one year, no matter if you get it directly from a walk-in analysis or on-line.
Dr. Green Aid affords one hundred% risk free Nevada Medical Marijuana Card evaluations.
Bringing related research on the the advantages of medical marijuana in your specific situation can often be helpful to your
doctor. Many individuals want to know what the method of getting a 329 card” (or marijuana card) seems to be like in Hawaii.


If somebody is just driving you to the Various Treatment Heart and does not
want to help you inside, it is not crucial to sign up a
caregiver. In case potential customers are stumped as to how
they may profit from hashish, the clinic administration had
conveniently listed a sampling of conditions that marijuana would possibly deal with.
If you happen to suffer from a power or persistent medical dysfunction that either substantially limits the power to conduct one or more main life actions
or which, if not alleviated, may trigger serious hurt to
your security or physical health, you might qualify for medical marijuana.

Your certification must come from an MD who's currently treating you and who has
accomplished the required coaching program with New York's medical marijuana program.


For a complete checklist of qualifying circumstances and
guidelines, please consult with Delaware's medical marijuana program pointers ,
or make amends for the newest Delaware hashish news.
All considered, our streamlined application course of, is about 4 fold
cheaper than visiting a regular doctor - who
could or could not know - about Medical Marijuana.

If you're receiving care at a Veterans Affairs (VA) facility, you may submit medical information from the VA about remedy for your qualifying debilitating medical situation from the past
yr, as a substitute of a Physician Written Certification Type.
Medical Marijuana Card Doctor and his consulting physicians proceed to lift the usual of care and professionalism of medical cannabis in California.


Fill in all elements of the application, choose a medical hashish dispensing group and signal the final page.
Persistent muscle spasm issues, together with however not limited to those brought
on by multiple sclerosis. Dr. Inexperienced Reduction is the choice for Local Las Vegas Marijuana Doctors.
Affected person information obtained by collectives is protected
underneath strict California legal guidelines that apply to all companies that take private info, Vazquez
stated. Iowa allows for the use of high-CBD hashish extracts with less than3% THC.
In states with more permissive restrictions,
similar to California, there are clinics that
exist for the only real objective of medical
marijuana screenings.

California grew to become the very first state to permit medical marijuana use in 1996 with the passing
of Proposition 215 and later built on the initiative by establishing a medical marijuana program with
the enactment of Senate Bill 420 in 2003. Medical Marijuana Use in Washington State:
Qualifying medical situations. Give us a call or walk-in, and we will stroll you thru the customarily confusing technique of getting
your medical marijuana license. Minor patients are required to have
a legal custodian assume responsibility as their caregiver
till they're 18 years of age; at which time the affected person will need to re-register as an grownup.


A advice, typically merely known as a rec,” (but in addition commonly
quoted as a Prop 215 card/certificat ion) is a doctor-issued transcript that is
acknowledged statewide, and it's what you will want in order to legally access
MMJ dispensaries and collectives. Just lately recommended qualifying condition soon to be out
there for Minnesota sufferers. Referred to as the California Compassionate Use
Act,” Proposition 215 was enacted by California voters and took impact on November 6th,
1996. Canada is at the moment determining the way it needs
to legalize leisure marijuana, so eventually that will also be an possibility, however in the
meanwhile, medical marijuana is the one option to go.


YOUR TIME IS EFFICACIOUS—REN EW YOUR MARIJUANA CARD ON-LINE IN MINUTES.
We purpose to be the Las Vegas chief in providing fast,
affordable medical marijuana evaluations and educational assets
for their neighborhood. If you don't have a Nevada patient ID
you will not be protected against prosecution beneath Nevada law.
If the applying is accredited, DOH will issue the sufferers registry card that will embrace any
limitations concerning types or dosage made by the certifying doctor.
If an Attending Doctor's Statement isn't obtained with the application, the
applicant is NOT LEGALLY PROTECTED under the OMMA.


Per Modification 2 , there are 10 qualifying conditions for Florida residents looking for entry the medical marijuana.
Nonetheless, those who follow more holistic drugs, resembling chiropractors, herbal therapists, and acupuncturists, should not approved
to concern medical marijuana suggestions.
Examples include chronic again/neck pain, extreme menstrual cramps or pelvic ache, fibromyalgia, irritable bowel syndrome, spastic colitis, and a
continual ache disorder, together with the consequences of conflict.
If the appliance was only denied as a result of it was incomplete, you may re-apply instantly.


Hollywood Straightforward Clinic is on the first ground and we are handicap accessible for our medical cannabis patients.
Additional, pot-prescribing physicians in Michigan and Colorado have faced
jail time. A licensed physician comes in, evaluations your medical information and for those who endure from one of many conditions spelled out in the state regulation permitting medical
marijuana, you possibly can get medical marijuana from a dispensary
in Michigan that honors Ohio's legislation. The state sticks to the same old qualifying circumstances a nd physician's diagnosis;
patients have to be over 18 and in a position to show they live in the state.


In case you are a minor or have a legal guardian, you have
to the written consent of the dad or mum or guardian. Under
we evaluate the Bay Area's premier, and fewer premier, medical cannabis medical doctors to see what the
experience of getting your rec” seems to be like now in the publish-legaliz ation period.
A 12-Month Suggestion accepted in any respect dispensaries within the state
it was approved. In case you say sure, you will not be allowed to buy a gun. Sufferers should join with a recommending
Ohio MMJ doctor or doctor clinic to obtain a card.
Although medical marijuana in California has become more accessible, patients
are certain to observe legal dispositions so as to be able to buy and use medical marijuana.


The hurdle for most individuals making an attempt to obtain a medical
marijuana license is figuring out find out how to
get it legally and under the suitable circumstances. A qualifying affected person, major caregiver,
various treatment middle, physician, or every other particular person acting
in accordance with the provisions of act N.J.S.2C:35-18 shall not be
topic to any civil or administrative penalty, or denied any right or privilege, including, but not restricted to, civil penalty or disciplinary motion by a professional licensing
board, related to the medical use of marijuana as licensed under this act.

There are a couple of services now that provide
very low value fees, or even annual memberships, utterly online.



The medical marijuana legislation presently would not present a authorized means
for individual patients or their designated supplier to purchase plants or seeds.
A qualifying affected person and a chosen provider might possess a complete
of no more than twenty-four ounces of useable marijuana,
and not more than fifteen plants. I was impressed
that these folks say - in print - affected person data will not
be shared with anybody without their John Henry.

The brand new Modification 2 that just passed could have a broader listing
of sicknesses including ache suffers. Although Colorado has carried out a authorized recreational cannabis market, it nonetheless operates medical marijuana dispensaries for legitimate patients.


In most states, it can take a few days to
assessment your paperwork, and then your card will come within the mail.
Recreational weed is legal in Maine as of January
2017, although it's going to take 9 months or extra to get a regulatory system in place Unusually,
medical marijuana suffe rers aren't required to register with the state (though caregivers still
do). You may also wish to overview your
pain contract to see if there is any language that could give you a way in by that avenue.
If the clinic is on skid row, it's more prone to feel like a
free STD clinic If it is on apartment row, it is extra
likely to really feel welcoming and fabulous
and have pretty furniture out to chill on.

As talked about earlier, a licensed doctor must certify sufferers earlier than applying on-line.
A recommendation” is only a note saying a health care provider thinks you
would possibly profit from the medicinal herb.
Sure, the Nevada Board Of Medicine cannot take disciplinary motion in opposition to a physician who recommends using hashish
drugs for a affected person once a qualifying medical condition has been established.
Learn how to get a medical marijuana card in California and get a advice from a licensed CA medical marijuana doctor at present!
And you should stay at or underneath the state permitted limits to maintain your card
valid, obtain all authorized protections, and not be
subject to card revocation and being banned from the program for
the remainder of your life.

After arranging cost in step three, qualifying individuals then go on to video-chat with a doctor for five to ten minutes, undergoing the identical medical marijuana evaluation every California-pot- searching
for affected person must endure. Get Your Medical Marijuana Recom mendation By Cellphone/On-li ne Video Appointment!
You will have a suggestion from a physician licensed to
dispense medical marijuana in AZ, as your application should accompany
a signed Medical Marijuana Physician Certification Form
along with documents proving your identification. Our
medical doctors assess your present condition and focus on treatment options, medical intervention, and medical specialization.

After you and your doctor have discussed your prognosis, your
physician will offer you a treatment plan tailor-made to
your complaints including the type of hashish pressure, the method of intake, the dosage, and dispensaries to avoid.
Regardless that you might be receiving access to marijuana for
medical functions, the insurance companies
don't cowl the state's medical marijuana application price or medical marijuana physician consultations.
An official paper copy of your physician's advice, signed by the
doctor himself. A central nervous system dysfunction leading to chronic, painful
spasticity or muscle spasms.

When you have a condition aside from what's listed above, then your specific ailment needs to cause one of
the above. Meaning we offer by-the-e book, skilled and most importantly,
value-effective medical marijuana suggestions online
for California residents. Once you've obtained authorization from a
health care provider, most states would require you to fill out a form and enroll in a registry of approved sufferers.
And in case you're nervous about whether or not your situation qualifies you for medical marijuana,
you shouldn't be, as even the co-authors of Prop 215 have
been quoted saying the language used within the initiative was intentionally liberal
such to permit anybody in California entry to cannabis.


My site - Click
This Link: http://lustingfriends.com/profile/blogview/420463/43836/Marijuana-Physician-Albuquerque,-NM/index.html
Ответить | Ответить с цитатой | Цитировать
# Rolando 04.02.2018 21:54
Discuss to a healthcare supplier about getting tested.



My site; STD Testing Near
Me: http://dominickwlzm70368.blogzet.com/you-will-thank-us-4-tips-about-std-testing-near-me-you-need-to-know-4520105
Ответить | Ответить с цитатой | Цитировать
# Yetta 08.02.2018 22:14
The New Zealand Financial Markets Authority (FMA) has claimed
that the cryptocurrencie s or any initial coin providing
(ICO)-derived token will be considered as a safety within the country.
On account of this latest improvement, you will need to observe that any firm seeking to raise
capital by way of ICOs within the U.S. will have to take this
SEC decision into consideration. A fintech lawyer and blockchain developers specified by a paper Monday how sure preliminary
coin choices can keep away from falling into the designation of "safety," while a trading platform announced final
week intends to supply other new digital cash a regulator-compl iant system.
Etherparty is concentrated on simplifying the creating, managing and executing of
smart contracts on multiple blockchains.

ICOs routinely take place earlier than a venture is even completed as a result of the raised funds
assist the company scale and cover bills. Last week, introduced its majority-owned subsidiary tZero, along
with monetary services companies RenGen and Argon, are forming a joint venture to
launch an SEC-compliant alternative buying and selling system for buying and selling
digital cash issued in preliminary coin choices.
Nevertheless, SPC's constant investment in the effectively qualified cyber consultants and elastic hardware
has made means for the enterprises and different users to be method forward of complicated cyber safety threats.


Marco Santori from Cooley provides a extra in-depth analysis of Howey for
tokens here Coinbase, Coin Heart, Union Sq. Ventures,
and Consensys have additionally built-out a thoughtful securities regulation framework to test whether or not a token may be
thought-about a security. The current SEC announcement to contemplate ICOs as
securities could really be a great factor because it highlights the importance of Preliminary Coin Choices (ICOs)
as a brand new viable technique to elevate funds.
Because the term ICO” is a by-product of preliminary public providing” (ICO),
utility token creators usually refer to these crowdsales as token generation occasions (TGEs) or token distribution occasions (TGEs)
to avoid the looks that they are partaking in a securities offering.


Virtual tokens or cash could also be issued by a virtual organization or different capital elevating entity.
According to the company, the ICO had a great start promoting over 10,000,
000 GAS tokens within the first hour.” The corporate bought greater than 400,000,000 FUEL tokens earlier than the
official launch in the pre-sale. Zero tokens might be
distributed to the Nexus staff, as an alternative, we shall be implementing a "purchase-back" program
(see under). Despite all this, ICOs are insanely in style, permitting companies to
lift giant sums of cash, typically for poorly documented or untested products.



Some ICOs are additionally nice for traders in addition to they can get early entry to something that will skyrocket in value like Ethereum has.
In addition to the newly revealed verticals the token will be capable of be used for the corporate's conventional routing and execution services made out there via a beforehand revealed various trading system (ATS).

The worth of Ethereum, whose tokens (generally known as ethers) are used
to conduct many ICOs, fell about 10% yesterday. With increasingly more
initiatives undergoing ICOs — coupled with a huge rise in traders recognising the potential ROI
to be constituted of said ICOs — structured, stringent evaluation has become a necessity.



These tasks contain blockchain software akin to
Ethereum, which runs throughout a number of computers
with the intention to create a tamper-proof digital ledger.
One of many key points of danger is the good contract itself - the Ethereum -primarily based module used to handle transactions and gather incoming funds for the
ICO. Sadly, these companies do not always spend
money on adequate cybersecurity defenses. In some circumstances, if a token is just not a security, however as an alternative has an actual utility, then the ICO (Preliminary Coin Offering) might not must register with the SEC since that would
not necessarily be considered an "investment" or security.


By FinCEN's definition , an exchanger of digital forex is an individual or entity that's engaged as a
enterprise within the trade of digital foreign money for actual foreign money, funds, or different virtual
forex.” An administrator of digital forex is a
person or entity engaged as a business in issuing
(putting into circulation) a virtual forex, and who has the
authority to redeem (to withdraw from circulation) such virtual forex.” Be aware that
token issuers may fulfill the definition of an administrator,” on condition that
they situation a virtual forex, and may have the authority
to withdraw their virtual forex from circulation.

Establish potential security vulnerabilities and verify that your sensible contracts are performing as anticipated.
If I am buying your token, I'm incentivized to assist the company's product and ecosystem develop,
bring in different customers, maximize the tokens' utility,
and I'm hoping that demand for the token will enhance and it might develop into more helpful.
Misconception #3: I've been assured by the best law companies that my token is not going to be thought of a safety subject to U.S.
federal and state securities legal guidelines.


Sensible investors are actually capitalizing on the fight towards the rising
wave of cyber crime. In its steering , which issues guidelines on electronic identification and belief companies (eIDa S), the Information Commissioner's Office (ICO) mentioned that
the 'trust service suppliers' have up to
24 hours to inform it of "any breach of security or loss of integrity that has a significant impact on a trust service supplied or on the non-public knowledge maintained therein".
The Howey and Reves exams may each be applied — for example, even if a token just isn't an investment contract underneath Howey jurisprudence, it might
be thought of a safety under Reves.

Therefore, the essence of a non-safety or utility Blockchain Token is that they're for commercial use relatively
than investment, and a safety Blockchain Token is for any form of
funding contract and transaction. In a typical ICO, which might final anyplace from a couple of hours
to a couple weeks, the corporate invites individuals to purchase tokens (aka digital
cash) to fund a undertaking. By next 12 months, 90% of central banks and eighty% of monetary banks
can have engaged in some form of funding, programming, or planning to incorporate blockchain into their predominant enterprise functions and
workflows.http://thumbs.dreamstime.com/x/security-icon-4808720.jpg

Feel free to surf to my weblog echat for bitcoin talk (http://healthysenior.me: http://healthysenior.me/node/1315418)
Ответить | Ответить с цитатой | Цитировать
# Stepanie 09.02.2018 00:20
I have checked your website and i've found some
duplicate content, that's why you don't rank high in google,
but there is a tool that can help you to create 100% unique articles, search for; Boorfe's tips unlimited content

my webpage; TiaraSmall: https://Sonia21.jimdo.com
Ответить | Ответить с цитатой | Цитировать
# Zachery 11.02.2018 04:06
I have checked your website and i've found some duplicate
content, that's why you don't rank high in google's
search results, but there is a tool that can help you to create 100% unique articles, search for:
Boorfe's tips unlimited content

Feel free to surf to my weblog; FosterSmall: https://Gabriella055.blogspot.com
Ответить | Ответить с цитатой | Цитировать
# Mallory 19.02.2018 01:54
No matter if some one searches forr his required thing, thus he/she wants to be available that in detail,
therrefore that thing is maintained over here.

Look at my webpage latin: http://www.latinaporn.movie/search/Jenna-Sativa-Kendra-Lust-Yoga-Fucked/
Ответить | Ответить с цитатой | Цитировать
# Jacques 19.02.2018 22:35
Concrete once it has aged becomes absorbent, and a penetrating sealer gets sucked into
the surface how
to seal my concrete countertop: https://www.intersnap.com/perma-treat-sanitize-seal-tile-concrete-prematreat/ create a barrier that keeps water out.
Ответить | Ответить с цитатой | Цитировать
# Luella 19.02.2018 23:14
Just desire to say your article is as surprising.
The clearness in your post is simply excellent annd i
could assume you're ann expert on this subject. Well with
your permission let me to grab your feed to keep updated with forthcoming post.

Thanks a million and please continue the enjoyable work.


My web site latina casting porn: http://www.latinaporn.movie/search/best-latina-porn/
Ответить | Ответить с цитатой | Цитировать
# Carmelo 20.02.2018 18:32
She had a great ass and walked with a cute wiggle.


Also visit my homepage; cheating wife jokes: http://codymwwl050.soup.io/post/645198392/Relationship-intercourse-is-actually-a-scorching-topic
Ответить | Ответить с цитатой | Цитировать
# Cornell 20.02.2018 21:32
There is certainly a lot to find out about this topic.
I really like all the points you made.

my webpage - escape
room live: https://xteriousescape.wordpress.com/
Ответить | Ответить с цитатой | Цитировать
# Dewey 24.02.2018 08:15
how does viagra work viagra generic: http://gener1cv1agra.com
natural viagra http://gener1cv1agra.com
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий

Защитный код
Обновить