PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   18F4331 và modul PWM (http://www.picvietnam.com/forum/showthread.php?t=2277)

jean 20-04-2008 06:39 PM

18F4331 và modul PWM
 
Khi Khai báo setup_power_pwm_pins(PWM_ODD_ON,PWM_OFF,PWM_OFF,PW M_OFF) thì chân RB1 sẽ xuất xung. Không biết ta có thể sử dụng chân RB0 như 1 chân I/O không? Khi tôi làm mạch thực tế thì nếu sử dụng chân RB0 như 1 chân I/O thì tín hiệu PWM trên chân RB1 bị ảnh hưởng, không giống với giá trị thiết lập trong phần mềm.

namqn 21-04-2008 12:15 AM

Bạn chưa cho biết từ cấu hình CONFIG3L được thiết lập ra sao. Bạn có biết silicon revision của chip và đã đọc các silicon errata chưa?

Thân,

tamrua 10-05-2008 11:01 PM

mình đang viết 18F4431 điều khiển động cơ dùng hai kênh PWM0, PWM1. trong mạch công suất có dùng 2 con IR2148, có huynh nào đã làm rồi xin giúp mình với(examplex), mình đang trong tình trạng nghiêng cứu, cảm trước. thân chào

namqn 12-05-2008 12:51 AM

Trích:

Nguyên văn bởi tamrua (Post 16110)
mình đang viết 18F4431 điều khiển động cơ dùng hai kênh PWM0, PWM1. trong mạch công suất có dùng 2 con IR2148, có huynh nào đã làm rồi xin giúp mình với(examplex), mình đang trong tình trạng nghiêng cứu, cảm trước. thân chào

Nếu chưa làm thì chắc là không giúp được cho bạn phải không.

Thân,

Macintosh 12-05-2008 08:30 PM

to jean:
chú ý phần thiết lập overide nữa.mình vừa dùng 4331 với 4 0DD channel (1,3,5,7)điều xung 4 dộng cơ DC.nên có kinh nghiệm chút chút.hy vọng giúp bạn được.
Mình đang ở wan net nên ko gửi bạn phần thiết lập Power PWM của mình được.hôm nào nhé!

anh_gioi 16-05-2008 12:05 AM

em dùng PIC 18F4431 dùng điều xung khai báo như thế này có được ko các bác??
Trích:

#include "C:\Documents and Settings\anh gioi\Desktop\pic\PIC18F\pwm01\pwm01.h"


void main()
{
int8 i;

setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_16,121,1);
setup_ccp1(CCP_PWM);

for(i=0;i<1024;i++)
{
set_pwm1_duty(i);
}
for(i=1023;i>1;i--)
{
set_pwm1_duty(i);
}

}

trong file .h
Trích:


#include <18F4431.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPROTECT //Code not protected from reading
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES BROWNOUT //Reset when brownout detected
#FUSES BORV27 //Brownout reset at 2.7V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOWINEN //WDT Timer Window Disabled
#FUSES T1LOWPOWER //Timer1 low power operation when in sleep
#FUSES HPOL_HIGH //High-Side Transistors Polarity is Active-High (PWM 1,3,5 and 7)
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES LPOL_HIGH //Low-Side Transistors Polarity is Active-High (PWM 0,2,4 and 6)
#FUSES PWMPIN //PWM outputs disabled upon Reset
#FUSES MCLR //Master Clear pin enabled
#FUSES FLTAC1 //FLTA input is multiplexed with RC1
#FUSES SSP_RC //SCK/SCL=RC5, SDA/SDI=RC4, SDO=RC7
//#FUSES ER_IO //External resistor osc

#use delay(clock=8000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


khi nạp vào thì nó im de.
đây là đoạn mã cho con PIC 16F em cho sang con 18F nhưng nó không chạy.
cho em hỏi tiếp: em muốn dùng tất cả các chân PWM của PIC 18F thì em phải khai báo như thế nào ạ?
(nếu có đoạn code ví dụ thì tốt quá).
thank very much

namqn 16-05-2008 05:40 AM

Tôi không hiểu bạn nói "im de" là ngụ ý gì.

Theo tài liệu của CCS C, int8 là kiểu dữ liệu 8-bit. Liệu một số 8-bit có khi nào mang giá trị bằng hay lớn hơn 1024 hay không? Liệu chương trình của bạn có thoát khỏi vòng lặp for thứ nhất hay không?

Mà code của bạn cứ thay đổi duty cycle liên tục như thế thì ở chân CCP1 có tín hiệu kiểu gì? Bạn thử với 1 giá trị duty cycle không đổi trước đã, rồi sau đó mới thay đổi duty cycle, mà nên thay đổi chậm thôi để còn theo dõi bằng mắt thường (đo giá trị trung bình VOM chẳng hạn).

Thân,


Múi giờ GMT. Hiện tại là 07:01 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam