sporeon писал(а):
Пардон, не увидел про фильтр. Осциллографом смотрели что на выходе?
Я станцую у нашего руководства полгода выпрашивал, а такую вещь - так лет 10 ждать буду. Один вариант самому собрать, но пока не брался.
Цитата:
это весь код или контроллер делает что-то ещё?
Код не весь, но когда столкнулся с проблемой, отложил один контроллер взял другой и начал играться. Код для игрушек и привел.
С ним глюк на месте
Добавлено after 4 hours 49 minutes 44 seconds:Проблема решена и скрывалась не в аппаратной части а в программной.
Стандартные библиотеки буратины используют для генерации шима нулевой таймер, скорее всего для совместимости, плюсом устанавливают низкую частоту, которая к тому же и не регулируется (для 32u4). Нулевой таймер так же используется и в других целях (delay, delayMicroseconds) и подключение любого заголовочного файла может привести к вызову этих функций из инклюдов. Вот и привет рандомным глюкам.
Если писать в регистры напрямик то можно задействовать все таймеры, мне потребовался 4 таймер (см даташит) и соответственно указать частоту (мне чем выше тем лучше)
Очень помогла вот эта статья
http://r6500.blogspot.nl/2014/12/fast-pwm-on-arduino-leonardo.htmlСверху еще дописав функцию самопроверки через чтение регистров удалось не только нейтрализовать скачки полностью, но и достигнуть погрешности в 5 тысячных попугая. Что просто идеальная точность при данной схеме и попдподает под допуски погрешности резистора и конденсатора

.
Всем ответившим Большое спасибо!
PS одно остается загадкой, почему глюки были и на 9 и 10 пине, когда за них отвечает первый таймер. Но есть подозрение в жутком хардкоре от ардуинщиков, которые могли сэмулировать шим с использованием первого таймера на всех пинах. Тогда все плохо с буратиной.
PPS лично я в следующем проекте буду использовать STM32 без всяких буратиноподобных лоадеров и прочего. Путь сложнее дольше, но предсказуемие ибо ну его такие шутки ))))