please help me that convert c code to arduino IDE code

10 views
Skip to first unread message

bahmani iman

unread,
Sep 26, 2013, 5:00:38 AM9/26/13
to arduino-group...@googlegroups.com
#include <main.h>

#define RS_tam_max_buffer_in  15     //  tamanho mلximo de um comando

#define motor1_1  PIN_D0
#define motor1_2  PIN_D1
#define motor1_3  PIN_D2
#define motor1_4  PIN_D3

#define motor2_1  PIN_D4
#define motor2_2  PIN_D5
#define motor2_3  PIN_D6
#define motor2_4  PIN_D7

#define motor3_1  PIN_C0
#define motor3_2  PIN_C1
#define motor3_3  PIN_C2
#define motor3_4  PIN_C3


void incrementa_motor1(void);
void decrementa_motor1(void);
void desliga_motor1(void);

void incrementa_motor2(void);
void decrementa_motor2(void);
void desliga_motor2(void);

void incrementa_motor3(void);
void decrementa_motor3(void);
void desliga_motor3(void);

void limpa_buffer(void);



BYTE    RS_serial;     //  byte recebido da serial
signed int  m1,m2,m3;
unsigned   delay_m1, delay_m2, delay_m3;
int motor_passo1, motor_passo2, motor_passo3;
int conta_timer1, conta_timer2, conta_timer3;
unsigned int envio1,envio2;
int1 rs_inicio;
unsigned  calc_temp;


#int_RDA
void  RDA_isr(void) 
{
   RS_serial = getc()-' ';          //lê byte da serial
   
   if ( (RS_serial & 0b00100000) ) 
   { 
      envio1 = RS_serial;
      rs_inicio = true;
   } 
   else
   {  
      envio2 = RS_serial;
      if ( rs_inicio )
        {
           rs_inicio = false;
           calc_temp = (envio1 >> 2) & 0b00000011;  
           if ( envio1 & 0b00010000 ) {        
                //  ré                               
                m1 += calc_temp*4;
                m2 += calc_temp*4;
           }else{
               // avante
                m1 -= calc_temp*4;
                m2 -= calc_temp*4;
           };
 
 
           calc_temp = (envio2 >> 2) & 0b00000011;  
           if ( envio2 & 0b00010000 ) {        
                //  esquerda                               
                m1 += calc_temp*4;
                m2 -= calc_temp*4;
           }else{
               // direita
                m1 -= calc_temp*4;
                m2 += calc_temp*4;
           };
 
 
           calc_temp = envio2 & 0b00000011;  
           if ( envio1 & 0b0000010 ) {        
                // sobe                               
                m3 += calc_temp*15;
           }else{
               // desce
                m3 -= calc_temp*15;
           };                                
        }
   }
   clear_interrupt(INT_EXT);    //limpa interrupçمo de serial
}



#int_TIMER1
void  TIMER1_isr(void)  
{   
      if (conta_timer1 < 6){
          conta_timer1++;
          if ( conta_timer1 == 11) desliga_motor1();  
      } 
      
      if (conta_timer2 < 6){
          conta_timer2++;
          if ( conta_timer2 == 11) desliga_motor2();  
      } 
      
      if (conta_timer3 < 3){
          conta_timer3++;
          if ( conta_timer3 == 11) desliga_motor3();  
      }       
      
      if ((conta_timer1 > 10)&&(conta_timer2 > 10)&&(conta_timer3 > 10) ){
          disable_interrupts(INT_TIMER1); 
      }
}


void main()
{
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   m1=0;
   m2=0;
   m3=0;
   delay_m1=1;
   delay_m2=1;
   delay_m3=1;
   rs_inicio = false;

    while(true){
                
        if ( delay_m1--  == 0){
             delay_m1 = 25;
             if (m1 > 0 ) { m1--; incrementa_motor1(); } else  if (m1 < 0 ) { m1++; decrementa_motor1(); };
        }   
        
        if ( delay_m2--  == 0){
             delay_m2 = 25;        
             if (m2 > 0 ) { m2--; incrementa_motor2(); } else  if (m2 < 0 ) { m2++; decrementa_motor2(); };                
        }  
 
 
        if ( delay_m3--  == 0){
              delay_m3 = 5;
              if (m3 > 0 ) { m3--; incrementa_motor3(); } else  if (m3 < 0 ) { m3++; decrementa_motor3(); };  
        }
            
        delay_ms(2);   
         
    };    
}


void desliga_motor1(void){
     conta_timer1=11;
     output_low(motor1_1);
     output_low(motor1_2);
     output_low(motor1_3);
     output_low(motor1_4);
}

void desliga_motor2(void){
     conta_timer2=11;
     output_low(motor2_1);
     output_low(motor2_2);
     output_low(motor2_3);
     output_low(motor2_4);
}

void desliga_motor3(void){
     conta_timer3=11;
     output_low(motor3_1);
     output_low(motor3_2);
     output_low(motor3_3);
     output_low(motor3_4);
}



