sinusoidal pwm


Results 1 to 2 of 2

Thread: sinusoidal pwm

Threaded View

  1. #1
    Join Date
    Feb 2011
    Posts
    37

    Default sinusoidal pwm

    hellow,
    i'm trying to simulate this code on proteus isis but m getting nothing meaningful.My code compile succesfully...i need help..please
    Code:
    define OSC 20
    
    ;*****************VARIABLE DECLARATION******************************************
    wsave   VAR BYTE    $70     SYSTEM      ' alternate save location for W 
    wsave1  VAR BYTE    $A0     SYSTEM      ' location for W if in bank1
    wsave2  VAR BYTE    $120    SYSTEM      ' location for W if in bank2
    wsave3  VAR BYTE    $1A0    SYSTEM      ' location for W if in bank3
    STEPCOUNT var byte                      'Define stepcount as byte type variable
    stepcount = 256
    
    ;**************SETTING THE REGISTERS WITH APPROPIATE BIT DEFINITION************* 
    ADCON0 = %00000000
    ADCON1 = %00000000  ;all anolog output
    trisb = %11111111   ;define porta as input
    trisc = %11111011   ;make ccp1/portc.2 an output pin
    trisa = %11111111   ;define porta as input
    TMR2 = 16
    PR2 = 34           ;set for 36Khz HPWM(=72 steps*10 times*50hz)        
    CCP1CON = %000001100       ;set to pwm mode
    T2CON=%00000110           ;enable timer2 and set timer2 prescaler value of 1:4
    
    ;****************A sine lookup table in an array********************************
    sineval var byte[72]
    sineval[1] = 128      ;0 degree
    sineval[2] = 137      ;5 degree
    sineval[3] = 146
    sineval[4] = 154
    sineval[5] = 163
    sineval[6] = 171
    sineval[7] = 179
    sineval[8] = 187
    sineval[9] = 194
    sineval[10] = 200
    sineval[11] = 206
    sineval[12] = 212
    sineval[13] = 216
    sineval[14] = 220
    sineval[15] = 224
    sineval[16] = 227
    sineval[17] = 228
    sineval[18] = 229
    sineval[19] = 230     ;90 degree
    sineval[20] = 229
    sineval[21] = 228
    sineval[22] = 227
    sineval[23] = 224
    sineval[24] = 220
    sineval[25] = 216
    sineval[26] = 212
    sineval[27] = 206
    sineval[28] = 200
    sineval[29] = 194
    sineval[30] = 187
    sineval[31] = 179
    sineval[32] = 171
    sineval[33] = 163
    sineval[34] = 154
    sineval[35] = 146
    sineval[36] = 137
    sineval[37] = 128  ;180 degree
    sineval[38] = 119
    sineval[39] = 110
    sineval[40] = 102
    sineval[41] = 93
    sineval[42] = 85
    sineval[43] = 77
    sineval[44] = 69
    sineval[45] = 62
    sineval[46] = 56
    sineval[47] = 50
    sineval[48] = 44
    sineval[49] = 40
    sineval[50] = 36
    sineval[51] = 32
    sineval[52] = 29
    sineval[53] = 28
    sineval[54] = 26
    sineval[55] = 26
    sineval[56] = 26
    sineval[57] = 28
    sineval[58] = 29
    sineval[59] = 32
    sineval[60] = 36
    sineval[61] = 40
    sineval[62] = 44
    sineval[63] = 50
    sineval[64] = 56
    sineval[65] = 62
    sineval[66] = 69
    sineval[67] = 77
    sineval[68] = 85
    sineval[69] = 93
    sineval[70] = 102
    sineval[71] = 110
    sineval[72] =119
     
    timerone var word 
     
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
    
    ;********Define INT_Handler as ISR********************************************** 
    ASM
     
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler   TMR1_INT,   _sine,   ASM,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
    
    T1CON = $31    ; Prescaler = 8, TMR1ON          
    TMR1L = 255    
    TMR1H = 254
    @   INT_ENABLE  TMR1_INT     ; Enable Timer 1 Interrupts  
    timerone = $FA93               ;gives about 50 hz sine 
    Main:
            pause 5
            'if timerone = $F9FF then timerone = $FF00
     
    GOTO Main
     
    '---[TMR1_INT - interrupt handler]------------------------------------------
     
    sine:
        TMR1L = timerone.byte0
        TMR1H = timerone.byte1     
        CCPR1L = sineval[STEPCOUNT]>>1 
        stepcount = stepcount -1
        if stepcount = 0 then stepcount = 72
    @    INT_RETURN
    attached is the circuit and the simulation result done on proteus isis
    Attached Files Attached Files
    Last edited by bwaxing; - 1st May 2011 at 15:07. Reason: wrong attachment

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts