Вход
Наше всё
Теги
codebook
PARTS
Поиск
Опросы
Закон
Среда
20 января
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
ARM
AVR
PIC
PLD, FPGA, DSP
Кибернетика
Технологии
Схемы, платы, компоненты
ARM-контроллеры
/1042912
Топик полностью
VLLV
(09.10.2020 09:00, просмотров: 148)
в ответ на
Вот это читали?
- автор:
teap0t
Спасибо! Теперь смотрите, в чем проблема - такое приведение убивает признак volatile у DR! В IAR на максимальной оптимизации этот код не работает.
Ответить
Ответы
Блин, да не выдумывайте проблемы на ровном месте. Всё проще пареной репы.
VladislavS.
(452 знаков,
09.10.2020 09:19
)
По поводу volatile эти примеры ничего не доказывают, т.к. неизвестна оптимизация и прочие условия. По поводу размерности - вот брошу все и сам проверю.
-
VLLV
(
09.10.2020 09:26
)
Чего? Вы видели определение регистров процессора в заголовочных фалах? Там стоит __IO aka volatile. И ни один компилятор не имеет права выкинуть/оптимизировать доступ к этим регистрам на любом уровне оптимизации. Мои примеры скомпилированы на максимальной оптимизации в IAR. Ну это же азы эмбеддерства, даже удивительно, что такие вещи объяснять надо.
-
VladislavS.
(
09.10.2020 10:13
)
Имею интересные впечатления от компилятора cosmic для stm8. Он просто не обращает внимания на volatile. Это логично, учитывая, что код генерит на манер "что вижу, то и пишу", хитрых оптимизаций нет. Но на код "var += 2;" выдаёт "INC mem INC mem", например. Зануды скажут "какой же это volatile!", а я скажу "ну и что, зато код компактный получается"...
-
SciFi
(
09.10.2020 10:26
)
И вдруг прерывание, в котором зачение проверяется на n или n+2...
-
s_h_e
(
09.10.2020 10:34
)
А за что настоящий ымбеддер свой хлеб ест? Опять же адуринщиков отпугивать хорошо.
-
SciFi
(
09.10.2020 10:58
)
Наверно, Вы не знаете перевода volatile - "летучая", то она есть, то ее нет. В вашем случае есть, в моем - нет ;)
-
VLLV
(
09.10.2020 10:22
)
Я много чего не знаю. Только проблема с SPI->DR у вас, а не у меня. 100% правильное решение вам показали, можете продолжать лясы точить.
-
VladislavS.
(
09.10.2020 11:16
)
Какой такой "этот код"? Прячете? Снова военная тайна?
-
SciFi
(
09.10.2020 09:05
)
Код по ссылке с приведением к байту *(uint8_t *)&SPI_REGS[port]->DR = (uint8_t)data;
-
VLLV
(
09.10.2020 09:14
)
А, ну да. Надо же вот так: *(uint8_t volatile*)&SPI_REGS[port]->DR = (uint8_t)data;
-
SciFi
(
09.10.2020 09:27
)