Paso 3: El código: la comunicación serial.
¿Cómo ocurre la comunicación con las escalas y el dataconversion?
Las escalas que uso es un KERN PCB 6000-0. Tiene un modo donde continuamente envía byte 18 bloques de datos que contiene el peso a través del puerto serial. El atmega8 neutraliza los 18 bytes entrantes. El último byte transmitido es siempre un avance de línea (ascii 10). Tan pronto como la serie recibe el avance de línea (ascii 10), se activa una interrupción y el código cambia a la rutina de interrupción. Esta rutina comienza despejando las variables necesarias para la dataconversion. Empieza a leer el buffer serial. Aunque hay 18 bytes en cada datatransfer, sólo byte 9 a 12 contienen el peso real. Los bytes se almacenan para la conversión. Otros bytes son arrojados a una variable temporal para vaciar el buffer.
Los bytes almacenados contienen los 4 dígitos del peso como caracteres ascii. Esto significa que tenemos que convertirlos a los valores decimales correctos antes que podemos hacer los cálculos con ellos. Afortunadamente esto puede hacerse muy fácilmente por restando 48 de los valores entrantes como cada valor ascii es mayor que el valor decimal del carácter mismo de la 48.
Entonces el valor del primer carácter se multiplica por 1000, la segunda por 100 y el tercero por 10. Los tres resultados luego se suman y se añade el cuarto valor. Este resultado es un entero que contiene el peso medido por las escalas.
Una vez conocido este peso, se compara con el peso deseado en el bucle principal y los LEDs están.