23.12.2013, 01:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Вот скока работал с OSA.Для меня лично ось была тока для удобно читаемости кода и разделение задач.А так сильно не применял все возможности ее,тока на уровне флагов и немного сообщений.Большой плюс это в таймерах,которые не занимаю работу процессора(что то типа таймеров встроенных,при работе с ними в прерываниями).Насчет встроенной оси ОСА задевал немного,кажись она там простенькая очень.На днях попробую ее и опишу что понял.
__________________
Глаза боятся,а руки делают.
|
|
|
|
23.12.2013, 11:37
|
|
Частый гость
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от CERGEI1982
|
Вот скока работал с OSA.Для меня лично ось была тока для удобно читаемости кода и разделение задач.А так сильно не применял все возможности ее,тока на уровне флагов и немного сообщений.Большой плюс это в таймерах,которые не занимаю работу процессора(что то типа таймеров встроенных,при работе с ними в прерываниями).Насчет встроенной оси ОСА задевал немного,кажись она там простенькая очень.На днях попробую ее и опишу что понял.
|
Там (во встроенной оси) в общем все понятно из прилагаемых примеров. Можно пользовать. Вот только незадача - таймеров нет ваще. ИМХО это самый серьезный недостаток...
|
|
|
|
24.12.2013, 03:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Да и OSA отвязанная ось сама по себе от компилятора,требует поддержки автора,который трудится на бесплатной основе.Можно понять тестера,своих дел хватает.Да и привязываться к осе не хорошо.
Для чего в оси встроенной в css сделано время работы задачи определенное время max=100ms? Чтоб не зависла в задаче?
Код:
|
#task(rate=1000ms,max=100ms) |
__________________
Глаза боятся,а руки делают.
|
|
|
|
24.12.2013, 11:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Как на счет применения вместо таймеров директиву
Код:
|
#use timer(tick=1ms,bits=32,NOISR) |
,типа динамического таймера.Накладно отслеживать конечно,но как выход.Как я понял можно создавать потоки этих таймеров за счет одного таймера реального
stream – optional parameter specifying the stream defined in #USE TIMER.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 24.12.2013 в 11:46.
|
|
|
|
24.12.2013, 12:56
|
|
Частый гость
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Я смотрел на это самое #use timer. И понял так, что это вариант настройки выбранного таймера "для ленивых" - установка предделителя и начального значения, а также включения (по желанию) прерывания от таймера. И только.
|
|
|
|
24.12.2013, 13:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Не сказал бы:
Код:
|
TICK_TYPE GetTickDifference(TICK_TYPE currTick, TICK_TYPE prevTick)
{
return(currTick-prevTick);
}
void main()
{
TICK_TYPE CurrentTick,PreviousTick;
//Example program using Tick Timer
CurrentTick = PreviousTick = get_ticks();
while(TRUE)
{
CurrentTick = get_ticks();
if(GetTickDifference(CurrentTick, PreviousTick) ›= 1000)
{
printf("1\n\r");
PreviousTick = CurrentTick;
}
}
} |
Это таймер без задержки,проблема в вызове постоянно CurrentTick = get_ticks(); чтоб не вышло за пределы разность GetTickDifference(CurrentTick, PreviousTick).
__________________
Глаза боятся,а руки делают.
|
|
|
|
25.12.2013, 04:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Попробывал погонять в протеусе.По задачам:
Есть у них свой стек для сообщений типоразмером long.Определяется уровнем вложений в зависимости от queue=2 +1,получается стек тут 3 уровня.
На рисунках:
1 рисунок показано куда будет положено сообщение при отправке его задаче
2 рисунок показано откуда будет браться сообщение при чтении задачи своего сообщения
3 рисунок показан ниже массив куда сообщения складываются.
Если что не правильно поправляйте.
__________________
Глаза боятся,а руки делают.
|
|
|
|
25.12.2013, 12:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,702
Сказал спасибо: 5,498
Сказали Спасибо 25,129 раз(а) в 5,644 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
А можно Вас попросить этот проект для протеуса выложить (а то чего-то не получается создать связку из CCS и протеуса).
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
26.12.2013, 16:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Пожалуста вот с семафорами пример.
А чем вас не устраивает задержка типа rtos_await( ), создаем глобальную переменную которая увеличивается в прерывании другого таймера,при это высчитываем разность запуска задержки и текущее,конечно учитываем переполнение таймера.А можно сделать максимально скока тиков сделать чтоб не переполнилось.Попробую привести пример чуть позже.
__________________
Глаза боятся,а руки делают.
|
|
|
Сказали "Спасибо" CERGEI1982
|
|
|
26.12.2013, 18:00
|
|
Частый гость
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от CERGEI1982
|
Пожалуста вот с семафорами пример.
А чем вас не устраивает задержка типа rtos_await( ), создаем глобальную переменную которая увеличивается в прерывании другого таймера,при это высчитываем разность запуска задержки и текущее,конечно учитываем переполнение таймера.А можно сделать максимально скока тиков сделать чтоб не переполнилось.Попробую привести пример чуть позже.
|
Безусловно можно создать свою службу таймеров, хотя бы приведенным выше способом. А потом написать свой диспетчер задач. И т.п. И написать ОСА заново ![Улыбка](images/smilies/icon_smile.gif) Факт остается фактом - таймеров во встроенной RTOS нет. И вообще, Сама новая оболочка что-то плющится безбожно - то виснет, то закрываться не хочет. У меня. Так что остаюсь пока на 4.140. И мучительно разыскиваю TCP/IP стек от CCS. Сам пока пользую перелицованный от DIHALTа c easyelectronics. Но там тоже не все работает...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:19.
|
|