Цитата(rezident @ Jul 7 2006, 22:19)

Цитата
Причина выяснена. Имеется одна переменная, которая объявлена в начале файла таким образом:
uint8_t static NumbActiveKom=0; // Текущее число активных команд
Эта переменная в голове инкрементируется в виде:
NumbActiveKom++; // Ввод команды завершён
А в прерывании декрементируется типа:
NumbActiveKom--; // Сократить число активных команд
Дальше я с помощью отладочного вывода выяснил, что в прерывании она уменьшается (и сохраняется от прерывания к прерыванию), а в голове увеличивается. Короче ведёт себя так, как будто это две различных переменных.
Если main и процедура прерывания описаны в разных Си-шных модулях, то так и будет. Переменная типа
static имеет область видимости в пределах того модуля, где она описана.
Объявите ее в модуле с main-ом как
Код
volatile uint8_t NumbActiveKom=0;
а в модуле с прерыванием как
Код
extern volatile uint8_t NumbActiveKom;
и все будет инкрементировать и декрементироваться как вам хотелось.
К сожелению описаны в одном. Переменная описана вверху файла до прерывания и майн. В прерывании я её естественно не описывал. После выходных засяду поплотнее. Ну выясню конечно же. Просто, я думал, может каким то образом из под запущенной проги можно данные на JTAG передать если из под него не запускалось.