Half stepping stepper control help!!!

Discussion in 'Embedded Systems and Microcontrollers' started by sairyuva, Mar 14, 2010.

  1. sairyuva

    Thread Starter New Member

    Mar 9, 2010
    11
    0
    Here is my code: Doesn't work at isis simulation
    Code ( (Unknown Language)):
    1.  
    2. #define     step1 0x20    
    3. #define    step2   0x10  
    4. #define    step3     0x08
    5. #define    step4      0x04
    6.  int working, step_no;
    7.  
    8.     void step_lookup()
    9.     {
    10.         if(step_no==1)
    11.             working=step1;
    12.         if(step_no==2)
    13.             working=step1|step2;
    14.         if(step_no==3)
    15.             working=step2;
    16.         if(step_no==4)
    17.             working=step2|step3;
    18.         if(step_no==5)
    19.             working=step3;
    20.         if(step_no==6)
    21.             working=step3|step4;
    22.         if(step_no==7)
    23.             working=step4;
    24.         if(step_no==8)
    25.             working=step4|step1;
    26.     }
    27.    
    28.     void step_update()
    29.     {
    30.         step_no++;
    31.         if(step_no>8)
    32.             step_no=1;
    33.          
    34.         step_lookup();
    35.         PORTB = working;
    36.     }
    37.    
    38.     void tmr0_init()
    39.     {
    40.         ei();
    41.         T0CS = 0;
    42.         TMR0IE=1;
    43.         TMR0IF=0;
    44.         TMR0=50;
    45.         PEIE=1;
    46.     }
    47.    
    48.  
    49.    
    50.     void main()
    51.     {
    52.         tmr0_init();
    53.         TRISB=0x00;
    54.         PORTB=0x00;
    55.        
    56.         while(1)
    57.         {
    58.        
    59.         }    
    60.     }
    61.    
    62.         void interrupt isr(void)
    63.     {
    64.         if(TMR0IF==1)
    65.             step_update();
    66.         TMR0IF=0;
    67.         TMR0=50;
    68.     }


    Please tell me, whats wrong. Using PIC16f877a @ 11.0592MHz
     
    Last edited: Mar 15, 2010
  2. SgtWookie

    Expert

    Jul 17, 2007
    22,182
    1,728
    Just adding in CODE /CODE blocks

    Code ( (Unknown Language)):
    1. #define     step1 0x20    
    2. #define    step2   0x10  
    3. #define    step3     0x08
    4. #define    step4      0x04
    5.  int working, step_no;
    6.  
    7.     void step_lookup()
    8.     {
    9.         if(step_no==1)
    10.             working=step1;
    11.         if(step_no==2)
    12.             working=step1|step2;
    13.         if(step_no==3)
    14.             working=step2;
    15.         if(step_no==4)
    16.             working=step2|step3;
    17.         if(step_no==5)
    18.             working=step3;
    19.         if(step_no==6)
    20.             working=step3|step4;
    21.         if(step_no==7)
    22.             working=step4;
    23.         if(step_no==8)
    24.             working=step4|step1;
    25.     }
    26.    
    27.     void step_update()
    28.     {
    29.         step_no++;
    30.         if(step_no>8)
    31.             step_no=1;
    32.          
    33.         step_lookup();
    34.         PORTB = working;
    35.     }
    36.    
    37.     void tmr0_init()
    38.     {
    39.         ei();
    40.         T0CS = 0;
    41.         TMR0IE=1;
    42.         TMR0IF=0;
    43.         TMR0=50;
    44.         PEIE=1;
    45.     }
    46.    
    47.  
    48.    
    49.     void main()
    50.     {
    51.         tmr0_init();
    52.         TRISB=0x00;
    53.         PORTB=0x00;
    54.        
    55.         while(1)
    56.         {
    57.        
    58.         }    
    59.     }
    60.    
    61.         void interrupt isr(void)
    62.     {
    63.         if(TMR0IF==1)
    64.             step_update();
    65.         TMR0IF=0;
    66.         TMR0=50;
    67.     }
    68.  
     
Loading...