Цитата(_Pasha @ Nov 4 2009, 23:20)

Как его ни назовите, N=trunc(256*sin(w*t)); и заметьте - ничего не пропускается. Вы же не будете пользоваться одной таблицей для генерации всей сетки... кстати, почитайте старинную некрочиповскую апноту
http://www.microchip.com/stellent/idcplg?I...ppnote=en011086 по поводу правильных алгоритмов генерации синуса.
За ссылку спасибо, почитаю.
По поводу Вашей формулу я полностью согласен. Берем и строим в exel таблицу с номерами отсчетов и выходным кодом для ШИМ c учетом 200 отсчетов на период выходной 500 Гц
Код
n(отсч) N N(окр)
0 0 0
1 8.041154324 8
2 16.074373 16
3 24.09172821 24
4 32.08530779 32
5 40.04722305 40
6 47.96961653 48
....
44 251.4655362 251
45 252.8482152 253
46 253.9813635 254
47 254.8638629 255
48 255.4948425 255
49 255.8736795 256
50 256 256
51 255.8736795 256
.....
Как видно из последнего столбца, я прохожу не все 256 уровней. Возле 0 пропуски через 8 уровней, возле максимума без пропусков. Я это и имел ввиду. (я кстати обманул, получилось 512 уровней, но смысл тот же)
Цитата
Ничего подобного. Три независимых, т.к последний(PSC22+PSC23) очень дже зависим от PSC20+PSC21
Чиорт, чиорт
Мне при беглом просмотре показалось, что в каждом PSC каналы A и B могут работать независимо. Уточню завтра на работе.( Для управления верхним и нижним плечом будет использоваться драйвер с одним входом PWM поэтому два вывода МК не требуются )
Да еще, в моей задаче не требуется "налету" менять частоту, только амплитуду синусоид. Это значительно проще. Соответсвенно таблица может быть и одна.