MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки Цены
 Новости   Конференция   Как нас найти? 

Представляем новую линейку продуктов, поставляемых ООО "Микро-Чип":
Источники питания

Блоки  питания


 

Можно ли сделать ЦАП на PWM?

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Можно ли сделать ЦАП на PWM?
Автор: MIke (---.stup.ac.ru)
Дата:   05/12/2001 13:21

Можно ли сделать ЦАП на PWM? Если да, то как? Подключением к выходу PWM интегратора? А вопрос стабильности выходного напряжения тогда возникает...

С уважением,
Mike.


 
 Так это он и есть :)
Автор: jeff (195.151.39.---)
Дата:   06/12/2001 08:13

Интегратор, тобиш фильтр конечно нужен. Частоту PWM лучше взять как минимум в 2 раза выше чем МАХ нужная в вых. сигнале. Стабильность вых. напряжения зависит от стабильности питания пика, а также от нагрузки (не перегружай и все будет круто). А линейность PWM по сравнению с обычным ЦАП куда лучше.


 
 Аналог-ШИМ(PWM)
Автор: Анатолий (---.dialup.wplus.net)
Дата:   11/12/2001 18:46

Не подкинули бы чайнику программку по аналог-ШИМ(PWM) самую примитивную.


 
 Re: Аналог-ШИМ(PWM)
Автор: jeff (195.151.39.---)
Дата:   13/12/2001 09:04

Готовой проги нет, вот накидал следущее: по любому событию (прерыванию)увеличивается заполнение ШИМ, т.е. должна получиться "пила".
<pre>
title "PWM"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIST P=PIC16F877
include "P16F877.INC"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PredDivCCP equ .4 ; { .1, .4, .16 }
PeriodCCP equ .240
DutyCCP equ .140

if PredDivCCP == .1
#define T2CKPS 00h
else
if PredDivCCP == .4
#define T2CKPS 01h
else
if PredDivCCP == .16
#define T2CKPS 10h
else
error Expected: PredDivCCP = { .1 , .4 , .16 }
endif
endif
endif

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

cblock 70h ; purpose area 16 bytes for all banks
WTemp
StatusTemp
FSRTemp
TempTemp
PCLathTemp
endc

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PowerUp ORG 0000h ; processor reset vector
goto start

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Interrupt ORG 0004h ; interrupt vector location
movwf WTemp
swapf STATUS, w
movwf StatusTemp
movf PCLATH, w
movwf PCLathTemp
movf FSR, w
movwf FSRTemp
movf Temp, w
movwf TempTemp
;---------------------------
Bank_ 0
incf CCPR2L, f ; получаем пилу на PWM1
;---------------------------
movf TempTemp, w
movwf Temp
movf FSRTemp, w
movwf FSR
movf PCLathTemp, w
movwf PCLATH
swapf StatusTemp, w
movwf STATUS
swapf WTemp, f
swapf WTemp, w
retfie

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start

init_PORTs
Bank_ 1
movlw b'00010000' ; 4 = T0CKI
movlw TRISA
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
Bank_ 0
;clrf PORTA ; clered on POR
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
init_PWM
Bank_ 1
movlw PeriodCCP - 1 ; period
movwf PR2
Bank_ 0
movlw b'00000100' | T2CKPS ; ; TMR2_ON, Fosc/4 with PrescalerTMR2
movwf T2CON
movlw DutyCCP
movwf CCPR1L ; Duty PWM1
movlw b'00001100' ; PWM 1 on
movwf CCP1CON
init_interrupt
???????????????????????? ; инициализируй любое прерывание
bsf INTCON, GIE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Bank_ 0
BigLoop
goto BigLoop

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END ; directive 'end of program'
NoList
</pre>

З.Ы. Эту прогу не тестил.





Горячие темы на нашем форуме:
Отдел продаж: тел. (495) 223-2339 sales@microchip.ru   Skype:microchip-moscow
Rambler's Top100