![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#16 |
Đệ tử 1 túi
Tham gia ngày: Mar 2006
Bài gửi: 23
: |
![]() Hì hì..
Trong 2 tuần qua em cũng đã tìm được cách chạy PWM rồi. Đây là đoạn code cho PWM PWM_norm ;set PWM period=1000Hz=0.001s at 50%duty cycle ;Fosc=8Mhz and TMR2 prescale value=16 ;1. Set period for PWM=1000Hz ;PR2 = (PWM period)/(4*Tosc*TMR2 prescale value) - 1 ;PR2 = 0.001/[4 * (1/8)e-6 * 16) - 1 => PR2 = 124 movlw d'124' ;set period for PWM=1000Hz movwf PR2 ;2. Set duty cycle by writting CCPR1L register and CCPR1CON<5:4> bits ;PWM Duty Cycle = (CCPR1L:CCP1CON<5:4>)*Tosc*TMR2 Prescale Value ;CCPR1L:CCP1Con<5:4> = PWM Duty Cycle / (Tosc * TMR2 Prescale) ;PWM Duty Cycle = 50% of Period ;PWM Duty Cycle = 50% of 0.001 = 0.0005 ;CCPR1L:CCP1Con<5:4> = 0.0005 / [(1/8)e-6 * 16] = 250 ;=> CCPR1L:CCP1Con<5:4> = 0011111010 bcf CCP1CON, DC1B0 ;set bit 0 = 1 bsf CCP1CON, DC1B1 ;set bit 1 = 1 movlw b'00111110' ;set duty cycle and enable PWM movwf CCPR1L ;3. Make the CCP1 pin an output by clearing the TRISC<2> bit movlw b'11111011' ;set PORTC as an CCP1 andwf TRISC ;4. Set The TMR2 prescale value and enable TMR2 by writing to T2CON movlw b'00000111' ;set prescale = 1:16 and enable TIMER2 movwf T2CON return Vì hiện tại em đang làm project về con "line-following robot" nên mới dùng đến PWM để điều khiển tốc độ của con robot, do thấy lâu quá kô ai trả lời nên em tự đọc luôn. Hiện nay con robot của em đã chạy (mừng quá) cám ơn mọi người (đặc biệt là anh namqn) đã giúp em nhiều từ 1 người chẳng biết gì về PIC sau 1 tuần đã có thể lập trình PIC ở mức cản bản. Cám ơn mọi người nhiều lắm lắm ![]() |
![]() |
![]() |
|
|