servo писал(а):
bit flag;
в прерывании поставить флаг
flag =1; //сработал флаг
в цикле:
flag=0;//сбрасываем флаг
while(1){
if (flag==1) break;
}
Зачем лишнее сравнение?
Код: Выделить всё
bit flag;
в прерывании поставить флаг
flag =0; в цикле:
flag=1;while(flag){
}
ChipKiller писал(а):по тому мизеру информации. что приведена - предположу, что перед сменой канала вы не выключаете АЦП (бит ADEN).
... я не телепат, так что пардон .......
что за бред, сгенерите код визардом, ничего подобного там не делается и все работает.
Регистр ADC блокируется аппаратно когда читается младший регистр результата Ацп, когда читается старший, блокировка автоматически снимается.
После смены канала в автокоде делается задержка 10us.и только после этого запуск преобразования.
Вообще судя по журналу как то часто прерывания таймера случаются, возможно с этим что то связано.Если в каждом прерывании идет запуск преобразования, а прерывание чтения возникает в два-три раза реже немудрено, что в какой то момент произойдет глюк.
Какая вообще частота работы Ацп?