06.07.2021, 09:15
|
|
Прописка
Регистрация: 17.08.2013
Сообщений: 287
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
RTX-Blinky и sprintf
Решил немного поизучать ARM на демоплате. Компилятор Keil.
Загрузил проект RTX-Blinky.
Все работает отлично.
Но вот вставил в одну из двух задач sprintf и сразу OS перестает мигать светодиодиком. Конфликт образовался.
Ставлю sprintf во все другие места - даже в программу обработки прерывания ADC - там работает. Вопрос чисто в том почему в самой задаче не хочет работать.
Поискал гуглом, для RTX не нашлось решения. У Keil на сайте тоже почему то не получилось найти ответ.
Может быть кто то сталкивался с этим делом?
|
|
|
|
06.07.2021, 09:27
|
|
Прописка
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
|
Re: RTX-Blinky и sprintf
Увеличить глубину стэка задачи пробовали?
#define osThreadDef (name, priority, instances, stacksz)
› stacksz stack size (in bytes) requirements for the thread function.
Попробуйте установить значение выше 512 байт. В некоторых случаях может потребоваться поднять значение даже выше 1кБ.
Последний раз редактировалось -Alan-; 06.07.2021 в 09:38.
Причина: Нашёл документацию на Keil-RTX
|
|
|
|
06.07.2021, 11:26
|
|
Прописка
Регистрация: 17.08.2013
Сообщений: 287
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: RTX-Blinky и sprintf
Нашел в файле RTX_Conf_CM.C такие строки:
// ‹o›Default Thread stack size [bytes] ‹64-4096:8›‹#/4›
// ‹i› Defines default stack size for threads with osThreadDef stacksz = 0
// ‹i› Default: 200
#ifndef OS_STKSIZE
#define OS_STKSIZE 50 // this stack size value is in words
#endif
// ‹o›Main Thread stack size [bytes] ‹64-32768:8›‹#/4›
// ‹i› Defines stack size for main thread.
// ‹i› Default: 200
#ifndef OS_MAINSTKSIZE
#define OS_MAINSTKSIZE 50 // this stack size value is in words
#endif
ОЗУ всего 8 Кбайт доступно на чипе.
Сразу установить 1024?
И почему два стэка OS_STKSIZE и OS_MAINSTKSIZE?
Если я правильно понял первый на задачу, второй общий.
PS OS_STKSIZE при 100 заработал мой sprintf. Ура-а-а...
Но при увеличении, при 200 - перестает работать снова. Меньше 200 - работает.
А OS_MAINSTKSIZE увеличивал до 500 - не влияет.
Последний раз редактировалось optical illusion; 06.07.2021 в 11:53.
|
|
|
|
06.07.2021, 12:32
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: RTX-Blinky и sprintf
Мошт ты слишком часто передаешь просто?
__________________
кагмаподэ магмаподэ
|
|
|
|
06.07.2021, 13:27
|
|
Прописка
Регистрация: 17.08.2013
Сообщений: 287
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: RTX-Blinky и sprintf
RTX-Blink это две задачи. Первая включает светодиод, вторая выключает, через задержку. Больше ничего нет - десять строк текста. Я в одну задачу вставил sprintf что бы посмотреть будет работать или нет.
|
|
|
|
06.07.2021, 15:02
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: RTX-Blinky и sprintf
вставлять по разному можно. возможно ты так вставил что передача происходит с максимальной частотой
__________________
кагмаподэ магмаподэ
|
|
|
|
06.07.2021, 16:12
|
|
Прописка
Регистрация: 17.08.2013
Сообщений: 287
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: RTX-Blinky и sprintf
Ничего и никуда не передается.
Я увеличил параметр OS_STKSIZE с 50 до 100 и sprintf стал работать нормально.
|
|
|
|
06.07.2021, 17:34
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: RTX-Blinky и sprintf
а что именно ты печатаешь то?
sprintf а в ней что???
__________________
кагмаподэ магмаподэ
|
|
|
|
06.07.2021, 20:25
|
|
Прописка
Регистрация: 17.08.2013
Сообщений: 287
Сказал спасибо: 10
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: RTX-Blinky и sprintf
Что бы вывести на дисплей цифры, нужно число float преобразовать в текстовую строку.
sprintf ( (char*)szTemp, "T= %3.2f C ", fTRTD );
Сейчас столкнулся еще с одной проблемой.
Допустим, программы управления дисплеем лежат в файле (LCD.c).
Когда подключаю LCD в проект и затем вызываю эти программы из main() для управления дисплеем - все работает.
Если затем добавляю программы управления ADC в файле где main() - все работает.
Переношу эти программы в отдельный файл (например, ADC.c) - и добавляю его в проект, то они уже не вызываются - их не видят из main(). И если из программ этого файла (ADC.с) вызываю программы LCD - тоже их не видит. Ну так как все эти программы рабочие, то возможно дело в настройках RTX? Как бы это сразу настроить эту RTX?
|
|
|
|
06.07.2021, 20:59
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
Re: RTX-Blinky и sprintf
и как ты их добавляешь? скрин корня проекта дай
__________________
кагмаподэ магмаподэ
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:23.
|
|