Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Инструментарий

Инструментарий Тестеры, паяльники, осциллографы, программаторы, IDE.

Ответ
 
Опции темы Опции просмотра
Старый 20.09.2007, 18:46   #1
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/54
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию OS для PIC24H?

какая оптимальна?
глядел в сторону jacos-а (использовалась нами на 18-х пиках). Теперь вот хотим использовать помощнее контроллер...имеет ли смысл смена операционнки?
timday вне форума   Ответить с цитированием
Старый 20.09.2007, 20:19   #2
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

>> имеет ли смысл смена операционнки

однозначно да.

выбор большой, из известных бесплатных FreeRTOS, TNKernel
есть еще малоизвестные - AVIX (за деньги), AVA (за деньги), порт PicOS18 (типа почти соответствует OSEK/VDX спецификации, бесплатно)
за деньги - uCOS-II, CMX, ThreadX, Salvo (кооперативная, смысла использовать не вижу)

Я бы TNKernel рекомендовал. Почти все баги, которые тут есть
http://www.tnkernel.com/port_dsPIC.html
исправил, если будет интересно, вышлю
Alex B. вне форума   Ответить с цитированием
Старый 21.09.2007, 10:32   #3
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,210
Вес репутации: 1775/77
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: OS для PIC24H?

еще тут чуток есть
http://www.microchip.com/stellent/id...cName=en531543
Илья вне форума   Ответить с цитированием
Старый 21.09.2007, 18:43   #4
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/54
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: OS для PIC24H?

2Alex B., Конечно интересно! вышлите пожалуйста порт, очень благодарен за помощь!
timday вне форума   Ответить с цитированием
Старый 24.10.2007, 19:44   #5
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/54
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: OS для PIC24H?

вызов функции tn_tick_int_processing() вешает проц.
Что посмотреть? Какие могут быть причины?
Все поодключал. Сделал только 2 задачи. одна моргает светодиодом, вторая по усарту шлет байтики... уже мозги все поломал. Помагите!
timday вне форума   Ответить с цитированием
Старый 24.10.2007, 23:13   #6
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

код-то выложи. не должно такого быть, значит неправильно пользуешься
Alex B. вне форума   Ответить с цитированием
Старый 25.10.2007, 10:00   #7
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

Файлега .s не увидел, в который ты собстно попадаешь при входе в прерывание и из которого вызывается функция TMR2_IRQ_Service()

и еще - нельзя в прерывании работать с той же периферией, что и в задаче (уарт в твоем случае). Это называется разделяемый ресурс. Прерывание може прервать работу задачи в любой момент времени. У тебя не все так страшно, просто передатчик заткнется, но при таком подходе будут проблемы и посерьезнее...

кстати, когда я просил выложить проект, это значит, что нужно было выложить проект, а не исходники сюда вставить... я бы его в симуляторе сразу и посмотрел.
Alex B. вне форума   Ответить с цитированием
Старый 25.10.2007, 10:16   #8
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/54
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: OS для PIC24H?

2AlexB.: Кинул на мыло. А передатчик я только для эксперимента врубил. Конечно, он затыкается буквально сразу...
Сначало я грешил на загрузчик(bootloader). Но вроде он работает четко и основной программе не мешает.
timday вне форума   Ответить с цитированием
Старый 25.10.2007, 12:58   #9
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

ага, был такой баг. Я его исправил уж месяц как.. Скинул тебе последнюю версию.
все никак страничку не обновить =( буду стараться сделать в ближайшее время.
Alex B. вне форума   Ответить с цитированием
Старый 27.10.2007, 18:22   #10
viael
Member
 
Регистрация: 28.02.2007
Адрес: Украина,Запорожье
Возраст: 41
Сообщений: 96
Вес репутации: 100/49
viael will become famous soon enoughviael will become famous soon enough
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
ага, был такой баг. Я его исправил уж месяц как.. Скинул тебе последнюю версию.
все никак страничку не обновить =( буду стараться сделать в ближайшее время.
А мне можно?
nebula2@mail.ru
viael вне форума   Ответить с цитированием
Старый 06.12.2007, 17:30   #11
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
http://www.tnkernel.com/port_dsPIC.html
исправил, если будет интересно, вышлю
Начинаю осваивать потихоньку, все сразу и 24-е и с30 и операционку.

Я смотрю дата архива по ссылке, более ранняя, чем это сообщение.
Alex если есть более свежая версия, вышлите пожалуйста.
Заранее благодарен.
DL36 вне форума   Ответить с цитированием
Старый 06.12.2007, 18:20   #12
fms
Member
 
Регистрация: 06.04.2007
Сообщений: 34
Вес репутации: 100/49
fms will become famous soon enoughfms will become famous soon enough
По умолчанию 2 Alex B.

А можно и мне исправленный порт TNKernel?
fmsprof <dog> mail ru
fms вне форума   Ответить с цитированием
Старый 07.12.2007, 10:09   #13
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

http://www.pic24.ru/upload/tnkernel_..._3_rev_653.rar

последняя ревизия.
смотрите проект test_app - как оформлять системные (которые могут переключать контекст) прерывания . Приоритет системных прерываний должен всегда быть равен TN_INTERRUPT_LEVEL.

Функция запуска tn_start_system() описана тут
http://www.pic24.ru/tnkernel.htm

Все остальное - в родной документации на tnkernel.com

p.s. в этой ревизии добавлены функции останова/побудки задач в прерывании
tn_task_isuspend() / tn_task_iresume()

может когда-нибудь у меня хватит силов закончить описание =)
Alex B. вне форума   Ответить с цитированием
Старый 07.12.2007, 10:36   #14
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
http://www.pic24.ru/upload/tnkernel_..._3_rev_653.rar

последняя ревизия.
смотрите проект test_app - как оформлять системные (которые могут переключать контекст) прерывания . Приоритет системных прерываний должен всегда быть равен TN_INTERRUPT_LEVEL.

Функция запуска tn_start_system() описана тут
http://www.pic24.ru/tnkernel.htm

Все остальное - в родной документации на tnkernel.com

p.s. в этой ревизии добавлены функции останова/побудки задач в прерывании
tn_task_isuspend() / tn_task_iresume()

может когда-нибудь у меня хватит силов закончить описание =)
Спасибо.

Может сдесь общими силами и сделаем описание в виде FAQ?
По крайней мере я буду задавать вопросы в этой теме, что бы все было вместе.
DL36 вне форума   Ответить с цитированием
Старый 07.12.2007, 11:49   #15
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

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

Q: Отслеживается ли ситуация, когда задача «вылезла» за отведенную для нее область стека? Если да, то что будет 1) с этой задачей. 2) с другими задачами?

A: У PIC24/dsPIC есть механизм аппаратного отслеживания указателя стека – если значение указателя становится больше чем величина регистра SPLIM, возникает немаскируемое исключение (прерывание). В TNKernel SPLIM сохраняется индивидуально для каждой задачи, поэтому отслеживание
переполнения стека есть – возникнет исключение. Отслеживания опустошения стека нет, да оно и не нужно. А переполнение стека может возникнуть, если для задачи выделен недостаточный объем стека.
Так что 1) возникнет прерывание 2) угадать нельзя. Вообще переполнение стека задачи – авария, этого никогда не должно быть, поэтому на 2) можно ответить - уже все равно, что будет...

Q: Какими средствами возможно просчитать необходимый объем стека для задачи?

A: Только на глаз. Можно выделить для начала стек побольше, а потом в ходе работы в Watch-е смотреть, насколько он занят (стек перед запуском задачи инициализируется 0xFFFF). Надо понимать, что чем больше вложенных функций в задаче, чем больше у них локальных переменных, чем больше параметров передается в функции – тем больше должен быть стек. Так же не надо забывать о прерываниях – допустим, задача на самом низком уровне вложенности и стека вроде хватает – а тут возникает прерывание. Естественно в стек будет сохраняться контекст. Если стека не хватит – исключение StackErr
Еще момент – если используешь функции из стандартных библиотек (printf, и т. п.) – нужно посмотреть сколько они стека хотят, обычно много.
Опять повторюсь, что переполнения стека быть НЕ ДОЛЖНО. Отслеживание переполнения – это скорей диагностическая отладочная функция.
Сколько примерно нужно стека для задачи с опытом поймешь. Я обычно для начала 128 слов ставлю и все… Потом обычно уменьшаю

Q: Уст-во на PIC24F с применением TNKernel работает в 2-х режимах - питание от батарейки и нормальное функционирование.
интересует процесс перехода на батарейное питание.
Сейчас делаю так - на ноге INT1 отображается состояние (подача внешнего питания).
Так вот, если в процессе работы от внешнего питания оно выключается я в прерывании переключаю режим тактирования на 32768 Гц, (завершаю высокоприоритетные задачи, низкоприоритетные (которые можно просто выключить))*отключаю системный тик TNKernel и засыпаю, периодически просыпаясь для определения - не подали ли питание. Если подали, питание, то через програмный сброс и полную инициализацию TNKernel продолжаю работать.
Правильно ли я делаю и каковы рекомендации по работе в таких режимах?


A: Смысла делать полный сброс нет.
Принцип простой – по прерыванию от INT1 (пропало питание) меняешь фронт прерывания INT1. Засыпаеш прям в прерывании. Нужно не забыть отключить все НЕСИСТЕМНЫЕ прерывания, с более высоким приоритетом (если они есть). Задачи можно не гасить - так как ты находишься в СИСТЕМНОМ прерывании, а прерывания, которые могут переключать контекст, имеют один приоритет, задачи не запустятся.
Как только напряжение питания появится – просыпаешь на следующей инструкции после входа в слип – потому что приоритет ядра равен приоритету прерывания (так как ты уже в нем находишься). Проверяешь - если это прерывание от INT1 (контроллер могут разбудить несколько прерываний), меняешь фронт INT1 и нормально продолжаешь работу выйдя из прерывания. Если нет - обратно засыпаешь...
Т.е. переодически можно и не просыпаться…
Если же что-то нужно делать полезное и при питании от батарейки - оставляешь работающим системный таймер (я надеюсь это TMR1? - нужно переключить источник его тактирования на 32768, можно изменить его период, включить делитель), запускаешь сервисную задачу, которая активируется, например, каждый системный тик, и выходишь из прерывания. А спишь в IDLE (ниже). Возвращаешься в нормальный режим работы в обратном порядке.
Еще рекомендация по уменьшению потребления – в рабочем режиме можно засыпать в функции, которая вызывается из задачи tn_idle_task() (ты передаешь на нее указатель при старте системы). Если ты находишься в idle, то задач, готовых к выполнению нет, они могут появиться только в прерывании от системного таймера или в СИСТЕМНОМ прерывании, поэтому можно спокойно спать – прерывание само кинет тебя на вектор. Естественно, желательно включить two-speed startup, то есть начинать работу на внутреннем генераторе до тех пор, пока не раскачается внешний кварц (если он у тебя есть). Понятно, что в этом случае время реакции на прерывание будет больше, так как стартуешь ты не с рабочей частоты. С другой стороны можно вводить контроллер не в SLEEP, а в IDLE (в нем генератор не гасится).

Q: для чего нужен TN_NO_ERROR_CHECKING

TNKernel PIC24/dsPIC содержит два набора функций - один с проверкой передаваемых параметров (в основном проверка передаваемых указателей на 0, проверка объектов и т.д.), другой без. Первый - больше кода и времени выполнения, второй - понятное дело, меньше.
В родной TNKernel все функции с проверкой. По большому счету она не нужна - ну неужели кто-то анализирует возвращаемое сервисом значение на TERR_WRONG_PARAM? Поэтому я эти проверки закомментировал - достаточно перед включением tnkernel.h вставить #define TN_NO_ERROR_CHECKING и из библиотеки будут браться функции без проверки передаваемых параметров.

