Hi every one
(1) Previous I thought that the problem of flat spot on my SPWM signal was due to the simulator(ISIS) but I was wrong because I implement it on the actual hardware using PIC16F877V1-V2 DEVELOPMENT BOARD board and DLIS40L oscilloscope but the problem still remain now I'm totally confused what cause that problem of flat spot to my wave form. I try to scale my look up table so that my dutycycle lie on the range of (0 to 4*199) but nothing was change to my signal
when viewed.
(2)ARE the ten bit look table is not working on 8bit chip like 16F877 0R 16F777 ? I think those values greater than 255 is one cause that problems
(3) I'm not clear on the WINPIC800V358 software parameter on the attachment.Code:define OSC 4 Wsave var byte $70system Wsave1 var byte $A0system Wsave2 var byte $120system Wsave3 var byte $1A0system STEPCOUNT var byte STEPCOUNT1 var byte LED1 VAR PORTB.1 STEPCOUNT = 0 'pointer for phase one in sinearray STEPCOUNT1 = 12 'pointer for phase two in sine array ADCON0 = %00000000 ADCON1 = %00000000 TRISB = %11111101 TRISC = %11111001 'PMW output for CCP1 AND CCP2 TRISA = %11111111 TMR2 = 0 PR2 = 199 'generate 5khz 'set for 18Khz HPWM CCP1CON = %00001100 'set CCP1 for PWM OPERATION CCP2CON = %00001100 'set CCP2 for PWM OPERATION T2CON = %00000100 'TIMER2ON and prescale of 1:1 sineval var word[36] sineval[0] = 512 sineval[1] = 556 sineval[2] = 599 sineval[3] = 640 sineval[4] = 676 sineval[5] = 707 sineval[6] = 733 sineval[7] = 752 sineval[8] = 763 sineval[9] = 767 sineval[10] =763 sineval[11] =752 sineval[12] =733 sineval[13] =707 sineval[14] =676 sineval[15] =640 sineval[16] =599 sineval[17] =556 sineval[18] =512 sineval[19] =468 sineval[20] =425 sineval[21] =385 sineval[22] =348 sineval[23] =317 sineval[24] =291 sineval[25] =272 sineval[26] =261 sineval[27] =257 sineval[28] =261 sineval[29] =272 sineval[30] = 291 sineval[31] = 317 sineval[32] = 348 sineval[33] = 385 sineval[34] = 425 sineval[35] = 468 timerone var word Temp var byte Temp1 var byte INCLUDE "DT_INTS-14.bas" ; Base Interrupt System emp INCLUDE "ReEnterPBP.bas" ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler TMR1_INT, _sine, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM T1CON = 000001 ; Prescaler = 1;1, TMR1 ON @ INT_ENABLE TMR1_INT ; Enable Timer 1 Interrupts timerone = 65080' gives1818hz nterruptfrequency or about 50 htz sine Main: PAUSE 5 GOTO Main '---[TMR1_INT - interrupt handler]------------------------------------------ sine: T1CON = 000000 TMR1L = timerone.byte0 TMR1H = timerone.byte1 T1CON = 000001 TeMP = sineval[STEPCOUNT] CCP1CON.4 = Temp.0 ' bit 0 CCP1CON.5 = Temp.1 ' bit 1 CCPR1L = Temp >>2 'Bit 2-7 TeMP1 = sineval[STEPCOUNT1] CCP2CON.4 = Temp1.0 ' bit 0 CCP2CON.5 = Temp1.1 ' bit 1 CCPR2L = Temp1 >>2 'Bit 2-7 TOGGLE LED1 stepcount = stepcount +1 stepcount1 = stepcount1 +1 if stepcount =36 then stepcount =0 if stepcount1 =36 then stepcount1 =0 @ INT_RETURN
Any one can help me to solve these problems
Thankx




Bookmarks