Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619

вопрос по Di Halt Rtos.

17.03.2016, 23:15. Показов 6235. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
проц.: atmega8a
os: DiHalt Rtos
проблема: незапускается.
инициализация проходит и начинается тупить в while(1) не доходя до TaskManager;
проект прикладываю.

[39.27 Кб]
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2016, 23:15
Ответы с готовыми решениями:

Творческий вопрос! Прерывания в RTOS
Есть процессор с операционкой RTOS, но не стандартной, а специально написанной производителем под этот камень. Есть таблица прерываний,...

DI HALT rtos
Уже задавал вопрос, но не получил ответа. Мне надо организовать регулировку яркости семи-сегментных индикаторов с клавиатуры. ...

Вопрос по RTOS
Сразу приношу извинения, если пишу не в ту тему. Вопрос в следующем: как в RTOS ( в той, что в уроках по Си) насписать код управления LCD...

9
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 24
17.03.2016, 23:22
может таймер не работает?

я у себя использовал http://we.iosyitistromyss.ru/Soft/dyspe ... tcher.html
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
18.03.2016, 00:08
Цитата Сообщение от shytow
может таймер не работает?
пашет однако...
я у себя использовал http://we.iosyitistromyss.ru/Soft/dyspe ... tcher.html
не... то что я сейчас использую прекрасно работет в пяти железках и всё ок.
на атмеге8 только первый раз запустил.
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
18.03.2016, 00:16
Code
1
2
3
4
5
6
// Инициализируем ядро
InitRTOS;                  // в  файле <EERTOS.c>
// Инициализируем внутреннюю периферию контроллера
InitOtt;                  // в файле <HAL.c>
// Старт ядра.
RunRTOS;
При вызове функций после имени функции нужно обязательно скобки (), иначе это просто указатель.
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
18.03.2016, 00:17
ларчик просто открывался.
функции надо вызывать со скобками

InitRTOS();
InitOtt();
RunRTOS();
InitLeds();

а не без.

InitRTOS;
InitOtt;
RunRTOS;
InitLeds;

где угодно. особенно в прерываниях.
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
18.03.2016, 00:18
Цитата Сообщение от itysiy
Код:
// Инициализируем ядро
InitRTOS; // в файле <EERTOS.c>
// Инициализируем внутреннюю периферию контроллера
InitOtt; // в файле <HAL.c>
// Старт ядра.
RunRTOS;
При вызове функций после имени функции нужно обязательно скобки (), иначе это просто указатель.
на полминуты опередили)

спасибо!)

+1 к экспе
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
23.03.2016, 12:14
есть шаговый двигатель. управляется через L293 напрямую с контроллера. то есть каждый вывод контроллера подключён к базе транзистора.

в Di Halt Rtos написал четыре вот таких процедуры:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void QuoterStep_1(void)
{
SetByt(DRIVE_PORTD,DRIVE_PIN_0);
ClearByt(DRIVE_PORTD,DRIVE_PIN_1);
ClearByt(DRIVE_PORTB,DRIVE_PIN_2);      // <-- порт B
ClearByt(DRIVE_PORTD,DRIVE_PIN_3);
SetTimerTask(QuoterStep_2, MECH_STEP_TIME);
}
 
void QuoterStep_2(void)
{
ClearByt(DRIVE_PORTD,DRIVE_PIN_0);
SetByt(DRIVE_PORTD,DRIVE_PIN_1);
ClearByt(DRIVE_PORTB,DRIVE_PIN_2);      // <-- порт B
ClearByt(DRIVE_PORTD,DRIVE_PIN_3);
SetTimerTask(QuoterStep_3, MECH_STEP_TIME);
}
 
void QuoterStep_3(void)
{
ClearByt(DRIVE_PORTD,DRIVE_PIN_0);
ClearByt(DRIVE_PORTD,DRIVE_PIN_1);
SetByt(DRIVE_PORTB,DRIVE_PIN_2);         // <-- порт B
ClearByt(DRIVE_PORTD,DRIVE_PIN_3);
SetTimerTask(QuoterStep_4, MECH_STEP_TIME);
}
 
