564.00K
Category: electronicselectronics

Цифро - аналоговый преобразователь (ЦАП) dsPIC

1.

Цифро-аналоговый преобразователь (ЦАП) dsPIC

2.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ

3.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
OCM<2:0>: биты выбора режима
111 = ШИМ режим с защитой от ошибки.
110 = ШИМ режим без защиты от ошибки.
OCTSEL: бит
выбора
таймера
Сравнения

4.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
OCM<2:0>: биты выбора режима
111 = ШИМ режим с защитой от ошибки.
110 = ШИМ режим без защиты от ошибки.
OCTSEL: бит
выбора
таймера
Сравнения
Рабочий цикл ШИМ определяется регистром сравнения OCxRS

5.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
1. Запись значения в регистр OCxR для первого цикла PWM (пишется перед включением режима PWM).
2. Запись значения в регистр OCxRS для второго цикла PWM.
3. Включение режима PWM,
4. Включается таймер и постепенно увеличиваться.
5. По совпадению вывод OCx выставляется в низкий уровень.
6. значение OCxRS загружается в регистр OCxR. Контакт OCx управляется высокий уровень.
7. Запись значения в регистр OCxRS для третьего цикла PWM.

6.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
// Initialize Output Compare Module
OC1CONbits.OCM = 0b000; // выключение модуля Output Compare
OC1R = 100; // Запись цикла первого импульса PWM
OC1RS = 200; // Запись цикла второго импульса PWM
OC1CONbits.OCTSEL = 0; // выбор Timer 2
OC1CONbits.OCM = 0b110; // выбор модуля Output Compare
T2CONbits.TON = 0; // Disable Timer
T2CONbits.TCS = 0; // выбор внутренний источник тактовых сигналов
T2CONbits.TGATE = 0; // запрет Gated Timer mode
T2CONbits.TCKPS = 0b00; // выбор предделителя 1:1 таймера
TMR2 = 0x00; // очистка таймера
PR2 = 500; // загрузка периода
IPC1bits.T2IP = 0x01; // задание приоритета прерывания Timer 2
IFS0bits.T2IF = 0; // очистка флага прерывания таймераTimer 2
IEC0bits.T2IE = 1; // разрешение таймера прерывания Timer 2
T2CONbits.TON = 1; // запуск Timer

7.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
/* Пример кода обработчика
прерывания для Timer 2 */
void __attribute__((__interrupt__))
_T2Interrupt( void )
{
OC1RS = 300; // Write Duty Cycle value for
next PWM cycle
IFS0bits.T2IF = 0; // очистка флага
прерывания таймераTimer 2
}

8.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
Режим ШИМ
Воспроизведение аудио сигнала
DWORD
"RIFF"
DWORD
DWORD
"RIFF"
Размер
DWORD
Размер
"WAVE" "fmt "
Данные
Данные
Размер Формат Фрагмент "data"
данных
"data"
Размер Звуковые
данные

9.

Цифро-аналоговый преобразователь (ЦАП) dsPIC
WAV
English     Русский Rules