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

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 это легко). Для небольших проектов реально, но в ряде случаев это может стать проблемой.
В целом интересная утилитка. Мне понравилась.
Ответить | Ответить с цитатой | Цитировать
# Anneliese 09.08.2017 23:06
Hey there! I know this іs kinda ooff topic Ƅut I was wondering whichh blog platform ɑre ʏou ᥙsing for
thiѕ website? I'm ցetting sick and tired of Wordpress beause Ι've had issues witһ hackers
and I'm ⅼooking ɑt alternatives f᧐r another platform.
I woluld Ьe awesome if you could point mе in the direction օf a gߋod platform.


Мʏ webpage :: gamblingmetropo lis.сom: http://www.softsailor.com/
Ответить | Ответить с цитатой | Цитировать
# Fred 10.08.2017 14:11
Hello it's me, I am also visiting this web site on a regular basis, this web page is truly fastidious
and the users are actually sharing fastidious thoughts.

http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Shaunte 11.08.2017 02:41
whoah this blog is fantastic i really like reading your posts.
Stay up the good work! You know, a lot of individuals are hunting round for this information, you can aid them greatly.

http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Beatriz 11.08.2017 09:25
Does your blog hаve a contact page? Ӏ'm having problems locating іt ƅut, I'd lіke to send уoᥙ аn email.
Ι'ѵe got some recommendations fⲟr ʏour blog you might bee interesteɗ in hearing.
Either wɑy, great blog and I lߋok forward to sеeing it grow oѵer time.


Also visit my website; cօme on casino: https://www.johnslots.com/sv/guides/kanda-filmer-dar-de-spelar-craps/
Ответить | Ответить с цитатой | Цитировать
# Edna 11.08.2017 20:58
Yоur style is so unique compared tⲟ other people I've read stff from.

Thanks for posting wһen you һave tһe opportunity,
Guess I'll jսst book mark tһis site.

Μy webpage :: red casino: https://www.askgamblers.com/online-casinos/estoril-sol-casino-review/
Ответить | Ответить с цитатой | Цитировать
# Etta 12.08.2017 06:38
I'm extremely inspired together with your writing talents
as neatly as with the format for your weblog. Is that this a paid topic or did you customize it your self?
Anyway keep up the excellent quality writing, it's rare
to look a nice weblog like this one nowadays..
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# William 12.08.2017 10:18
I see you don't monetize your website, don't waste
your traffic, you can earn additional cash every month because you've got
high quality content. If you want to know what is the best adsense alternative,
search in google: adsense alternative Mertiso's tips

Here is my web page 86Cleta: https://iamSommer.blogspot.com
Ответить | Ответить с цитатой | Цитировать
# Desmond 12.08.2017 17:23
Oh my goodness! Awesome article dude! Thank you so much,
However I am experiencing problems with your RSS.
I don't understand why I can't subscribe to it. Is there
anybody else getting the same RSS problems? Anyone who knows the answer
will you kindly respond? Thanks!!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Graig 12.08.2017 23:02
I see you don't monetize your blog, don't waste your traffic, you can earn additional bucks every
month because you've got hi quality content. If you
want to know what is the best adsense alternative,
type in google: adsense alternative Mertiso's tips

Also visit my weblog: 86Nona: https://iamChauncey.blogspot.com
Ответить | Ответить с цитатой | Цитировать
# Erna 13.08.2017 18:42
I see you don't monetize your site, don't waste your traffic, you can earn additional cash every month because you've got hi quality content.
If you want to know what is the best adsense alternative,
search in google: adsense alternative Mertiso's tips

Visit my page ... 86Carolyn: https://iamEdmund22.blogspot.com
Ответить | Ответить с цитатой | Цитировать
# Senaida 13.08.2017 18:47
Thiѕ iѕ mу first timke pay а quick visit аt hdre annd i am
truly impressed too read all att single place.

Ꮋere is mʏ web pаge :: melodifestivale n deltävling 3: https://www.johnslots.com/sv/game/mega-joker/
Ответить | Ответить с цитатой | Цитировать
# Lori 13.08.2017 19:02
You really make it seem really easy together with your presentation but I to find this
matter to be really something which I think I would never
understand. It seems too complex and very extensive for me.
I am having a look ahead on your next put up, I will attempt to get the hang of it!


http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Katherine 13.08.2017 23:56
I’m not that much of a internet reader to be honest but your sites really nice, keep it up!
I'll go ahead and bookmark your website to come back later.
Many thanks
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Maricela 14.08.2017 10:36
Keep this going please, great job!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Jocelyn 14.08.2017 21:32
As thе admin of tһіs website іs working, nno hesitation very shortly іt will Ƅe wеll-ҝnown, due to its quality
contents.

Нere is my blog: casino erbjudande: https://www.johnslots.com/sv/casino/europa-casino/
Ответить | Ответить с цитатой | Цитировать
# Ben 15.08.2017 10:03
Μy partner ɑnd Ӏ absollutely love үour blog and fіnd mⲟst of youг post's to bе precisely wһat Ӏ'm
lοoking foг. Does one offer guest writers tо wrіte contejt for you personally?
Ӏ wouldn't mind publishing а post or elaborating оn mɑny ߋf the subjects you
write concerning here. Agаin, awesome blog!


Check ߋut mү web page; netent
casinos: https://www.askgamblers.com/casino/all-star-slots-casino-review-r3448
Ответить | Ответить с цитатой | Цитировать
# Cyril 15.08.2017 10:15
Pretty commponent of contеnt. I just stumbled upon your weblog and
in accession capital tο assert that I get actuaⅼly
enjoyed account yor weblog posts. Αnyway I ԝill ƅе subscribing t᧐ yoᥙr ffeeds ɑnd even I success yoᥙ ɡet entry tο consistently fаst.


Feel free to surf tⲟ my weeb site - sportingbet: https://www.askgamblers.com/casino/betfred-casino-review-r732
Ответить | Ответить с цитатой | Цитировать
# Orlando 17.08.2017 09:20
I have learn a few just right stuff here. Definitely price bookmarking for revisiting.
I wonder how a lot effort you put to create
the sort of great informative site.
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Sidney 17.08.2017 15:48
I absolutely love your website.. Great colors & theme.
Did you create this website yourself? Please reply back as I'm
wanting to create my own blog and would like to find out where you got this from or just what the theme is
named. Appreciate it!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Flynn 18.08.2017 18:16
What's Going down i'm new to this, I stumbled upon this I've found It absolutely helpful and it
has aided me out loads. I am hoping to give a contribution & assist different users like its aided me.
Great job.

my site :: digital Marketing campaign: https://wiki.Sslug.dk/wiki/Networking_-_A_Must_For_enterprise_Owners
Ответить | Ответить с цитатой | Цитировать
# Celeste 19.08.2017 05:27
Hi there would you mind letting me know which webhost you're utilizing?
I've loaded your blog in 3 different internet browsers and I must say this
blog loads a lot faster then most. Can you suggest a good internet hosting provider at a fair price?
Cheers, I appreciate it!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Clarence 19.08.2017 14:45
Thanks to my father who stated to me about this web site, this blog is in fact amazing.

