-
- PORTB очевидно в дефайнах прописан как volatile. Может есть intrinsic функция или макрос? - misyachniy(16.07.2019 15:00)
- Как это он может читать PINB, если операция производится с PORTB? Компилятор не способен к таким вольностям. В ассемблерный код загляните - неужели такое может быть? Можно ли этот кусок кода сюда выложить? - Ксения(16.07.2019 11:16)
- Спасибо! - ошибся. Читает PORTB. Но от этого не легче. Компилятор дважды использовал способ "чтение - модификация - запись" и один раз SBI. De_User(1432 знак., 16.07.2019 11:33 - 11:45)
- компилятор правильно генерит код: 3m(239 знак., 16.07.2019 13:14)
- По логике биты должны были меняться строго поочерёдно, максимум два одновременно (и то по недосмотру). Если компилятор решил эту пару так объединить (при полностью отключенных оптимизациях), то нехороший человек его писал :( - De_User(16.07.2019 13:29)
- Там есть "юридическая тонкость". Регистр PORTB должен быть прочитан и записан. Происходит ли это в рамках инструкции SBI - вопрос интерпретации. Но если ни одно животное в результате не страдает, то и спорить не о чем. - SciFi(16.07.2019 13:24)
- компилятор правильно генерит код: 3m(239 знак., 16.07.2019 13:14)
- Спасибо! - ошибся. Читает PORTB. Но от этого не легче. Компилятор дважды использовал способ "чтение - модификация - запись" и один раз SBI. De_User(1432 знак., 16.07.2019 11:33 - 11:45)