Hi HenrikOlsson
1) Can't help without seeing the values.
Here is the values
Code:
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 byte[36]
sineval[0] = 512
sineval[1] = 583
sineval[2] = 652
sineval[3] = 717
sineval[4] = 775
sineval[5] = 825
sineval[6] = 866
sineval[7] = 896
sineval[8] = 915
sineval[9] = 921
sineval[10] =915
sineval[11] =896
sineval[12] =866
sineval[13] =825
sineval[14] =775
sineval[15] =716
sineval[16] =652
sineval[17] =583
sineval[18] =512
sineval[19] = 441
sineval[20] = 372
sineval[21] = 308
sineval[22] = 249
sineval[23] = 199
sineval[24] = 158
sineval[25] = 128
sineval[26] = 109
sineval[27] = 103
sineval[28] = 109
sineval[29] = 128
sineval[30] = 158
sineval[31] = 199
sineval[32] = 249
sineval[33] = 308
sineval[34] = 372
sineval[35] = 441
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, ASM, 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