Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ГКЧ на ШИМ 18f452
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Fenolftalein
Доброго времени суток. Нужно сделать ГКЧ от 50 до 150кГц на 18f452. Использую ШИМ. Пересчитываю частоту в период, и соответственно изменяю время заполнения, что бы при любом периоде скважность была 50%. На частотах близких к 50кГц скважность 50%. С ростом частоты скважность почему-то увеличивается (примерно 80% на 150кГц), что для ГКЧ не есть хорошо. В моделях MPLAB и Proteus скважность выдерживается.
Инициализация ШИМ

Код
unsigned int imp;
PR2 = (char)(1000/((float)f*0.2) + 0.5) - 1;//4Tosc = 0.2мкс, предделитель не используется, f - частота в кГц
imp = 2*PR2 + 2; // длительность импульса 1/2 периода (CCPR1L:CCP1CON<5:4>) = 2[(PR2) + 1]
CCPR1L = (imp >> 2) & 0xFF; // старшие 8 бит
CCP1CONbits.DC1B0 = imp & 0x01;
CCP1CONbits.DC1B1 = (imp >> 1) & 0x01; // младшии 2 бита
xemul
Чесслово, не понял эквилибристики.
Код
PR2 = (char) (5000 / f - 1);
// для 50% достаточно
CCPR1L = PR2 >> 1;
CCP1CONbits.DC1B1 = PR2 & 1;
// а это при 50% можно сделать единожды
CCP1CONbits.DC1B0 = 0;
Fenolftalein
Цитата(xemul @ Aug 31 2011, 13:04) *
Чесслово, не понял эквилибристики.
Код
PR2 = (char) (5000 / f - 1);
// для 50% достаточно
CCPR1L = PR2 >> 1;
CCP1CONbits.DC1B1 = PR2 & 1;
// а это при 50% можно сделать единожды
CCP1CONbits.DC1B0 = 0;

Просто, что бы было понятно. Проблема исчезла после того как более внимательно выставил биты конфигурации. Как они влияли на скважность ШИМ так и не понял.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.