http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Tyree 20.08.2017 04:13
Foursquare can assist you find the very best places to go to.

Our board-certified pediatricians understand
the unique wants of youngsters who are sick or in ache.
You could run throughout the need for an extraction, root canal therapy, or different dental points:
our portal is the right location for you to find a 24-hour dentist in Los Angeles if you end up low on time, but high
on ache potential. Sufferers who wouldn't have a major care supplier will be referred for comply with-up care to Mercy primary care physicians who are taking new sufferers.
There are numerous reasons why you'll have the need for an extraction:
typically when a tooth has to return out, even root canal therapy just will not lower it.
Sudden sensitivity to cold and hot, very extreme pain, and all different levels of sudden throbbing could also be some of the issues
that you are experiencing.

The center also keeps a limited supply of vaccinations in inventory, so Ko steered calling
ahead. What isn't actually obvious is always that Monday could be the busiest
functioning home working day throughout the healthcare facility, and loads of beds
are reserved for folks as we speak popping out on the ORs or medical doctors'
clinics,” she clarifies. L.A. Care - Exceptional Service to the Local Neighborhood at Aggressive
Charges. As talked about earlier than, Dr. Ash serves all the Los Angeles
area with the most effective dentistry gear, technology,
and employees. Let us help your business or personal projects
with knowledgeable touch.

Dr. Alexander Sorokurs, MD has a medical apply at 1024 Oxford Avenue, Marina Del Rey CA, and has
over 38 years of experience in the discipline of medicine.
Anytime you've gotten questions or concerns about your child's health, our
crew is able to accomplice with you and your major pediatrician to optimize your kid's well
being care. We will help you identify if Urgent Care is the best choice for your condition/symptom.

Quick Cease Pressing Care is a good and fast
place to convey yourself or children. Emergency Dentists USA
Referral Service Los Angeles. I had to name for two months just to find out my stability from their billing workplace, and to file an appeal.


Sleeve Gastrectomy Gastric Sleeve surgery is likely one
of the hottest and successful weight loss choices out there on the subject of
bariatric surgical procedure. For that motive, generally, the worth of each urgent care centre is completely different.
We are right here for you on weekends, and even select holidays as a result of cooties” and
boo boos” do not maintain common hours and neither can we!
Some aren't open each day, and some are staffed solely by nurses.
Additionally they provide longer business hours so their patients have the comfort of going to the doctor's office
as an alternative of putting up with long wait instances and the
confusion of an emergency room.

The therapies embody pressing therapy, immunization, X-Ray,
and in addition diagnostics therapies, and etcetera.
Simply find California emergency dentists with our
service. The menu of offerings at pressing care facilities, way too, may
be influenced because of the form of clinicians
who staff them. Choose up and drop off at new delivery websites like
grocery shops and specialty retailers. The extra info you present about your
small business, the simpler it will likely be for purchasers to seek
out you online. Come discover the difference and see what makes
Mend the San Fernando Valley's urgent care of
choice. Information on this BBB Business Profile is believed
dependable, but not guaranteed as to accuracy.

We're positioned in the coronary heart of the Woodstock neighborhood,
next to Safeway and Cloud Metropolis Ice Cream, and throughout the street from Grand Central Bakery.
At VIP Urgent Care, the medical doctors work collectively to supply each
affected person with a novel, fully individualized remedy plan that gives
them precisely what they want. Sunrise Of Studio City is a -mattress assisted
living community positioned in Studio Metropolis, CA.
Communities this measurement usually provide 1-bedroom residences,
a number of ranges of care, restaurant style eating, and a
strong resident enrichment program. However, on weekends or after-hours, when the youngsters are actually sick or have some urgent challenge, I come
to Beverly Hills Pediatrics.

Most of those care facilities also provide individuals insurance
insurance policies, and so the patients can have even sooner treatments.
Get help finding an emergency dentist with out insurance,
or with your insurance coverage protection. Hassan wants so as to add other urgent care facilities within the subsequent several years, either by acquisition or by transforming older buildings.
The Dr. did not even take a look at me and I had a very severe infection. Local Well
being: The nearest hospital is Dr. Arash D. Matian, DO, which is located
inside 8 miles from Sunrise Of Studio Metropolis.
Please contact our office if you do not see your insurance coverage provider listed.


Sunrise of Studio City in California will cease at nothing to make your expertise heat
and alluring, from our homelike exterior structure to our comfortable community areas
and choice of suites to our distinctive out of doors gardens and landscaping.
We'll let the quantity (of patients) dictate where we go
from there,” Borgstrom mentioned. I've victims I've noticed fifty times,” describes Phillip Disraeli, who co-owns Metro
Pressing Care in Frisco, Texas, and is particularly director of scientific courses to the Pressing Treatment Affiliation of America.
Please feel free to name our workplace with any questions.


By utilizing our companies, you agree to
our use of cookies. The emergency workplace
can manage virtually every part, however the wait time and worth may be
facets, relying on the affected person's criticism.
And of course, there are always the friendly
smiling faces of our employees to ensure that every day spent here is a welcome one.

I used to be FINALLY given pain meds and anti spasmodic meds for the excrutiating nonstop stabbing pains (caused by severe gastritis and
spasms) and slept it off for several hours under the high-quality care of nurses
at St. Joseph's. Call the member service information quantity situated on the again of your insurance card.


By offering preventative care options, like STD Testing and
annual physical exams, the medical doctors are in a position to assist their patients keep as wholesome as possible for as long as potential.
In-retailer clinics, like Moment Clinics, which have a partnership with CVS pharmacies, provide
a specific menu of expert companies that would
generally be dealt with contained in the business office of a main-care medical skilled.

Long Island Metropolis's much-anticipate d bowling alley opened
today offering $7 video games and loads of craft beer.

Our Urgent Care Facilities do not deal with life-threatenin g emergencies
— but almost every part else.

The more reviews and extra information you present about your
enterprise, the simpler it is going to be for customers to find
you on-line. We consider within the power of at this time,
and try to show each day into a chance to Live With Function.
If you happen to need an ambulance, please go to the Emergency Room.
Pressing Care Medical Providers - Don't Stand in LINE!
Medicare has neither reviewed nor endorsed this data.
Native Wellness: Residents residing at Dawn Of Studio
City can take pleasure in easy access to 20 close by magnificence salons like Magnificence Necessities Apothecary.
Copyright © CF Web Voyager, LLC : is an affiliate associate with 1-800-DENTIST.


In essence, patients obtain the convenience of an pressing care with the
experience and most of the assets of a significant hospital
emergency room. If you've by no means walked into an Exer clinic
location, you'll be able to be taught a bit of more about us
right here , or visit us between 9:00am to 8:30pm any day of the week (no appointment is important).

Most will settle for cash, insurance coverage, Visa and MasterCard.

You probably have a medical emergency or require instant assistance
attributable to an accident or damage, please name 911. Open 7 days every week, with no
appointment vital. Please examine the individual service listings earlier than your
go to.

This is the reason Grownup and 9 a.m. to 5 p.m.
Saturday, Sunday and holidays.

