Dir (26.06.2010 00:56 - 00:58, просмотров: 99) ответил Андрей на Очень содержательно, спасибо. Правда поставленная задача была всё же с запасом. Реально требуется 4 ШИМ-а 50кГц. Насчет ОСРВ мне ясно - отпадает, а вот что насчет реализуемости задачи в целом?
Без прерываний (считая циклы) будет на порядки(!) муторнее. Вы ж не только 1 ножку дергаете, а еще и считывать кнопки пытаетесь. Это громко называется многозадачность :) Практически - малопригодно. Хотя такие садомазохистские процы без прерываний существуют. PIC10, например.
Как минимум одно прерывание (системный цикл) у вас должно быть всегда. Период этого прерывания будет определять дискретность вашего ШИМА. Отсюда и плясать надо. Хотите дискретность ШИМа 4 бита, позаботьтесь чтобы частота прерываний была в 16раз больше частоты сигнала. 50кГц*16=800кГц (1,25мкс). В это время (1,25мкс) у вас должно влезть вся обработка прерываний, выход мз него, счетчик времени в ШИМе, возможное дергание ногами и диспетчеризация задач (т.е. когда надо пины дергать, а когда кнопки опрашивать). Влезет, как вы думаете? Считайте, пробуйте, все получится, но не сразу. Поэтому не отчаивайтесь, если на первых порах будет полный бардак. Все так начинали.