Цитата(Grigorij @ May 7 2008, 09:00)

Здравствуйте.
Наконец-таки начал переползать с ассемблера на Си и возникла следующая проблем. Имеется код
При комплияции выдаются следующие сообщения об ошибках:
Код
Error [472]; . non-reentrant function "__send_byte" appears in multiple call graphs: rooted at "_INTHandler" and "_main"
Error [472]; . non-reentrant function "_SendByte" appears in multiple call graphs: rooted at "_INTHandler" and "_main"
Error [472]; . non-reentrant function "_SetBRate" appears in multiple call graphs: rooted at "_INTHandler" and "_main"
Может я ошибаюсь, но по сообщениям об ошибках у меня сложилось впечатление, что вы пытаетесь вызвать функции SendByte и SetBRate из прерывания и из основной программы. Так же, судя по именам функций, они напрямую работают с UART'ом.
Если я прав, то это все будет работать до тех пор, пока основная программа и прерывание не попытаются ОДНОВРЕМЕННО отправить байт в UART. А они попытаются, т.к. передача байта (если он передается не на 10 MHz

) вещь довольно длинная, вероятность попасть в нее относительно велика.
Цитата
Подскажить, на какие грабли я наступил?
Пока только на компиляторные, следующие грабли будут называться 'работа с одним физическим ресурсом из параллельных потоков вычислений без должной синхронизации'