Hola a todos, estoy atascado en un problema de manejo de datos, uso el dspic30f2010, el modulo USART tanto en RX como en TX y un motor dc; desde pc envio tres caracteres que los trato como hexadecimales, y cada caracter me indica una tarea a realizar, por ejemplo al enviar desde pc al pic la secuencia XXX, los caracteres los trato como:
- el 1er 'X' es un comando de control y no necesito su valor numérico
- el 2do caracter 'X' me indica el angulo de giro del motor , este caracter tiene el rango desde 0 a F (hexadecimal)
- el 3er caracter 'X' me indica la velocidad PWM del motor, también va de 0-F
los últimos 2 caracteres me representan cantidades variables, es decir, por ejemplo si escribo(o envío) 'A8F', voy a mandar girar a la izquierda(caracter A) 200°(caracter

y a un pwm del 100%(el caracter F)
Si escribo 'BF7' B:derecha, F:360° y 7:50% pwm y así de la misma manera para otros caracteres hexadecimales.
El problema que tengo es que necesito el valor númerico de esos caracteres, por ejemplo si el PIC recibe 'BF7', el valor de F es 15 en decimal y trabajo con ese valor para los cálculos con números flotantes y enteros y asi con todos los caracteres, lo que he estado haciendo es capturar cada caracter en varios arreglos de tipo char, agregarle un terminador o fin de cadena y convertirlo a entero usando la función atoi(), pero no me funciona; también he probado con -'0' sin usar la función atoi(), pero igual, nada pasa.
Alguien que sepa de estas cosas y me pueda dar un alcance sobre mis posibles errores y propuestas de mejoras seria de gran ayuda.
