Sigo un poco mareado con el tema... en el encabezado indica que usas protocolo SDI y en el cuerpo del mensaje dices que usas RS232. Con SDI ¿Quieres decir Serial Data Interface? Si es así, creo que es mejor indicarlo UART.
Por lo general, para UART se suele utilizar una transmisión 8,n,1; eso indica que son 8 bits de datos, ninguno de paridad y 1 de stop.
Más allá que quieras transmitir un dato de 16, 24 o 32 bits, siempre se enviarán 8 bits a la vez.
Puede ser que haya algún problema de velocidad entre receptor y transmisor... una forma de "debuggear" el programa sería, hacer la rutina del esclavo en un PIC y observarlo con un terminal para ver como llegan los datos.
Utilizando, por ejemplo Proteus, podrías hacer un programa en un pic que lea el ADC y envíe los datos al terminal de proteus. Mirando el terminal podrías interpretar como llegan los datos, y la forma necesaria para darle un formato y luego poder mostrarlo en un LCD.
Me parece que al utilizar printf, ya le estás dando formato de cadena y por lo tanto no sería necesario utilizar "atoi" en el maestro. Creo también que al transmitir el caracter "\n" deberían incluir un getc() para que lea dicho dato.