![]() |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Jun 2005
Bài gửi: 15
: |
EPWM trong Pic18f458 !
Em dùng CCS để lập trình full-bridge với khối EPWM trong PIC, nhưng không chạy ! Đại ca nào làm chạy rồi chỉ cho em phát.
Cảm ơn. |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Jun 2005
Bài gửi: 15
: |
Em dung cac ham nhu sau:
setup_timer_2(); setup_ccp1(CCP_PWM1_H_H) hoac "CCP_PWM_FULL_BRIDGE" set_pwm1_duty(400) Em dung cac ham nay cho pwm binh thuong thi chay ngon, nhung cho epwm thi chiu. Mong bac giup em phat, em rat khoai cai epwm cua no, do phai them mach ngoai. |
![]() |
![]() |
![]() |
#4 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Oct 2006
Bài gửi: 2
: |
Anh Namqn oi! anh co ctrinh mau CCS nao viet cho con AD 16bit (AD7715) ko?No co ctr mau trong CCS, em viet theo no ma ko chay?
|
![]() |
![]() |
![]() |
#6 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 1 túi
Tham gia ngày: Jun 2005
Bài gửi: 15
: |
To Namqn, em đã thử với ECCP2 vẫn chẳng thấy tín hiệu ra cả, anh có thời gian xem hộ em phát. Chứ em thử hết các kiểu trong CCS rồi, vì mỗi EPWM mà phải học thêm phần mền biên dịch khác thì cũng mệt.
|
![]() |
![]() |
![]() |
#8 | |
Trưởng lão PIC bang
|
Trích:
Code:
TRISD = TRISD Or 0xf0 PR2 = 0x80 ECCPR1L = 0x40 ECCP1CON = 0x4c PIR1.TMR2IF = 0 T2CON = T2CON And 0xfc T2CON.TMR2ON = 1 While PIR1.TMR2IF = 0 Wend TRISD = TRISD And 0x0f loop: Goto loop 'loop forever
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 1 túi
Tham gia ngày: May 2006
Bài gửi: 25
: |
Anh Nam a , day la ctr cua em, em hien thi tren led 7 doan, phan hien thi ko co gi , chan cua ad7715 em noi chan nhu trong huong dan. day la code:
Code:
#include <16f877.h> #include <defs_16f877A.h> //#include <AD7715.c> //#device *=16 ADC=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT//HS,NOWDT,NOLVP,NOPUT, NOCPD, NOWRT, NOBROWNOUT, NOPROTECT //NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=11059200) // Su dung Fuse nay thi co nhieu , ko biet tai sao? #use fast_io(b) #use fast_io(d) #use fast_io(c) int8 const BCD2LED[]={ 0x41, 0xED, 0x54, 0xC4, 0xE8,\ 0xC2, 0x42, 0xE5, 0x40, 0xC0, }; int8 COUNT1 ,COUNT2; int16 COUNTX,T1,T2; // Bien trong ngat int16 BUFF[4], Y0, Y1; // Bo dem de hien thi so tat hay khong int8 BCD[4]; int16 value; //-------------------------------------------------------------// #define LED1 RB4 // =0 thi LED sang #define LED2 RB5 #define LED3 RB6 #define LED4 RB7 //----------- #define ADC_CS RC7 // Noi dat GND #define ADC_RESET RC6 // Noi VCC #define ADC_DRDY RC2 #define ADC_DI RC4 #define ADC_DO RC5 #define ADC_CLK RC3 Void LamTuoi() { if(COUNT1 >=4) {COUNT1 = 0; } PORTB = 0xf0; PORTD = BCD2LED[BCD[COUNT1]]; // CHOT*/ switch (COUNT1) { case 0: LED1 =0; //bat led1 break; case 1: LED2 =0; //bat led2 break; case 2: LED3 =0; //bat led3 break; case 3: LED4 =0; //bat led4 break; } COUNT1 ++; } #int_timer0 void ngat() { Set_timer0(0); COUNT2 ++; if (Count2 == 10){ Count2 = 0; LamTuoi(); //COUNTX = read_adc(); } } void InBCD(int8 value4,int8 value3,int8 value2,int8 value1) { BCD[0]= value4; BCD[1]= value3; BCD[2]= value2; BCD[3]= value1; } void LedView( int16 Value) // DUA SO VAO DE HIEN THI { BUFF[3] = Value/1000; Y0 = Value%1000; BUFF[2] = Y0/100; Y1 = Y0%100; BUFF[1] = Y1/10; BUFF[0] = Y1%10; InBCD(BUFF[3],BUFF[2],BUFF[1],BUFF[0]); } void write_adc_byte(Byte data); adc_init() { ADC_RESET = 0; ADC_CLK =1; ADC_CS =1; //Set low to AD7715 chip select low pin ADC_RESET =1; //Set high to AD7715 reset low pin delay_ms(30); write_adc_byte( 0x12 ); //Communications Register write_adc_byte( 0x62 ); //Setup Register info here } void write_adc_byte(BYTE data) { int8 i; ADC_CS =0; for(i=1;i<=8;++i) { ADC_CLK =0; output_bit(PIN_C4,shift_left(&data,1,0)); // Output the MSB of data to // DI and at the same time shift 0 into the LSB of data ADC_CLK =1; } ADC_CS =1; } int16 read_adc_word() { int8 i; BYTE data; ADC_CS =0; for(i=1;i<=16;++i) { ADC_CLK =0; ADC_CLK =1; shift_left(&data,2,input(PIN_C5)); } ADC_CS =1; return data; } int16 read_adc_value() { int16 value; //long mac dinh kieu int16 while ( input(PIN_C2) ); while ( !input(PIN_C2) ); while ( input(PIN_C2) ); write_adc_byte(0x3a); value=read_adc_word(); // return value; } void KhoiTao() { set_tris_b(0b00001111); // 1 Dau vao =0 la dau ra set_tris_d(0); // ra set_tris_c(0b11111111); enable_interrupts(global); //enable_interrupts(int_ext); enable_interrupts(int_timer0); Setup_timer_0(RTCC_INTERNAL| RTCC_DIV_4); Set_timer0(0) ; //vao Value=0; Delay_ms(10); } //------------------------------------------------------------- void main() { Khoitao(); adc_init(); ledview(Value); Lamtuoi(); while (1) { read_adc_value() ; ledview(Value); Lamtuoi(); } } thay đổi nội dung bởi: namqn, 05-01-2007 lúc 09:34 PM. |
![]() |
![]() |
![]() |
#10 |
Đệ tử 1 túi
Tham gia ngày: May 2006
Bài gửi: 25
: |
Anh xem cho em tai sao lai ko chay nhe! Em nghi chi can trong ctr chinh goi ham Read_adc_value(), sau do hien thi kq value la ok, em lam the sao no ko chay? anh xem ho em nhe! thank!
|
![]() |
![]() |
![]() |
#11 | |
Trưởng lão PIC bang
|
Trích:
Chương trình con read_adc_value() dùng biến cục bộ value để lưu giá trị trả về, sau đó trả về bằng lệnh return. Bạn lại chú thích lệnh return đó, do đó chương trình không thực hiện đúng ý đồ là lẽ đương nhiên. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#12 |
Đệ tử 1 túi
Tham gia ngày: May 2006
Bài gửi: 25
: |
Cam on anh Nam nhieu! Ve nha em se thu lai! co gi em hoi anh tiep nhe
|
![]() |
![]() |
![]() |
#13 | |
Nhập môn đệ tử
Tham gia ngày: Aug 2006
Bài gửi: 9
: |
ADC 8bit
Trích:
Code:
#include <16f877a.h> #device *=16 ADC=8 #use delay(clock=4000000) #byte portb=0x06 #fuses nolvp,nowdt,hs,noprotect int8 ADC_delay; void hienthi() { set_adc_channel(0); delay_ms(5); ADC_delay=read_adc(); portb=0x00; delay_ms(ADC_delay); portb=0xff; delay_ms(ADC_delay); } void main() { setup_adc_ports(AN0_AN1_AN3); setup_adc(adc_clock_internal); set_adc_channel(0); while(1); { hienthi(); } } thay đổi nội dung bởi: namqn, 09-01-2007 lúc 07:00 PM. |
|
![]() |
![]() |
![]() |
#14 |
Đệ tử 1 túi
Tham gia ngày: May 2006
Bài gửi: 25
: |
Ban thu ctrinh nay, da co trong Pic viet Nam: Tu do phat trien len nhe!
Code:
#include <16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP //Ðây là 1 ví du nho ve ADC,chân RA0 lay tín hieu Analog tu bien tro #device 16F877*=16 ADC=8 //và xuat giá tri se bien doi tuong ung qua tám led noi o portB #use delay(clock=10000000) Int8 adc; main() { setup_adc(adc_clock_internal); setup_adc_ports(AN0); set_adc_channel(0); delay_ms(10); while(true) { adc=read_adc(); output_B(adc); } } thay đổi nội dung bởi: namqn, 09-01-2007 lúc 07:01 PM. |
![]() |
![]() |
![]() |
|
|