RS232 motor control using ADC

Discussion in 'Embedded Systems and Microcontrollers' started by varunme, Aug 25, 2012.

  1. varunme

    Thread Starter Member

    Sep 29, 2011
    59
    0
    i wrote a code for adc with rs232 in mikroC , to control a stepper with feedback, here i just made dummy values just to toggle the port bits , but its not working as the condition is satisfied , what will be the problem ?


    Code ( (Unknown Language)):
    1.  
    2.  
    3.  
    4. unsigned char ch;                    //
    5. unsigned int adc_rd;                 // Declare variables
    6. char *text;                          //
    7. long tlong,ulong;
    8. char output[7];
    9. int i,rot;
    10. float ufloat,tfloat;
    11. int uint;
    12.  
    13.  
    14. void main() {
    15. CMCON |= 7;
    16.  
    17. ADCON1 = 0X04;
    18. ADCON1 = 0;
    19. TRISA = 0x04;
    20. ADCON1 = 0x80;
    21. TRISB =0;                       //
    22. PORTB=0x00;
    23.  
    24.  
    25. while (1) {
    26.  
    27.  
    28.         adc_rd = ADC_Read(2);        // A/D conversion. Pin RA2 is an input.
    29.         Lcd_Out(2,1,text);           // Write result in the second line
    30.         tlong = (long)adc_rd * 5000; // Convert the result in millivolts
    31.         tlong = tlong / 1023;        // 0..1023 -> 0-5000mV
    32.         ch = tlong / 1000;           // Extract volts (thousands of millivolts)
    33.                                      // from result
    34.  
    35.  
    36.           UART1_Init(9600);               // Initialize UART1 module at 9600 bps
    37.           Delay_ms(100);                  // Wait for UART 1module to stabilize
    38.           UART1_Write_Text("Start");
    39.           UART1_Write(13);
    40.           UART1_Write(10);
    41.  
    42.  
    43.                  
    44.                  
    45.          while (!UART1_Data_Ready());        // wait for UART character in buffer
    46.  
    47.         // Initialize string with all '\0'
    48.         for(i=0; i<7; i++){
    49.             output[i] = '\0';
    50.         }
    51.  
    52.         UART1_Read_Text(output, "m", 255);   // read input from uart
    53.      
    54.         ulong = atol(output);
    55.        
    56.        
    57.                     while(1)      {
    58.                    
    59.  
    60.            if ( ulong =! tlong )
    61.              {
    62.  
    63.                           if (ulong > tlong )
    64.                           { PORTB.f1=1;
    65.                           UART1_Write_Text("1");
    66.                           break;
    67.                           }
    68.                           else //(ulong < tlong )
    69.                          {PORTB.f1=0;
    70.                          PORTB.f2=1;
    71.                          UART1_Write_Text("2");
    72.                          break;
    73.                          }
    74.  
    75.  
    76.  
    77.            }
    78.             if ( ulong == tlong )
    79.             {
    80.             PORTB.f3=1;
    81.             UART1_Write_Text("3");
    82.             PORTB.f1=0;
    83.             PORTB.f2=1;
    84.             break;
    85.             }
    86.  
    87.           }
    88.           }
    89.  }        
    90.  
    91.  
    92.  
    93. [/i]
     
Loading...