void decrementa_motor1(void){   
      disable_interrupts(INT_TIMER1);
      conta_timer1=0;
      motor_passo1--;            
      if (motor_passo1 ==0) { motor_passo1 = 4;};
      
      switch(motor_passo1)
      {
         case 1 :         
          output_high(motor1_1);
          output_high(motor1_2);
          output_low(motor1_3);
          output_low(motor1_4);         
         break;
         
         case 2 :
          output_low(motor1_1);
          output_high(motor1_2);
          output_high(motor1_3);
          output_low(motor1_4);           
         break;
         
         case 3 :
          output_low(motor1_1);
          output_low(motor1_2);
          output_high(motor1_3);
          output_high(motor1_4);            
         break;
         
         case 4 :
          output_high(motor1_1);
          output_low(motor1_2);
          output_low(motor1_3);
          output_high(motor1_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);     
}

void decrementa_motor2(void){      
      disable_interrupts(INT_TIMER1);
      conta_timer2=0;
      motor_passo2--;            
      if (motor_passo2 ==0) { motor_passo2 = 4;};
      
      switch(motor_passo2)
      {
         case 1 :         
          output_high(motor2_1);
          output_high(motor2_2);
          output_low(motor2_3);
          output_low(motor2_4);         
         break;
         
         case 2 :
          output_low(motor2_1);
          output_high(motor2_2);
          output_high(motor2_3);
          output_low(motor2_4);           
         break;
         
         case 3 :
          output_low(motor2_1);
          output_low(motor2_2);
          output_high(motor2_3);
          output_high(motor2_4);            
         break;
         
         case 4 :
          output_high(motor2_1);
          output_low(motor2_2);
          output_low(motor2_3);
          output_high(motor2_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);
}

void decrementa_motor3(void){     
      disable_interrupts(INT_TIMER1);
      conta_timer3=0;
      motor_passo3--;            
      if (motor_passo3 ==0) { motor_passo3 = 4;};
      
      switch(motor_passo3)
      {
         case 1 :         
          output_high(motor3_1);
          output_low(motor3_2);
          output_low(motor3_3);
          output_low(motor3_4);         
         break;
         
         case 2 :
          output_low(motor3_1);
          output_high(motor3_2);
          output_low(motor3_3);
          output_low(motor3_4);           
         break;
         
         case 3 :
          output_low(motor3_1);
          output_low(motor3_2);
          output_high(motor3_3);
          output_low(motor3_4);            
         break;
         
         case 4 :
          output_low(motor3_1);
          output_low(motor3_2);
          output_low(motor3_3);
          output_high(motor3_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);
}

void incrementa_motor1(void){    
      disable_interrupts(INT_TIMER1);
      conta_timer1=0;
      motor_passo1++;
      if (motor_passo1 ==5) { motor_passo1 = 1;};

      switch(motor_passo1)
      {
         case 1 :         
          output_high(motor1_1);
          output_high(motor1_2);
          output_low(motor1_3);
          output_low(motor1_4);         
         break;
         
         case 2 :
          output_low(motor1_1);
          output_high(motor1_2);
          output_high(motor1_3);
          output_low(motor1_4);           
         break;
         
         case 3 :
          output_low(motor1_1);
          output_low(motor1_2);
          output_high(motor1_3);
          output_high(motor1_4);            
         break;
         
         case 4 :
          output_high(motor1_1);
          output_low(motor1_2);
          output_low(motor1_3);
          output_high(motor1_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);
}

void incrementa_motor2(void){  
      disable_interrupts(INT_TIMER1);
      conta_timer2=0;
      motor_passo2++;
      if (motor_passo2 ==5) { motor_passo2 = 1;};
      
      switch(motor_passo2)
      {
         case 1 :         
          output_high(motor2_1);
          output_high(motor2_2);
          output_low(motor2_3);
          output_low(motor2_4);         
         break;
         
         case 2 :
          output_low(motor2_1);
          output_high(motor2_2);
          output_high(motor2_3);
          output_low(motor2_4);           
         break;
         
         case 3 :
          output_low(motor2_1);
          output_low(motor2_2);
          output_high(motor2_3);
          output_high(motor2_4);            
         break;
         
         case 4 :
          output_high(motor2_1);
          output_low(motor2_2);
          output_low(motor2_3);
          output_high(motor2_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);
}

void incrementa_motor3(void){   
      disable_interrupts(INT_TIMER1);
      conta_timer3=0;
      motor_passo3++;
      if (motor_passo3 ==5) { motor_passo3 = 1;};
      
      switch(motor_passo3)
      {
         case 1 :         
          output_high(motor3_1);
          output_low(motor3_2);
          output_low(motor3_3);
          output_low(motor3_4);         
         break;
         
         case 2 :
          output_low(motor3_1);
          output_high(motor3_2);
          output_low(motor3_3);
          output_low(motor3_4);           
         break;
         
         case 3 :
          output_low(motor3_1);
          output_low(motor3_2);
          output_high(motor3_3);
          output_low(motor3_4);            
         break;
         
         case 4 :
          output_low(motor3_1);
          output_low(motor3_2);
          output_low(motor3_3);
          output_high(motor3_4);            
         break;     
      }
      enable_interrupts(INT_TIMER1);
}


void limpa_buffer(void){
           RS_serial = 0;
           envio1 = 0;
           envio2 = 0;
}

Reply all
Reply to author
Forward
0 new messages