Hi to all
I tried to modify the code according to Darrel Taylor and HenrikOlsson comments but the problem still exits, let me put in real hardware and see what happen.
And here is modified code but the output is still like that posted in the previous post.
Thanks.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 'stop the timer TMR1L = timerone.byte0 'reload the timer TMR1H = timerone.byte1 T1CON = 000001 ' start the timer 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




Bookmarks