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

 
 
> Проблема с Sleep
_Артём_
сообщение Dec 19 2011, 16:56
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Добрый день.
Попробовал собрать тестовый проект с scmRTOS.
Вроде всё работало, и вдруг...
Обнаружил что простейший код не работает
Код
PORTG|=(1<<3); // зажёчь led
OS::Sleep(1);
PORTG&=~(1<<3);// потушить led


Процесс засыпает как положено и ... всё - больше не просыпается.
Подскажите что можно (нужно) смотреть смотреть.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Dec 19 2011, 17:07
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А нет ли у вас рядом более приоритетного процесса, который не отдаёт управление?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 19 2011, 17:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Dec 19 2011, 19:07) *
А нет ли у вас рядом более приоритетного процесса, который не отдаёт управление?


Нажал в AVRStudio Break: программа выполняет
Код
IdleProcessUserHook


Получается что нет более приоритетного.
А где можно посмотреть текущее значение SysTimer(или как том правильно называется).
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 19 2011, 20:12
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Хм. Тогда похоже не запущен системный таймер.
(Текущее значение счётчика : OS::get_tick_count() для версии 4.00 или OS::GetTickCount() для 3.10)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 19 2011, 21:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Dec 19 2011, 22:12) *
Хм. Тогда похоже не запущен системный таймер.
(Текущее значение счётчика : OS::get_tick_count() для версии 4.00 или OS::GetTickCount() для 3.10)


Да, похоже на: прочитал значение с интервалом несколько секунд вернуло 0.

Но в файле scmRTOS_CONFIG.h
Код
#define  scmRTOS_SYSTEM_TICKS_ENABLE        1


Думал этого достаточно. Нет?
Как тогда его запустить?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 19 2011, 21:48
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Как-то так (это в main()):
Код
    // Start System Timer
    TIMER0_CS_REG = (1 << CS01) | (1 << CS00); // clk/64
    TIMER0_IE_REG |= (1 << TOIE0);


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post



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

 


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


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