-
- После каждого инкремента UkSoket, идет проверка. Он никак не может быть отличным от
нуля. Проблема в том компилятор о чем-то догадывается и слишком
много на себя берет. Без оптимизации ведь работает. - IBAH(22.10.2024 19:28)
- Это кое-кто не догадался (не компилятор) и не объявил как volatile переменную, которая внезапно меняется вне контекста либо вашего
кода, либо внутри функции, которую вы вызываете. - Nikolay_Po(22.10.2024 19:39)
- Да они все статик, и UkSoket, и SoketTx. Нигде за пределами функции
не существуют - IBAH(22.10.2024 19:46)
- Прерывания в системе включены, в принципе? - Nikolay_Po(22.10.2024 19:59)
- Есть конечно, уарты, дма, системный таймер... - IBAH(22.10.2024 20:03)
- И какой side effect они производят? Они ни от чего не зависят? От
аппаратуры? - Nikolay_Po(22.10.2024 19:56)
- Не от чего не зависят. Просто статические переменные внутри функции - IBAH(22.10.2024 20:00)
- А массив ConnectTCP? - Nikolay_Po(22.10.2024 20:18)
- И TxHead и TxTail? Оно же у вас разгребается другим кодом и вне контекста (в прерываниях выполнения кода ваших функций). Все эти массивы объявите volatile (если они меняются не только в вашей функции или их результатами могут воспользоваться другие функции до выхода из вашей). - Nikolay_Po(22.10.2024 20:22)
- тоже статик но на уровне модуля. Тут не никакой многопоточности,
все на КА - IBAH(22.10.2024 20:22)
- То есть, ОСРВ нет, просто крутится конечный автомат? А вложенных вызовов, рекурсий - нет? - Nikolay_Po(22.10.2024 20:25)
- А массив ConnectTCP? - Nikolay_Po(22.10.2024 20:18)
- Не от чего не зависят. Просто статические переменные внутри функции - IBAH(22.10.2024 20:00)
- Прерывания в системе включены, в принципе? - Nikolay_Po(22.10.2024 19:59)
- Это к примеру проверки качества кода - если ломается при включении оптимизации - значит, содержит ошибки, как минимум, в объявлении переменных. Как максимум - в нарушении неделимости доступа к данным. - Nikolay_Po(22.10.2024 19:40)
- Да они все статик, и UkSoket, и SoketTx. Нигде за пределами функции
не существуют - IBAH(22.10.2024 19:46)
- Это кое-кто не догадался (не компилятор) и не объявил как volatile переменную, которая внезапно меняется вне контекста либо вашего
кода, либо внутри функции, которую вы вызываете. - Nikolay_Po(22.10.2024 19:39)
- После каждого инкремента UkSoket, идет проверка. Он никак не может быть отличным от
нуля. Проблема в том компилятор о чем-то догадывается и слишком
много на себя берет. Без оптимизации ведь работает. - IBAH(22.10.2024 19:28)