Начал проверять работу расширенного модуля ШИМ. Выводы PWM0 и PWM1 настроены для выхода ШИМ в независимом режиме (PWMCON0=0010 0001). Режим непрерывной генерации без пред и постделителей (PTCON0=0000 0000)
По даташиту, после настройки значений периода и длительности импульса, в режиме непрерывной генерации, запустив сброшенный таймер ШИМ, сразу должен активироваться выход ШИМ, выдавая импульс и начиная отсчет его длительности. Приводится описание с графиками. Но...., и в железе и в симуляторе MPLAB, первый импульс пропускается, начинается генерация лишь со второго импульса. Это опечатка в даташите или что-то еще может быть??? Причем, если сразу после старта таймера ШИМ, предустановить значение таймера, как период с вычетом одной единицы (т.е., к прмеру для периода 0011 1111, сделать предустановку 0011 1110), то просчитав эту единицу (отсчитав период), таймер сбросится и активируется выход ШИМ, как и положено. Короче говоря, получается, что нужно пересеч значение периода ШИМ, без этого первый импульс не генерируется. Или вставлять вышеуказанный костыль! Должно ли так быть ??? Если да, то получается, что нужно учитывать этот пропуск в программе. В даташите подобный пропуск оговаривается только для режим двойного счета вверх\вниз.
Хорошо было бы считать программатором версию контроллера и почитать по ней Data Sheet Errata. Там много про Power Control PWM сказано... В MPLAB редко вносятся исправления при выпуске новой ревизии контроллера.
А если, к примеру, мне нужно непрерывно синхронизировать ШИМ по какому-либо событию, начиная новый импульс именно с момента этого события. Как возможно это осуществить в этом случае??? Ведь просто сбросив таймер ШИМ, получим снова пропуск импульса и т.д.!!! Существует ли решение для такого случая, кроме указанного мной выше (предустановки таймера вычисленным значением, что не есть хорошо) или жертва одним пропуском неизбежна????
А что тут "не есть хорошо"? Установка таймера и его сброс ничем не отличаются, разве только количеством команд ассемблера. Одна или две для 8-разрядного таймера, либо две или четыре для 16-разрядного. Можно использовать Output Compare вместо обычного ШИМ, если синхронизирующий сигнал имеет место быть каждый период ШИМа.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения