![]()  | 
| 
	 | 
| 		
			
			 | 
		#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 | |
| 
			
			
			
			 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.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#13 | 
| 
			
			
			
			 Đệ 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 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#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.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
![]()  | 
	
	
		
  | 
	
		
  |