Even if you have the most effective of the very best so far as insurance coverage
providers are involved, chances are you'll want to make sure you have money or your debit card on you,
as a result of these clinics need cost upon arrival.
The sufferers may have quick and efficient access
to the services. Usually, pressing clinics have official website that provides
individuals with thorough info. FedEx Drop Boxes accept most letters
and packages up to 20” x 12” x 6”. Use FedEx packaging or use your individual packaging with a FedEx delivery
label. YP, the YP logo and all different YP marks contained herein are logos of YP LLC and/or YP affiliated companies.



Also visit my page: studio city urgent care (playpalkids.or g: http://playpalkids.org/groups/playa-medical-plaza-provides-a-full-complement-of-medical-specialties-and-ancillary-services-ms-gallagher-who-has-a-specialty-in-pharmaceutical-compounding-is-recurrently-called-on-by-well-being-c/)
Ответить | Ответить с цитатой | Цитировать
# Clay 20.08.2017 20:01
Hey are using Wordpress for your blog platform?
I'm new to the blog world but I'm trying to get started and create my own. Do
you require any coding knowledge to make your own blog? Any
help would be really appreciated!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Ellen 21.08.2017 15:14
Sa prepari cafea buna pare cel mai simplu lucru cu putinta,
dar adevarul este ca nu foarte multe persoane reusesc sa faca acest lucru, in parte
din cauza grabei si in parte din cauza nepriceperii cu care indeplinesc acest act
aproape ritualic si cotidian. Am pus- in ibric la nisip, am pus- in ibric pe aragaz, la filtru cand
am facut cafea pentru toti colegii de birou sau de camin, am comprimat- in pastile pentru
espressoare moderne, am rasnit- pe loc si am pregatit- la french press sau i-am adaugat frisca si siropuri pana cand am uitat ce gust are cafeaua de fapt.
De altfel este mai bine sa alegem cafeaua proaspat prajita, in detrimentul cafelei prajite industrial, deoarece pastreaza mai bine calitatile boabei de cafea de care profita organismul nostru si este de preferat,
atat pentru gust, cat si pentru calitate. In cartierul Zorilor poti
gasi cel putin doua retele hotspot pe care le poti accesa gratuit.


Și așa se întâmpla și înainte, înainte să înceapă să participe la concursuri de specialitate.
Este nevoie de a hundred thirty de litri de apa pentru a produce cantitatea de boabe necesara prepararii unei cesti
de cafea. E necesară experiența, bună cunoaștere a cafelei și pregătire specială pentru antrenarea papilelor gustative
și a mirosului: după cel puțin jumătate de an de degustat cafele, vei reuși să
faci diferența între specii. Aparatul se manevreaza
handbook, fiind necesara actionarea unei manete pentru dozarea apei in bauturile calde si reci, dispusa in partea
de sus a dispozitivului. Alege locatia si specialitatea de care ai nevoie si noi
te ajutam sa gasesti specialistii.

In Anglia, fabricarea portelanului a cunoscut inflorire destul de mare
la sfarsitul secolului XVII si period puternic influentat
de portelanul chinezesc. Am un expresso de cafea
marca Tchibo Cafissimo(15 bari), care functioneaza
cu pastile de cafea, in casa se bea cam 4-5 cafele pe zi, pretul pastilelor este deocamdata pt
mine prea mare, asa ca refolosesc aceste pastile. I: Recomanda-mi, te
rog, 3 locuri din Bucuresti unde poti gasi cafea de calitate.
Pentru a face un cappuccino in acest mod, va trebui sa preparati 90 ml de Espresso si sa le puneti intr- ceasca din portelan greu
care sa poata tine one hundred fifty ml si care a
fost incalzita in prealabil.

Aceasta varietate provine dintr- zona de culturi de ceai aproape de Darjeeling.
Ce-ajunge in Romania (daca e sa-mi citez soata, fix
ca la cosmetice) sint ciurucuri, chestii procesate
prin Polonia, slab calitative, ca pentru Estul Europei.
Tot ea m-a convins să cumpăr şi cele 50 de grame
de păstăi de cardamom cu care am venit acasă. Cafeaua Robusta creste mai speedy si este mult mai
rezistenta la intemperii si boli, comparativ cu specia Arabica.
Luati pauza si constientizati ca multi dintre voi beti imagini nu cafea de calitate!

La Orange mi-a trimis sms daca suplimentez traficul de date si nu am vrut sa
platesc 3E iar a 2-a zi aveam 100e price supl.

Acolo a descoperit ca exista standarde, la care, la momentul acela, nu se
ridica si tot acolo a inceput cautarea pentru a
deveni un bun barista. Cafea delicată și fină, realizată din cele mai tremendous cafele braziliene, cu be
aware de alună. Cafea bună va fi recunoscută datorită corpolenţei, buchetului şi gustului care vă va învălui bolta palatină". Pentru cei interesati, sunt cateva site-uri care vand aparate de cafea semiprofesional e din clasa medie sau buna. Este adevarat ca cafea Latte se face folosind jumatate de lapte si jumatate Espresso. Estas subpartidas comprenden el café sin tostar en todas sus formas, descafeinado sin descafeinar (comprendidos los granos residuos separados en el triado en el cribado, etc), incluso para usos distintos del consumo (por ejemplo: extracción de cafeína).

Evolutia calitativa si cantitativa a cafelei columbiene a urmat de atunci panta ascendenta astfel ca in 2011, Columbia ocupa locul trei in clasamentul principalilor producatori de cafea dupa Brazilia si Vietnam. Aveti grija ca PR-ul de la Vodafone nu foloseste IP interschimbabil :)))))) Fraierilor ! All of our salads are prepared on the spot with contemporary substances, directly introduced from the market in Istanbul. Binecunoscuta „cafea cu gheaţă" este
băutură delicioasă, ideală mai ales în zilele fierbinţi de vară.
Bucurestiul este un oras destul de stresant, toata lumea se grabeste si atunci a lua cafea
„to go (la pachet - n.r.) devine un lucru normal, ca in orice capitala sau oras aglomerat.


Motivul este simplu: cu cât cafeaua stă mai mult la prăjit, cu atât cofeina dispare mai mult din ea.
În străinătate, conectează-te la hotspoturile noastre și folosește Fon WiFi pentru a evita costurile pentru date în roaming.
—In cazul matasii colorate, se poate incerca indepartarea petelor cu solutie de acid lactic
5 % , dupa care se spala bine cu apa. Proprietatile si caracteristicil e lor variate se combina pentru a
asigura un echilibru de buchet si aroma. Persoanele care cunosc si carora le place cafeaua in mod deosebit au experimentat si
au gasit metode de a satisface (la propriu) gusturile tuturor prin felul in care este preparata bautura.


Acest sort de cafea contine un procent mare de extract si esenta
obtinuta din ea are un miros puternic de vin si aciditate mare, calitati care fac sa
fie foarte apreciata. Am aflat de curând de la workshopul de cafea de
la Londra, susținut de experții de la Nespresso Să vă povestesc pe scurt.
Pentru a fi fatal, sunt necesare 170mg/kg, ceea ce pentru persoana cu greutate corporala
medie, presupune consumul a eighty - 100 cesti de cafea dintr- knowledge.

Profilul de prajire light va insemna aciditate pronuntata si word delicate de vin. Timp de zece ani - perioada
de desfasurare a studiului (pana in 2006) - participantelor
li s-au monitorizat starea de sanatate, nivelul de depresie si cantitatea
de cofeina consumata.

Prima persoană atestată care a preparat cafea în Anglia a fost un pupil internațional numit Nathaniel
Conopios din Creta, care studia la Ballion Faculty, Oxford.
Deshidratarea prin liofilizare sau sublimare: este unul dintre cele mai moderne si mai costisitoare sisteme de
deshidratare a extractului de cafea utilizate la fabricarea
cafelei solubile. Imediat ce laptele a ajuns la temperatura optimă
(între 65 şi 68 °C), scoateți duza rapid, dar lin, din lapte.
The odor of freshly roasted coffee is complemented by the stunning aromas found within the
all pure, carefully chosen tea and infusions.

Daca e sa ma iau dupa calitate aleg clar delonghi, dar
daca e sa merg dupa zgomot, amandoua mi se par la fel. Calitatea
solului se spune ca are mare contributie in obtinerea unei
cesti excelente de cafea. Cafeaua la ibric este una dintre cele
mai vechi metode de preparare a cafelei, cel mai frecvent
folosită, mai ales atunci când pregătim
acasă. La pravalia mea, cafeaua Sf. Elena va costa 900
RON/kg adica, 9 RON cesca cu una dintre cele mai bune cafea din lume, eu cred
ca este un pret convenabil pentru aceasta calitate. In cazul cafelei
on the spot, celebrul nes", se foloseste mai mult cafea Robusta, astfel ca bautura rezultata este mai tare decat cafea obisnuita.

Cafeaua pregătită la French press este ideală pentru cei care își doresc cafea mai consistentă și mai intensă. Alege aceasta cafea dimineata, pentru a-ti calma apetitul dinaintea pranzului si pentru a obtine proteine satioase. Continutul de apa al boabelor de cafea verde variaza între 9 si 12%, uneori însa cantitatea de apa creste, chiar pâna la 18%. Comenzile cele mai mari pentru cafea din magazinul online Ecuator Café vin din Bucureşti, Constanţa, Iaşi, Timişoara, Cluj şi Craiova. Pe când în afară prețui unui espresso este 1,three euro în Berlin, 1,three lire în Londra care sunt țări mult mai dezvoltate cu un salariu mediu mult mai mare decât la noi, sau 80 de cenți în Italia.

Cafeaua este cultivată în aproape toate țările situate între cele două linii tropicale și fiecare dintre aceste țări produce cafea care prezintă caracteristici specifice. Întreprinderile industriale moderne care prelucreaza astazi cafeaua verde utilizeaza instalatii speciale automatizate, unde durata si gradul de prajire sunt reglate digital. Mi se pare irelevant ca doar nu cumpar eu cafea verde si mi- prajesc la tigaie. Fondul Mondial de Cercetare a Cancerului / Institutul American pentru Cercetarea Cancerului au emis un raport (care este actualizat permanent) cu privire la cancerul endometrial, adaugand concluziile cu privire la legatura dintre cafea si prevenirea cancerului.

Alonweb - un serviciu VPN gratuit care de asemenea poate fi folosit ca si alternativa la Hotspot Defend. Cele două espressoare sunt relativ asemănătoare d.p.d.v. calitativ, funcțional, existând mici diferențe la nivel de volum al rezervorului de apă(cu 100ml mai mare cel al espressorului propus de dumneavoastră), dar cu un volum aproape dublu al recipientului de cafea în favoarea modelului EA8108. Arabica și Robusta sunt cele mai domesticate și comercializate soiuri de cafea (https://www.rowstreet.com/blog/54791/wheelys-romania/: https://www.rowstreet.com/blog/54791/wheelys-romania/) din lume. In niste cercetari finantate de catre Kraft se arata ca in boabele de cafea prajite sunt prezente mai multe substante care protejeaza celulele de moartea indusa cu peroxid de hidrogen decat in boabele verzi de cafea.

Compania mai asigură acoperire WiFi şi în mall-urile Afi Palace Cotroceni, terasa centrului comercial Băneasa Purchasing City şi restaurantele Ancuţa şi Dynasty din Bucureşti Mall (Mall Vitan). Promoţional, până la 14.06.2017 se oferă ca şi BONUS de date în roaming, în Spaţiul Financial European (SEE), echivalentul traficului naţional de date inclus în abonament; traficul de date activat prin alte opţiuni sau bonusuri nu se poate utiliza în roaming. Alegeti cafea surogat din cereale sau ceaiuri din plante medicinale în loc de cafea, ceai, cola sau alte bauturi care contin cafeina. Arabica - reprezinta aproximativ 70% din productia de cafea la nivel mondial si este apreciata pentru ciresele sale de calitate superioara, de forma alungita si culoare verzuie - albastruie.

Pentru sfaturi in alegerea cafelei potrivite gusturilor story, suna-ne sau vino la sediul nostru si specialistii nostri in cafea te vor ajuta sa faci cea mai buna alegere. La crema se pune gelatina in apa rece pana devine moale (ea ramane tot foi dar poti sa le storci in mana). Boabele zgrunturoase indica faptul ca cel care a prajit cafeaua nu a lasat acesteia perioada suficienta de dezvoltare dupa primul pocnet (first crack). Ceea ce face ibricul să iasă în evidenţă este tocmai procedeul de preparare care te forţează să te linişteşti, să ieşi din ritmul alert, şi să intri într- lume ritualică în care parcă fiecare gest are semnificaţie aparte, chiar mistică.

Cafeaua arabica are nevoie de soluri bogate in minerale si temperatura constanta de aprox. Mutati arbustul intr-un vas mai mare.Adaugati in acest vas pamant nou,eventual dintr-un musuroi de cartita.amestec ati acest pamant cu zat de cafea.udati pamantul cu apa in care ati dizolvat cateva pastile de adaug pastile four-5 pastile de Centrum la 2 litri de timp de canicula si nu numai pulverizati pe frunze epuizarea solutiei cu centrum la 2-3 saptamani puteti adauga ia apa de udare a plantei urina umana. Cea mai indragita si folosita cafea este cea Arabica, care se distinge prin gust, aroma, parfum si persistenta.

Am obiceiul sa ma trezesc la ora 5 ca sa pot ajunge la munca pe 7 si, probabil ca oricine altcineva, beau cafea acasa si una la munca. Pulberea de cafea este plasata intr-un con de hartie sau intr-un filtru din plastic si peste ea se toarna apa fierbinte, la temperatura cat mai apropiata punctului de fierbere. Metoda se foloseste in principal in nordul Norvegiei si nordul Peninsulei Scandinavice. Iata si unul din motivele pentru care oamenii trecuti de vârsta, nu vor sa renunte la obiceiul de a se bucura de cafeaua diminetii, considerând- ca pe cura de mentinere a tineretii. Comparativ cu alte metode gustul se aseamana cu cel din French Press, catifelarea insa se aproprie mai mult de cafea Americano.

Aroma este deosebita, iar la formarea ei contribuie peste forty de substante care exista in cafeaua cruda sau se formeaza prin prajire. Eu am abonament de 30lei si mi-au spus ca trebuie sa mai platesc inca 10lei pe luna pt stick. Se ia ibricul şI se măsoară apa cu ceaşca cu care se bea cafea, cam 50 ml. Se pune la fiert. Adevaratii iubitori de cafea cauta intotdeauna magazinele gourmet in care se vinde cafea artizanala. Lungo Leggero este cafea foarte aromată, în care se evidenţiază observe florale delicate, de iasomie. Europenii au extins zonele lor de cultura (in Asia, America si chiar Oceania), contribuind in acelasi timp si la raspandirea obiceiului de a bea cafea.

Conform unor cercetări, cafea poate crește metabolismul cu până la 20% si prin urmare, este excellent sa bei ceașcă de cafea organică sau un shot de cafea espresso dis de dimineata. Nouă ni se pare mai simplu și mai ușor de obținut același rezultat la fiecare preparare din punct de vedere al gustului dacă lași cafeaua să crească singură dată și ești atent la timpul complete de preparare, respectiv cele 6-10 minute. Pentru a menține cafeaua proaspătă, depozitați- într-un recipient ermetic și opac, la temperatura camerei. Mi se pare totala lipsa de profesionalism a operatorilor Orange catre consumatori si catre abonati si as dori sa stiu ce trebuie sa fac pentru a notifica intr-un fel sau altul nemultumirea mea cu privire la prestatia acestor servicii de inchidere a abonamentelor!
Ответить | Ответить с цитатой | Цитировать
# Gregory 22.08.2017 00:47
Discover extra about ATBOnline and ATBOnline Business.
I not too long ago switched to ATB and i am regretting it as
a result of now i cant do ANY on-line banking. I tried going online to see if maybe it could simply transfer
to the app, but that doesnt even work. The previous app labored high-quality I
am unsure why they ruined it. I used to just use my Internet browser but not that directs you
to this terrible app. I believe they did an replace and now I
can never connect to the community with it. I hate it.
Cell apps ought to be easier to make use of than desktop.
One app to track all of your bank accounts, bank cards, investments,mon ey and more.
Handle your business banking in your cell phone or tablet.


Masterpass is the simple safe technique to pay online,
in cellular apps and in-stores. Entry simply to your ATB Internet account from your mobile phone.
It is not a venue to advertise particular products or services, or
to advertise your private blog or website.
ATB Financial agrees to compensate buyer after calls from Go Public.
An Edmonton woman says she notified her financial institution immediately after her wallet was stolen, however that a identified fraudster was still capable of call the financial institution three weeks later, change her
account data and then switch $2,000 from her account. Tiffany 'Dell, 23, claims that ATB Financial
not only failed to prevent the fraud, however implied she had taken the money herself.


To encourage considerate and respectful conversations,
first and last names will appear with each submission to CBC/Radio-Canad a's on-line communities (except in youngsters and youth-oriented communities).
Underneath this association, Cashco prospects can open transaction and financial savings accounts, make
use of ATB ABMs, use the ATB Cellular Apps and acquire decrease cost quick and medium term credit.
The agreement with Cashco means it can act as an agent for ATB, benefiting from the monetary institution's company mannequin already effectively established throughout the province.
For the first time, Cashco clients will have the ability to open Cashco-branded, overdraft-prote cted ATB deposit and transaction accounts held by ATB—and not merely take out
loans.

This has resulted in a two-tiered banking system with these people seeking various financing options because the banks and
credit score unions are usually not accessible. As a comparability, the APR for a credit card is round 20%,
a division retailer card is 30% and 6% for a automobile mortgage.
While payday loans could also be efficient to meet brief-term money needs, they are not appropriate for
longer term use. The federal authorities studies fifty two% of individuals utilizing payday lenders used the service
greater than as soon as per 12 months, 22% using the service month-to-month.
Qualification for a payday mortgage is comparatively easy: candidates are required to current a personal
cheque or direct deposit/debit info and verification of employment.



ATB is probably the most significant surviving remnant of
social credit score economic policies in Alberta.
ATB was the topic of scandal within the late 1980s after purchasers such as Peter Pocklington 's Gainers Meals
3 4 5 and the Ghermezian Brothers' West Edmonton Mall
6 7 defaulted on loans. Within the 1990s, the federal government reformed ATB
with the intention of remodeling it right into a aggressive monetary institution. Since then, it has operated beneath a
board of administrators selected by the Alberta authorities.

It adopted the brand identify ATB Financial in January 2002.
As of March 31, 2016, ATB reported assets of $ 46.8 billion, deposits of $30.9
billion, loans of $forty.4 billion, and a web revenue of
$108.1 million.

Discover how we begin with the unadjusted trial steadiness in each account and add any
debits on the left and any credits on the proper.
Once the posting is full and the new balances have been calculated,
we put together the adjusted trial steadiness.
As before, the adjusted trial stability is a listing of all accounts with the ending balances and on this case it will be
adjusted balances. The next step in the accounting cycle could be
to complete the monetary statements. To bank with ATB I would like a nine
digit account quantity. The Governmentwide Treasury Account Image Adjusted Trial Stability System
(GTAS) replaces the performance of DETAILS I, INFO II, IFCS, and IRAS trial balance reporting
systems as the primary means of reporting company trial balance knowledge.


A single knowledge collection system improves the standard of monetary information by combining budgetary and proprietary trial stability reporting, enforcing the USSGL, and implementing new
edits and validations. Moreover, GTAS paves the best way for
extra consistent and complete financial information and permits for higher analytical reporting.
Interfaces each day with GWA Central Accounting
System for balance and transaction information. This section provides a
glossary of widespread terminology and a process flow of the setup
and execution of the PeopleSoft federal authorities
reporting. The Adjusted Trial Steadiness system replaces the FACTS I,
INFORMATION II, IFCS, and IRAS trial stability reporting performance.


Sign as much as create your ATB Enterprise Rewards account to buy
sooner, stay updated on your order status, and extra.
ATB Monetary needed to widen their lead on the competition and find a resolution that match
their marketing campaign of utilizing banking to create happiness.” After searching by a spread of potential choices, they landed on the thought of
integrating a digital money administration answer inside their on-line
banking portal. We really wished a platform to drive engagement with our prospects,” said
Dylan Roth, Vice President of Technique and Operations at ATB Monetary.
When the workforce at ATB saw what MX needed to provide and how it could be
built-in straight into the digital banking experience, they decided to act.


The agile banking institution can be happy to have jumped from tenth place to 2nd
place among all Canadian monetary establishments.

Part of the success for ATB comes from the institution's investment in technology,
folks and course of improvements, all in an effort to seek out distinctive options
for Alberta's entrepreneurs. In 2016, ATB introduced free banking for 2016
startups and opened ATB Entrepreneur Centres in each Calgary and Edmonton. Attaining high
rankings in the CFIB Battle of the Banks problem will not be ATB Financial's solely achievement this year.

It solely took ATB two weeks to raise $seven-hundred, 000 by way
of group member donations and fundraising occasions across Alberta, and the financial institution put the
enjoyable” in their fundraisers with over 100 separate campaigns,
which included axe throwing, an eating contest and escape room challenges.


This contains clients with a Pay As You Go, Basic, Limitless, ATB Benefit,
College students First or Freedom Account.
For those who opened your private chequing account on or after this date, the bonus is
$50. Get e-mail updates for the latest Atb Financial jobs.
So instead of paying for WoW with a credit card or pre-paid card,
I figured I'd try utilizing a debit card instead. After a few days
it efficiently connected to the account, I then transferred 100$ from
my financial institution to my PayPal account, which took just
a few weeks to course of. However then it says there's zero cards on my account,
it has a drop down menu to select a credit score or
debit card so as to add, but the issue is, there isn't any debit possibility.


I just pay whit my credit card on a protected pc now, easier
and cheaper. Yeah your problem seems to be the financial institution that is
issuing your card. An other various is, that you just register yourself a digital creditcard.
I've done this by myself on yunacard fyi, as a result of blizz only presents creditcards as cost possibility.

Ah that specify why you want a bank card, thanks deke.
Historically they're for on a regular basis merchant purchases,
but aren't usable online like regular debit cards, with out the use of a 3rd get together
system like Interac Online. The back of my debit card has the logos for Cirrus, Interac,
ARN, and NYCE.

At first glance, it probably sounds tremendous handy to make use of one company for your entire on-line technology needs,
but there are a number of cause why the crew at ATB encourages
you to unfold your small business around. Finance, spreading your online business around adds complexity - like extra usernames, passwords
and apps to wrangle - but also insulation from safety and privateness threats.” In different phrases, if your e mail account will get hacked,
it's not sport over in your whole on-line existence.
Particularly as online entities are more and more in a
position to observe your behaviors and interactions while using
the web , retaining some extent of separation between accounts ought to assist people and companies preserve larger ranges of
privacy and reduce private information sharing between platforms.


Account Tracker for Mac is a companion app helps you to sync
your information from iOS (over iCloud or Dropbox), and look at it on the larger screen of your Mac.
You possibly can reconcile your accounts, edit most fields in existing transactions and add new transactions too.
All changes are synced back to your iOS system(s) when the Mac app is closed (Command-Q).
Observe that on the iOS platforms, syncing is simply supported by Account
Tracker PRO, until you beforehand bought the Private or Household Sync upgrades.
When you first launch the app, you are prompted to
allow syncing (as a SECONDARY device) or manually open and look at an iOS backup
file (coated within the next section beneath).

As an alternative choice to syncing, you may choose to open and look at (but not edit!) your information from an iOS backup file.
Simply navigate to the place your backup information are stored (perhaps in your Dropbox folder?) and select
essentially the most recentatb file. If utilizing this mode, the remainder of the documentation still applies, nonetheless you
might be restricted to viewing your data solely (a
bit like my ATB Viewer app). In case your data (on iOS)
is PIN protected, the app will not display something
till you enter your PIN. Your accounts are shown down the left hand pane of the
primary display screen (in groups), together with three finances views, seven report views, and views for all transactions, reminder transactions and recurring transactions.


Choose one of many seven report views (Stability, Money Circulation … and so forth) to see your studies in the proper hand pane.
Choose the accounts or teams to further customise your reports.
When viewing the pie charts, choose Record to point out extra than just the highest 10.
Double click on on one of the rows to see your transactions,
and select Accomplished to return. Choose one of the transaction views and they are going to be shown in the fitting hand pane.
Use the left arrow to scroll to the start of the listing, Immediately to
make the most recent transaction visible (if relevant), and the
precise arrow to scroll to the top of the listing, and then forwards a month at a
time.

Please word modifications and transactions can't be processed
by this contact kind. The adjusted trial steadiness sheet
is used to verify the stability of debits and credits after the adjusting entries are made in the accounting cycle,
and to assessment the balances of each account in preparation of closing entries in the
next step within the accounting cycle. Firms will usually put
together the accounting trial balance on a month-to-month
or quarterly foundation, along with yr-finish, in preparation of periodic monetary statements.
A sample trial balance seems under for Sunny Sun shades Shop for January 2010, with each
account affected by the adjusting entries highlighted.


The adjusting entries process added five other new accounts within the adjusted trial balance: interest payable, payroll taxes payable, wages payable, insurance
expense, and curiosity expense. The opposite three accounts highlighted,
prepaid insurance, payroll taxes, and wages, had further activity because of the adjusting entries.
The debit column lists the entire of assets, price of products sold, and expenses.
The credit score column lists the full liabilities,
house owners equity, and revenue accounts. After the adjusting entries are made,
the whole debits equal the total credit. The accounting trial balance incorporates all of the information that Sunny Sun shades Shop needs to arrange closing entries and the monetary statements
for January.

Please notice: These numbers are correct to one of the best
of our information, but if you are not sure it is always greatest to test with the recipient's
financial institution. ATB Crew is opening it's doors and is
searching for adult & mature players (at the least 20 years previous), favoring tactical team
work moderately than personnal initiative. We're at present four
scouts on alpha, so should you preordered the Edge Of Darkness Version and are in search of sport mates,
you might be welcome to our staff, even if it's just to get an idea of who we are.
There are three kinds of trial balances: the unadjusted trial balance, the adjusted trial steadiness and the publish- closing trial steadiness All three have exactly the same format.



The primary is to shut all of the momentary accounts as a way to begin with zero balances
for the following yr. The second is to update the stability
in Retained Earnings to conform to the Assertion of Retained
Earnings. Note: Closing entries are at all times
dated the primary day of the subsequent year. If the year finish for the corporate
is September 30, 2013, the closing entries would be dated
October 1, 2013. If we closed the accounts as of September 30,
we might lose the information we need to do the income assertion and assertion of retained earnings.
A everlasting account is one the place the balance carries over into the next 12 months.


Due to this fact, we need to transfer the balances in revenue, bills
and dividends (the temporary accounts) into Retained Earnings to update the steadiness.
Moderately than closing the revenue and expense accounts on to
Retained Earnings and presumably missing something by chance, we use
an account known as Income Abstract to shut these accounts.
Income Summary allows us to make sure that all income and expense accounts
have been closed. The trial balance above solely has one income account, Landscaping Revenue.

With the intention to cancel out the credit steadiness,
we would want to debit the account. Now that the revenue account is closed, subsequent we shut the expense accounts.



my site ... Discover More: http://www.seoportal.ro/user_detail.php?u=abbeyfky3
Ответить | Ответить с цитатой | Цитировать
# Sherman 22.08.2017 04:53
Hi just wanted to give you a brief heads up and let you know a few of the pictures aren't
loading properly. I'm not sure why but I think its a linking
issue. I've tried it in two different internet browsers and both show the same outcome.


My site devos secretary of education vote: http://Agapecare.net/UserProfile/tabid/57/userId/1632155/Default.aspx
Ответить | Ответить с цитатой | Цитировать
# Kristi 22.08.2017 06:39
Get started with tennis lessons, search for your coach immediately!
All therapies, together with lively surveillance, hormone
remedy, immunotherapy, surgery, radiation, brachytherapy, cryotherapy, focal remedy, proton remedy, dietary and alternative therapies,
HIFU and chemotherapy are given equal consideration relying on the distinctive wants of every particular person patient.
It's a broad vary of conditions ranging from just a few microscopic cells found on a needle biopsy,
to a life-threatenin g metastatic condition.
These extremes illustrate the immensely extensive
spectrum that we call prostate most cancers.” Clearly it follows
that remedy should be tailor-made to the particulars of every individual's want.


With prostate cancer, treatment's affect on high
quality-of-life is magnified. Dangerous remedy selections negatively have an effect on sexual and urinary perform for a lifetime.

Due to unfamiliarity with the prostate cancer world, sufferers wrestle to grasp their quality-of-life
priorities, by no means before having been confronted with excessive-stake s selections affecting their sexual
and urinary function. Good choices end result from getting fair and balanced information about the lengthy-term ramifications of
all the different treatment options. Subsequently,
all treatments are given equal consideration and recommended on their deserves and relevance to
every patient's specific state of affairs.

Thanks for sharing your expertise at Vivid Hear - Marina Del Rey.
Critiques are usually printed on clinic profiles inside
one to three enterprise days. We require your e mail handle to signal you up for our e-mail newsletter.

We by no means display or share your email address with out
your express permission. Relieve sinus ache and sinus pressure related to persistent sinusitis.
Dr. Farhad Sigari is a nationwide leader in minimally invasive
and in-­workplace sinus procedures. Dr. Sigari and the Del Rey Sinus
& Allergy Institute uses a complete method to diagnose and treat your sinus points.
No matter your condition, name Del Rey Sinus & Allergy
Institute and you'll #Breathe Better, Immediately!

Constipation, Bloating and Fuel, Low Power, Skin Impurities,
Weight Gain, Dull Complexion, Allergies, Meals Intolerances, Candida, Irritable
Bowel Syndrome, Acne, Psoriasis, Eczema, Colds/Flu, Painful
Menstruation, Premenstrual Syndrome, Intestinal Parasites, Low Libido.

The checklist goes on… or perhaps you're scheduled for a colonoscopy and would love a gentler different to laxatives to clean the colon. Come try
the open system LIBBE device - a brand new modern FDA Accepted colon hydrotherapy system.
Sessions are held in a private clinic in Playa Del Rey/Westchester,
 though we service all of Los Angles (includi ng West Hollywood,
Venice, Malibu, Santa Monica, Marina Del Rey, Playa Vista, Manhattan Beach,
Redondo Beach, Beverly Hills, Brentwood, Westwood, Sherman Oaks and many
others.) and surrounding areas of California.

LIBBE is a protected, straightforward -to-use patented device,
permitted by and exceeds the safety requirements set by the United States FDA (Meals and Drug Administration) and used worldwide within the European Union, Australia, US, Mexico, Canada and different countries.
The LIBBE and room are safely disinfected between periods and the water used is carbon and
UV filtered to take away any sediment, rust, or chlorine earlier than it enters your body.
An odor exhaust system insures that the session room
and full heart stays odor free. I may also talk about the shape and what you hope
to accomplish by means of colon hydrotherapy.

Whereas the neatest selection may still be to talk to our helpline advisors so they can focus on your particular wants, reading how individuals
are reviewing or score a few of the dependancy rehab services near
you is one other glorious technique to get began. Methods
to Select the Greatest Addiction Rehab Marina Del Rey, Offers.

If you've decided what amenities you are on the lookout for,
you'll discover Marina Del Rey in-affected person addiction remedy packages that suit practically any need.
You'll must be comfy during your recovery, so whether meaning
a room to yourself and massage, 5-star chef-ready meals or simply luxurious bed linens, take into account what you or
your family will want and name 1-888-319-2606 whenever you're prepared to
start restoration.

Depending on the sort of dependancy and severity, you, a friend or a member of the family may have anything from a 30 day residential drug or alcohol
rehabilitation program all the best way up to a 4-month one.
Some medication could enable for short-time period outpatient applications while severe cases may have longer-term therapy applications.
Still, you'll find a Marina Del Rey remedy clinic to fit nearly any requirement.

Use the listings we have included right here to
get started or name our help line advisors at 1-888-319-2606 to begin narrowing your
search. In estimating the price of recovery providers in Marina
Del Rey, , you first have to determine on the amenities the
center offers and its location in comparison to your personal necessities.



Dr. Ganz is now part of an elite group of over 200 veterinarians that have acquired diplomate status with
the ACVD. The American College of Veterinary Dermatology is an organization shaped below the auspices of the American Veterinary Medical Affiliation (AVMA) to certify veterinarians with extensive submit-graduate coaching as
specialists in dermatology. To grow to be a board certified
veterinary dermatologist, a veterinarian should complete at least 2 years of postgraduate residency training in an institution accredited by the ACVD,
publish original analysis in the field of animal dermatology, reveal superior case administration, and move a complete two-day examination.

While this is wonderful advice in theory, the reality is that almost all patients discover it extremely troublesome, if not inconceivable, to drastically scale back their food consumption over the
long run. This is because the human physique is largely designed to keep us at our present weight, no matter that's.

One key facet of this reality is that severely overweight individuals who begin to shed some pounds
are more and more plagued by hormonally driven feelings that may
feel like hunger, ever after they know for a undeniable fact that they've consumed greater than enough meals.
Weight loss surgeries, such because the sleeve gastrectomy, have the power
to assault this drawback in two different ways.


Based by a Venice native, Westsid e Stroll-In is a
first class clinic for locals and traveler​s alike.
Your well-being is our top precedence and we stay dedicated to offering inexpensive care in a
time of difficult and infrequently co stly healthcare choices.
If you don't have insurance coverage we gladly settle for money,
debit and credit card payments for consultations.

Proudly providing high quality urgent care
to Venice, Marina Del Rey and the larger westside. Marina Del Rey Hospital is pleased to introduce
HealthCasts Learn More. There are at the moment three urgent care facilities in Marina
Del Rey with 66 p.c of them open seven days a week,
all of which see grownup and youngster patients.


Dr. Atul Madan is a Bariatric Surgeon at Marina Del Rey's Weigth Loss
Division. Dr. Madan graduated from the Medical School of Pennsylvania and engaged in a specialized coaching on the
Rush University, where he gained experience in Laparoscopy and Bariatric Surgery.
Main specialty: Anesthesiology in Marina Del Rey Languages Spoken by Doctor & Workers: Englis h Dr.

Alexander Sorokurs focuses on anesthesiology in Marina Del Rey
area. Dr. Alexander Sorokurs, MD has a medical observe
at 1024 Oxford Avenue, Marina Del Rey CA, and has over 38 years of experience in the field of
medication. Playa Vista Marina Del Rey Urgent Care is
a stroll-in clinic, providing handy medical services without an appointment, for the Playa Vista, Marina Del
Rey, Playa del Rey, LAX, Westchester, Venice, Santa Monica, Culver Metropolis, and Del Rey areas.


We need your assist to gain this title once more in 2017.
Since 1992, Lean For Life® by Lindora Clinic Marina del Rey weight loss clinic has labored to help our patients
achieve their weight loss targets by the Lean for Life philosophy.
Beyond reducing weight, we can help you're feeling empowered and bolstered to achieve your whole
goals and rework your life from the inside out. Our Marina del Rey Lean for Life weight loss program
is all about your needs and challenges. We use comprehensive
lab work that can assist you determine the challenges you face, and provide help to
break down the burden loss obstacles you face.



LaserAway's medical specialists use solely probably the most chopping-edge know-how,
which means you may always really feel comfortable.
What's more, our clinics supply a relaxed however subtle atmosphere.
After your therapy or consultation, see a movie at the AMC Theatre down the street, or shop on the Villa Marina Marketplace Mall.

It can be tough choosing amongst laser and
dermatological treatments. LaserAway's expert medical
employees will fortunately clarify the finer points of physique contouring,
laser hair removing, laser tattoo removal, anti-getting old procedures,
hand rejuvenation, or any of the opposite therapies provided at LaserAway's Marina Del
Rey location.

Planned Parenthood Los Angeles South Bay Well being Heart.
AIDS Healthcare Basis Lengthy Beach Out of the Closet Thrift Store.
St Johns Well Little one and Household Heart East Campton Community Health Middle at Casa Dominguez.
Los Angeles County Division of Well being Providers
Martin Luther King Jr Multiservice Ambulatory Care Middle.
Cynthia Davis-Charles Drew University Mobile Testing Program.
Charles Drew College of Medication and Science Drew Heart for AIDS Analysis Training and Providers Oasis Clinic.
Serving ED sufferers in Marina Del Rey and surrounding areas.
ED, or erectile dysfunction, is a condition that many
men face of their lives that relates directly to the flexibility
to get and maintain a wholesome erection.

For most sufferers, experiencing the signs of sexual
impotence is just a matter of time. Erectile Dysfunction Remedy Choices in Marina Del Rey, CA.
Marina Del Rey offers a lot of distinctive, holistic and ultimately efficient sexual drugs solutions
to ED symptoms. All of our methods have patient
safety in thoughts particularly these suffering from any pre-existing coronary heart conditions or diabetes.
GAINSWave - Our proprietary ED remedy technique makes use of the therapeutic effects of sound
waves to provide a low impact and pain-free resolution to erectile dysfunction. By reinvigorating
dormant blood vessels, GAINSWave provides lasting outcomes to leave the sufferers feeling healthier
and more sexually succesful than earlier than their first ED signs.



This is an effective ED therapy in addition to a protected ED therapy.
All of our new ED remedies are extremely
protected for sufferers with diabetes and pre-current
coronary heart situations. The newest ED therapy options have these conditions in mind due to the frequent thread between blood
circulate issues and erectile dysfunction. Erectile Dysfunction Consultation with a Physician in Marina Del Rey.
Diagnosing and treating ED starts with an preliminary consultation with a Marina Del Rey
ED specialist to look at the severity of the condition and set up the best
ED options which might be available. Meeting with an ED
clinic in Marina Del Rey is the start.

As soon as the doctor has a full understanding
of your needs and the perfect path to recovery from your
ED symptoms, they may be capable to provide you
with a close estimate. ED symptoms may be completely reversed
in case you take the appropriate steps towards getting higher and enhancing your
blood movement. No matter your age or the severity of your signs, trendy ED therapies supply options that promote sustained healing
and development to handle the preliminary causes
of erectile dysfunction. The symptoms of ED are simply
self-diagnosabl e, nevertheless, knowing which therapy is
right for you is best left to a men's sexual health specialist after a
consultation.

Marina Del Rey Hospital is a 133-mattress acute care, Joint Fee-accredited, non-profit
hospital offering basic medical care, surgical providers,
and 24/7 emergency care. Marina Del Rey Hospital concentrates
on four areas of experience: spine, weight loss, orthopedics,
and minimally invasive surgery. This focus allows us to provide excellence of care usually
discovered only at a big, educational facility — but in an intimate, private
and handy setting. Marina Del Rey Hospital physicians are nationally
recognized for scientific excellence. But it isn't just our
highly specialized health care that sets us aside.


By means of a sequence of gentle actions, your muscle groups
and connective tissue are inspired to elongate and
loosen up serving to to cut back irritation and enhance blood
movement. A Streto Technique assisted stretching routine helps
you keep doing extra of what you're keen on. Common massages assist you to do extra of what you love.

Let's talk about who you might be and what challenges
your life presents to design a massage session around you,
every visit. Allow us to allow you to put your best face ahead
with new, protected advanced skin care therapies, tailored to
each skin kind and concern. Our microderm service is a three-in-one
remedy to exfoliate, make clear, and hydrate.


Should you need reduction from complications and backaches commonly
associated with pregnancy, your therapist will use prenatal massage techniques to help preserve vitality and promote sleep.
It is right in your own yard at Marina del Rey Therapeutic massage Envy.
Skilled therapeutic massage or skincare companies carried out by licensed therapists and estheticians who care about helping
you feel and look your best are in your neighborhood. At Marina del Rey Therapeutic massage Envy we make it our mission to help you maintain you.
Massage therapy can loosen up your muscle tissue to help relieve common stress, enhance general energy, refresh your mental and emotional
outlook and positively impression all facets of your life.


My blog :: marina del rey urgent care clinic at playa medical clinic
(www.jhugs.net: http://www.jhugs.net/groups/healthcare-excellence-now-goes-by-one-identify-medical-city-healthcare-for-almost-50-years-lamc-has-supplied-inpatient-and-outpatient-care-as-well-as-emergency-providers-to-the-los-alamitos-group/)
Ответить | Ответить с цитатой | Цитировать
# Christel 22.08.2017 08:24
I am genuinely grateful to the owner ⲟf this website who has shared thijs impressive paragraph ɑt at this time.


Ⅿy web blog johnslots.cⲟm: http://www.redstarsint.com/index.php?id=2981
Ответить | Ответить с цитатой | Цитировать
# Albertina 22.08.2017 22:17
Hi! I could have sworn I've visited this website before but after going through many of the articles I realized
it's new to me. Anyhow, I'm certainly delighted I found it
and I'll be book-marking it and checking back often!
http://theelderscrolls5skyrimevolution225.ru/
skyrim: http://theelderscrolls5skyrimevolution225.ru
http://theelderscrolls5skyrimevolution225.ru
Ответить | Ответить с цитатой | Цитировать
# Mickey 22.08.2017 22:33
My web blog ... deccanrummy.com ; facefranca.com: http://facefranca.com/index.php?do=/blog/11227/how-to-play-indian-rummy-thirteen-card-indian-rummy-guidelines-depending-on/,
Ответить | Ответить с цитатой | Цитировать

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

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