void QuoterStep_4(void)
{
ClearByt(DRIVE_PORTD,DRIVE_PIN_0);
ClearByt(DRIVE_PORTD,DRIVE_PIN_1);
ClearByt(DRIVE_PORTB,DRIVE_PIN_2);      // <-- порт B
SetByt(DRIVE_PORTD,DRIVE_PIN_3);
SetTask(MechSet1200);
}
для управления шаговым двигателем.

сейчас у меня эти процедуры вызываются несколько другими процедурами. нужно сделать так чтобы в конце QuoterStep_4 в строке SetTask(MechSet1200); на месте MechSet1200 была та самая процедура что вызвала начальную процедуру QuoterStep_1 этой цепочки.
через переменную и затем switch-case в конце считаю неспортивным.

я попытался разобраться в механизме SetTask и TaskManager. первая функция сохраняет в массиве указатель (как значение пееменой) на пользовательскую функцию, а вторая уже достаёт из массива сей указатель и выполняет кусок кода.

typedef void (*TPTR)(void); // я так думаю что это та самая переменная объявлена. точно также надо объявить свою(?)
а как вызывать такую весчь? у Ди токль
(GoToTask)(); // Переходим к задаче
и всё.

то есть для того чтобы реализовать задуманное мне надо объявить некую переменную(?какой тип?) затем до вызова QuoterStep_1 присвоить ей значение указателя процедуры/функции.
а затем в QuoterStep_4 на месте строки SetTask(MechSet1200) сделать SetTask(nasha_perennaya)

кто может подсказать как это сделать?
или какие разделы по Си и Си++ читать?
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
24.03.2016, 11:47
разобрался.
в хидере объявил
typedef void (*DPDR)(void);

в коде сделал глобальную переменную с пустышкой по умолчанию
DPDR GoToTaskAfter = Idle;

и вызываем цепочку процедур (1->2, 2->3,3->4) через диспетчер задач с присвоением переменной GoToTaskAfter = OurProcedure ;
получется (OurProcedure->1, 1->2, 2->3, 3->4 ,4->GoToTaskAfter )
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
24.03.2016, 12:22
2Orsomum. Мне кажется, у вас изначально путь решения задачи не верный. Отсюда выходит эта акробатика с указателями. Но чтоб сказать как это сделать лучше, нужно знать всю задачу.
0
0 / 0 / 0
Регистрация: 01.05.2010
Сообщений: 619
25.03.2016, 22:35
Цитата Сообщение от itysiy
2Orsomum. Мне кажется, у вас изначально путь решения задачи не верный. Отсюда выходит эта акробатика с указателями. Но чтоб сказать как это сделать лучше, нужно знать всю задачу.
файл ...\Clock_1Dryve_board_v2\Clock_1Dryve_b oard_v2\Clock_Mechamysm\Clock_Mechamysm. c
ВНИМАНИЕ! Возможны рвотные позывы при просмотре этого кода.
суть - двигателем могут щёлкать разные задачи. чтобы не плодить строк кода и стали нужни все эти прыжки и ужимки.

[69.39 Кб]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2016, 22:35
Помогаю со студенческими работами здесь

Вопрос по RTOS
Есть две задачи с однаковым приоритетом. Хочу чтобы полностью завершилась задача 1, затем задача 2. Не перебивая друг друга....

atmega8535, RTOS, interrupts, вопрос
Здравствуйте, установил ОС, которую выкладывал Ди и возник следующий вопрос. Переделал ОС на таймер0 и квантование времени 2 мс ...

Вопрос к DI HALT. Использование PB II для отладки STM32F429!
Имею плату PinBoard II c модулем STM32F103 и недавно приобрел плату STM32F429I-Dysco. Хочу попробовать использовать JTAG отладчик CoLink...

Halt (n),
Решить уравнение используя безусловную функцию Halt (n).

ФУНКЦИЯ HALT
Найти произведение первых k натуральных чисел, кратных трём. Используя безусловную функцию &quot;halt&quot;.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru