реклама на сайте
подробности

 
 
> Программная задержка перед стартом ОС
Pavel V.
сообщение Nov 12 2010, 10:08
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742



Портирую одно устройство на scmRTOS и все шло хорошо, пока не начал заниматься датчиками, висящими на шине 1-Wire.

После долгих разборок удалось локализовать проблему, и вот что получилось:
Код
void main() {
    WDTCTL = WDTPW + WDTHOLD;
    TimerB_Init();

    __enable_interrupt();
        OS::Run();
}


Этот код работает, ОС запускается, задачи переключаются.

А вот этот:
Код
void main() {
    WDTCTL = WDTPW + WDTHOLD;
    TimerB_Init();

        for(volatile uint16_t i = 0; i < 5000; i++);

    __enable_interrupt();
        OS::Run();
}


Приводит к бесконечным рестартам устройства. Причем, поведение зависит от величины задержки. Если написать:
Код
for(volatile uint16_t i = 0; i < 1000; i++);

ОС запускается..

Компилятор - IAR.

Видимо, я не понимаю какие-то фундаментальные вещи, но своим умом понять не могу sad.gif

К сообщению прикладываю тестовый проект.
Прикрепленные файлы
Прикрепленный файл  scmrtos.zip ( 172.07 килобайт ) Кол-во скачиваний: 16
 


--------------------
Good News Everyone!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01318 секунд с 7
ELECTRONIX ©2004-2016