mich91 писал(а):При таком значении VALUE=0x80 , выход должен быть 50%, тоисть 128 тактов 1, все остальные такты 0, а при таком коде не так (
Один из подводных камней выбранного способа заключается в том, что прерывания в определённые моменты следуют с очень малым периодом.
Предделитель таймера настроен на 8 тактов процессора. Таким образом, исходя из логики алгоритма, прерывания должны следовать через
8,
16,
32, 64, 128, 256, 512, 1024 такта.
Длительность обработчика прерывания скорее всего больше 32 тактов, поэтому происходят пропуски.
Вывод такой - смотрите, сколько тактов длится прерывание и настраивайте предделитель на б
ольшее значение.