Цитата(haker_fox @ May 22 2018, 13:24)
1. Воспользоваться JTAG или SWD.
2. Если код задач небольшой, то привести его тут.
3. А есть уверенность, что при тике 1 кГц всё работает правильно?
Да при тике 1кгц все работает.
2-я задача читает блоками аудио файл с флешь и DMA его пересылает в DAC. Она то и оставалась работать. Я ее отключил.
1-я задача обрабатывает сенсорные кнопки библиотекой touch-sensing library от ST. Собственно вызывает функцию, которая возвращает состояние кнопок. И если кнопка нажата, устанавливает глобальный флаг.
3-я задача проверяет этот флаг, когда он установился, запускает два таймера, один читает IR код с фотоприемника, а второй его передает.
Сразу оговорюсь, с ARM только начал разбираться, так что некоторые мои рассуждения могут быть глупые, не судите строго
.
Глючит именно пара задач 1 и 3.
Причем если я блокирую одну из них, глюк пропадает.
У меня пока один вариант:
- библиотека touch-sensing library как то конфликтует с FreeRTOS.
Сейчас просматриваю не использует ли она какие то аппаратные ресурсы что и ОС, например SysTickTimer.
Цитата(k155la3 @ May 22 2018, 13:31)
Работа самого планировщика не укладывается в период, который Вы задали. Одна задача осталась - в соотв-ии с приоритетом.
Поставьте в каждую задачу "ногодрыг" (а лучше - и в планировщик). Где собака порылась будет видно в реалтайм.
В планировщик больше вообще не попадаем после глюка. Надо проверить что там с прерываниями SysTickTimer, которые где то в FreeRTOS
По ходу прерывания SysTick отключаются. Точнее я вижу что в структуре описания этого регистра меняется значение CTRL - при старте CTRL = 0х00000007 / 0х00010007, а после глюка 0х00010005, и больше в прерывание не попадаем. Сейчас поставил частоту 20000Нz и глюк начал проявляться практически сразу.