Q: для чего нужен TN_DEBUG

Если дефайн не определен перед включением tnkernel.h, все объекты представлены как массивы, внутренняя структура их не раскрывается. Типа защита от Forger-а, который любит во внутренности OS лазить =)


- to be continued -

Последний раз редактировалось Alex B.; 07.12.2007 в 12:49.
Alex B. вне форума   Ответить с цитированием
Старый 07.12.2007, 12:28   #16
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/54
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: OS для PIC24H?

вот еще вопросик.
дефайны:
#define TN_NO_ERROR_CHECKING
#define TN_DEBUG
в общем-то примерный смысл можно понять из названия но хотелось бы уточнить что они дают и нужны ли они мне?
timday вне форума   Ответить с цитированием
Старый 07.12.2007, 12:49   #17
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

выше ответил
Alex B. вне форума   Ответить с цитированием
Старый 07.12.2007, 19:44   #18
Forger
Senior Member
 
Аватар для Forger
 
Регистрация: 26.02.2007
Адрес: Смоленск
Сообщений: 132
Вес репутации: 139/50
Forger will become famous soon enoughForger will become famous soon enough
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
ну вот, общался с человеком, я думаю он не против будет, если часть переписки выложу... Вопросы задавай конечно...

.....

Если дефайн не определен перед включением tnkernel.h, все объекты представлены как массивы, внутренняя структура их не раскрывается. Типа защита от Forger-а, который любит во внутренности OS лазить =)
Ну, спасибо! Напугали
Forger вне форума   Ответить с цитированием
Старый 08.12.2007, 15:15   #19
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Такие, несколько наивные вопросы.



Пытаюсь прочувствовать механизм вытеснения.
На основе TestApp сделал демонстрашку в протеусе.

Код:
void TN_TASK Task1 (void *par)
{
    for (;;)
    { LATBbits.LATB1 = 0;
      tn_task_sleep(10);
      LATBbits.LATB1 = 1;  
    }
}


void TN_TASK Task2 (void *par)
{
    for (;;)
    { LATBbits.LATB2 = !PORTBbits.RB2;
      //LATBbits.LATB2 = 0;

      //LATBbits.LATB2 = 1;
 
    }

tn_sys_interrupt (_T2Interrupt)
{
    IFS0bits.T2IF = 0;
    tn_tick_int_processing();
    LATBbits.LATB4 = !PORTBbits.RB4;
}
}
Смутило поведение системного таймера именно неравномерность.
Верхний график системный таймер
Средний task1
Нижний task2
Миниатюры
TNKernel.jpg  
DL36 вне форума   Ответить с цитированием
Старый 08.12.2007, 15:26   #20
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Увеличено, видно как сразу после завершения работы в прерывании управление через раз передается во вторую задачу минуя планировщик.
Миниатюры
TNKernelV1.jpg  
DL36 вне форума   Ответить с цитированием
Старый 08.12.2007, 15:33   #21
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

период системного таймера какой? =)
Alex B. вне форума   Ответить с цитированием
Старый 08.12.2007, 15:34   #22
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Если модернизировать вторую задачу

Код:
void TN_TASK Task2 (void *par)
{
    for (;;)
    { 
      LATBbits.LATB2 = 0;
      LATBbits.LATB2 = 1;
        Nop();
    }
}
таким образом, все становится на место.
Пример чисто синтетический, но ответа у меня пока нет,
внутрь я пока лазить не могу.
Миниатюры
TNKernelV2.jpg  
DL36 вне форума   Ответить с цитированием
Старый 08.12.2007, 15:35   #23
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
период системного таймера какой? =)
PR2 = 1000;
DL36 вне форума   Ответить с цитированием
Старый 08.12.2007, 15:50   #24
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/81
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: OS для PIC24H?

имхо дело вот в чем -
во это - LATBbits.LATB2 = !PORTBbits.RB2; - не атомарная работа с портом - а порт используется в других задачах, т.е. является разделяемым ресурсом.
выложи проект, посмотрю
Alex B. вне форума   Ответить с цитированием
Старый 08.12.2007, 15:56   #25
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/103
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: OS для PIC24H?

Цитата:
Сообщение от Alex B. Посмотреть сообщение
имхо дело вот в чем -
во это - LATBbits.LATB2 = !PORTBbits.RB2; - не атомарная работа с портом - а порт используется в других задачах, т.е. является разделяемым ресурсом.
выложи проект, посмотрю


Код:
#ifdef __dsPIC33F__
#include "BSP\p33FJ128GP206.h"
#endif
#ifdef __PIC24F__
#include "BSP\p24FJ128GA006.h"
#endif

_CONFIG1(FWDTEN_OFF&JTAGEN_OFF&BKBUG_OFF);

_CONFIG2(IESO_OFF&OSCIOFNC_ON&FCKSM_CSECME&FNOSC_LPRC );

#define TN_NO_ERROR_CHECKING
#define TN_DEBUG
#include "..\source\tnkernel.h"

#include <stdlib.h>
#include <time.h> /* for clock */

/* Global variables */

TN_TCB  tcb_Task1 TN_DATA;
TN_TCB  tcb_Task2 TN_DATA;
TN_TCB  tcb_Task3 TN_DATA;
TN_TCB  tcb_Task4 TN_DATA;

/* Task TCB and stack memory allocation */

#define TMR_TASK_STACK_SIZE    128
#define IDL_TASK_STACK_SIZE    128

unsigned int stk_Tmr_Task[TMR_TASK_STACK_SIZE] TN_DATA;
unsigned int stk_Idl_Task[IDL_TASK_STACK_SIZE] TN_DATA;

#define TASK_1_STACK_SIZE      128
#define TASK_2_STACK_SIZE      128
#define TASK_3_STACK_SIZE      256
#define TASK_4_STACK_SIZE      128

unsigned int stk_Task1[TASK_1_STACK_SIZE] TN_DATA;
unsigned int stk_Task2[TASK_2_STACK_SIZE] TN_DATA;
unsigned int stk_Task3[TASK_3_STACK_SIZE] TN_DATA;
unsigned int stk_Task4[TASK_4_STACK_SIZE] TN_DATA;

#define TASK_1_PRIORITY        11
#define TASK_2_PRIORITY        12
#define TASK_3_PRIORITY        13
#define TASK_4_PRIORITY        14


/* Local functions definition */

void App_Init(void);
void IRQ_Enable(void);
void IDL_Func(void);

void TN_TASK Task1(void *par);
void TN_TASK Task2(void *par);
void TN_TASK Task3(void *par);
void TN_TASK Task4(void *par);



//TN_UWORD cnt;

TN_SEM   Sem_From_IRQ TN_DATA;


/**
 *
 *
 * @return int
 */
int main(void)
{
  /////////////////////////////////////////////////////////////////
    AD1PCFG=0xFFFF; 
    TRISB=0;   
    LATB=0xFFFF;
    LATBbits.LATB0 = !PORTBbits.RB0;
  /////////////////////////////////////////////////////////////////   
     

    tn_start_system(stk_Tmr_Task,
                    TMR_TASK_STACK_SIZE,
                    stk_Idl_Task,
                    IDL_TASK_STACK_SIZE,
                    App_Init,
                    IRQ_Enable,
                    IDL_Func
                   );
    return 0;
}

/**
 *
 */
void App_Init (void)
{
    /* System timer config */


    T2CONbits.TCS   = 0;
    T2CONbits.TGATE = 0;
    T2CONbits.TSIDL = 0;

    T2CONbits.TCKPS = 0;
    PR2 = 1000;

    /* External interrupt config */

    TRISFbits.TRISF6   = 1;     /* Input */
    INTCON2bits.INT0EP = 0;     /* Positive edge */

    /* Round-Robin slice config */

    tn_task_create(&tcb_Task1,
                   Task1,
                   TASK_1_PRIORITY,
                   stk_Task1,
                   TASK_1_STACK_SIZE,
                   TN_NULL,
                   TN_TASK_START_ON_CREATION
                  );

  //  tn_sem_create(&Sem_From_IRQ, 0, 1);

    tn_task_create(&tcb_Task2,
                   Task2,
                   TASK_2_PRIORITY,
                   stk_Task2,
                   TASK_2_STACK_SIZE,
                   TN_NULL,
                   TN_TASK_START_ON_CREATION
                  );


}

/**
 *
 */
void IRQ_Enable(void)
{

    IFS0bits.T2IF   = 0;
    IEC0bits.T2IE   = 1;
    IPC1bits.T2IP   = 1;
    T2CONbits.TON   = 1;

    IFS0bits.INT0IF = 0;
    IEC0bits.INT0IE = 1;
    IPC0bits.INT0IP = 1; // Interrupt priority
}

void IDL_Func (void)
{
//    TN_UWORD sr;
//    sr = tn_sys_enter_critical();
//    cnt++;
//    tn_sys_exit_critical(sr);

}

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

/**
 *
 * @param par
 */
void TN_TASK Task1 (void *par)
{
    for (;;)
    { LATBbits.LATB1 = 0;
      tn_task_sleep(10);
      LATBbits.LATB1 = 1;  
    }
}


void TN_TASK Task2 (void *par)
{
    for (;;)
    { //LATBbits.LATB2 = !PORTBbits.RB2;
      LATBbits.LATB2 = 0;

      LATBbits.LATB2 = 1;
//        }

        Nop();
    }
}
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------

tn_sys_interrupt (_T2Interrupt)
{
    IFS0bits.T2IF = 0;
    tn_tick_int_processing();
    LATBbits.LATB4 = !PORTBbits.RB4;
}

tn_sys_interrupt (_INT0Interrupt)
{
    IFS0bits.INT0IF = 0;
    //tn_sem_isignal(&Sem_From_IRQ);
}

// void INT0_IRQ_Service (void)
// {
//     IFS0bits.INT0IF = 0;
//     tn_sem_isignal(&Sem_From_IRQ);
//
//     Nop();
// }

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

void TMR2_IRQ_Service (void)
{

}

//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
//
/**
 * <br><div align ="center"><font color = blue>Address error trap</font></div><br>
 */
void __attribute__((interrupt, no_auto_psv)) _AddressError (void)
{
    Nop();
    Nop();
    Nop();
    Nop();
    Nop();
}

/**
 * <br><div align ="center"><font color = blue>Stack error trap</font></div><br>
 */
void __attribute__((interrupt, no_auto_psv)) _StackError (void)
{
    Nop();
    Nop();
    Nop();
    Nop();
    Nop();
}

/**
 * <br><div align ="center"><font color = blue>Math error trap</font></div><br>
 */
void __attribute__((interrupt, no_auto_psv)) _MathError (void)
{
    for (;;);
}

/**
 * <br><div align ="center"><font color = blue>Oscillator error trap</font></div><br>
 */
void __attribute__((interrupt, no_auto_psv)) _OscillatorFail (void)
{
    for (;;);
}
DL36 вне форума   Ответить с цитированием
Ответ

Метки
rtos, tnkernel


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LCD и PIC16F628 DrejAn Продукция MICROCHIP 60 29.05.2008 09:37
Тестилка для принтеров killer258 Общетехнические вопросы 3 23.02.2008 20:33
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00
господа, где добыть для ознакомпления среду разработки для FUJITSU dynaco Общетехнические вопросы 2 04.06.2007 06:10
Дебаггер для PIC24H ChelMan Продукция MICROCHIP 8 15.03.2007 21:36


Часовой пояс GMT +3, время: 18:44.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot