Hi HenrikOlsson
thankx for your coments and Idea you gave me on the code I posted last time which make my output to be some how clear. But is not quiet clear. here are some challenges I faced again
(1) The ouput does not apper smoth. I tttach the output as seen from ISIS and code.
(2) I try to write a code so that I can measure if the interrupt frequence is 1800hz.Code:STEPCOUNT var byte STEPCOUNT1 var byte STEPCOUNT = 0 'pointer for phase one in sinearray STEPCOUNT1 = 12 'pointer for phase two in sine array ADCON0 = %00000000 ADCON1 = %00000000 TRISB = %11111001 TRISC = %11111001 'PMW output for CCP1 AND CCP2 TRISA = %11111111 TMR2 = 117 PR2 = 55 '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] = 128 sineval[1] = 150 sineval[2] = 171 sineval[3] = 191 sineval[4] = 209 sineval[5] = 225 sineval[6] = 238 sineval[7] = 247 sineval[8] = 253 sineval[9] = 255 sineval[10] = 253 sineval[11] = 247 sineval[12] = 238 sineval[13] = 225 sineval[14] = 209 sineval[15] = 191 sineval[16] = 171 sineval[17] = 150 sineval[18] = 128 sineval[19] = 105 sineval[20] = 84 sineval[21] = 64 sineval[22] = 46 sineval[23] = 30 sineval[24] = 17 sineval[25] = 8 sineval[26] = 2 sineval[27] = 0 sineval[28] = 2 sineval[29] = 8 sineval[30] = 17 sineval[31] = 30 sineval[32] = 46 sineval[33] = 64 sineval[34] = 84 sineval[35] = 105 timerone var word Temp var byte Temp1 var byte INCLUDE "DT_INTS-14.bas" ; Base Interrupt System emp 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 = 64980 ;gives 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 = Temp.0 ' bit 0 CCP2CON.5 = Temp.1 ' bit 1 CCPR2L = Temp >>2 'Bit 2-7 stepcount = stepcount +1 stepcount1 = stepcount1 +1 if stepcount = 36 then stepcount =0 if stepcount1 = 36 then stepcount1 =12 @ INT_RETURN
When I start learning timer in the previous days I passed I cross the link http://www.microcontrollerboard.com/...-tutorial.html there is formural for calcalating a numeric value(count) to be placed to obtain the desired output frequency.
count=fclk/(4*prescale*(65536-TMR1)*fout
where for me
fout=1800hz, prescale 1, TMRI=64980 and fclk=4MHz
gives count = 1 ohh! here I'm confusing how should I proceed since is very small count I cant use it.
can you help which count should I use so I can measure my interrupt frequecy
thankx




Bookmarks