Roman545 0 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба Применил в устройстве STM32F072. Прельстило USB без внешнего кварца. Задача решалась элементарная - прокси между проприетарным устройством и компом. STM32 в режиме SPI slave с одной стороны получает / принимает данные по SPI от другого девайса, с другой стороны обрабатывает их и через CDC USB передаёт на комп, а от него принимает команды. RTOS не используются. Возникла подзадача - нужны объекты синхронизации, хотя-бы самый простейший - мьютекс. -Инструкций LDREX/STREX у M0 нет, соответственно релизовать семафор/мьютекс как в M3 нельзя -Bit banding тоже нет, с помощью него тоже вопрос не решить Может быть есть каки-нибудь варианты кроме варварского запрета прерываний? Вроде семафоры есть в FreeRTOS, но использовать её не хочется, и встречал где-то информацию что там всё равно испольщуется disable_irq которого хочется избежать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба disable_irq - не избежать на M0. И ничего плохого в этом нет, если правильно пользоваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба А зачем его избегать? Религия? Тогда беда.... :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 22 июля, 2017 Опубликовано 22 июля, 2017 · Жалоба Проблема возникает, когда прерывания запрещаются надолго. Если всего на несколько команд, то никакой причины их не запрещать нет. Ну а нескольких команд вполне достаточно для реализации мьютекса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 22 июля, 2017 Опубликовано 22 июля, 2017 · Жалоба Если нет RTOS, значит нет многозадачности. Зачем mutex тогда нужен ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться