Cómo escribir el código de interfaz del sensor para el microcontrolador AVR Atmega 128 en el estudio AVR

Para explicar usando una analogía, nos está pidiendo que expliquemos cómo escribir un ensayo usando una pluma estilográfica. Primero debe saber cómo escribir un ensayo, luego puede escribir un ensayo con el bolígrafo que desee.

Basta de analogías.

Debe saber cómo escribir el código de interfaz para el sensor que elija. Es, literalmente, lo único que hace que funcione. Echa un vistazo a las hojas de datos. Por lo general, tienen todo lo que necesita saber para que funcione. Es posible que necesite aprender sobre las interfaces de comunicación porque los sensores más complejos tienden a usar protocolos como SPI e I2C. Otra cosa que puede que tenga que aprender es el acondicionamiento de señal para sensores ruidosos. Esto suele ser un problema en los sensores sensibles, ya que tienden a informar cada variación maldita en la cantidad monitoreada. Un ejemplo es el sensor acelerómetro. Pero ese es un tema avanzado …

Con respecto a AVR Studio, incluso puede usar el bloc de notas para escribir su código. Ya sea que esté programando usando C o asm, solo necesita un archivo hexadecimal para cargarlo en uC. El AVR Studio simplemente convierte su código a eso. Si no sabes cómo hacerlo, visita Google y aprende. Toma de 5 a 10 minutos. Buena suerte aprendiendo!

Estoy agregando a lo que dijo Quora User. Existen millones de sensores que miden cantidades infinitas de datos del mundo real. Desde el ADXL345 que mide la aceleración a una resolución de 13 bits por eje ( https://www.sparkfun.com/datashe …) hasta el reloj en tiempo real DS3231 que mantiene segundos, minutos, horas, días … con una copia de seguridad batería a bordo ( https: //datasheets.maximintegrat …). Estos sensores / módulos son solo un par de ejemplos de lo que hay en el mercado. Cada sensor tendría algún método de interfaz / comunicación para recuperar (o enviar) datos entre el controlador. Existen muchos protocolos de comunicación que los sensores pueden utilizar, pero los más comunes (y con los que estoy familiarizado) son Serial (UART o USART), SPI, I2C (o TWI) y la Interfaz de un solo cable (consulte DHT11 )

Para extraer o enviar datos a estos módulos, necesitamos establecer esa interfaz entre el microcontrolador y el módulo. Digamos que debemos conectar el magnetómetro HMC5883L I2C con el microcontrolador ATmega. Nuestro primer paso sería escribir rutinas de manejo de bus I2C. Estas rutinas pueden inicializar los registros internos de nuestro microcontrolador (ver TWSR y TWCR), establecer los parámetros de control requeridos de nuestro módulo (en el caso del HMC5883L, podemos especificar con qué frecuencia “tomar” las lecturas), escribir datos en el bus (y, por lo tanto, módulo (s)), lea datos de registros específicos en un módulo conectado y verifique si hay errores en la comunicación. Hay muchas bibliotecas disponibles para cada método de comunicación (en nuestro caso de I2C, consulte: NULL-Wolf / AVR-AtmegaXX-I2C-library-Old-).

Una vez que tenga una configuración de interfaz que le permita hacer lo anterior, escribimos (lo que me gusta llamar) “Contenedores”. El código de interfaz que escribimos es un marco bastante “de bajo nivel” que es general para todos los sensores y simplemente gestiona las comunicaciones en el bus. Pero, ¿qué pasa con nuestro módulo específico (en este caso, el HMC5883L) y todas sus funciones específicas? Podemos abordar esto escribiendo una biblioteca en la parte superior de nuestro código / biblioteca I2C (por lo tanto, “Wrapper”) que gestiona los diferentes modos de nuestro sensor / módulo, y puede procesar y “dar sentido” a las lecturas recuperadas. En nuestro caso del HMC5883L, la forma en que se almacenan las lecturas en los registros internos del sensor requiere que las convirtamos antes de que podamos entenderlas. Y ese es el trabajo de nuestra biblioteca “wrapper”. (ver NULL-Wolf / AVR-HMC5883L-magnetometer-Library)

Una vez que los datos se han procesado en función de los requisitos del sensor particular (como la suma binaria de los MSB y LSB para obtener el valor final), ahora podemos incluir nuestro código de “envoltura” en nuestro programa principal y extraer fácilmente los datos de nuestro sensores Para resumirlo todo, como dijo el usuario de Quora, primero aprenda a escribir el código de la interfaz, mire los ejemplos de otros si es necesario. Luego escriba un contenedor alrededor del código de interfaz específico para el sensor que desea interactuar. Este proceso también se aplica a otros métodos de comunicación, como los sensores y módulos basados ​​en SPI y UART.

More Interesting

Cómo hacer procesamiento de datos de imagen con módulo de cámara incorporado

Programación de computadoras: ¿cómo se crea su propio dispositivo integrado?

¿Será una mejor decisión hacer un entrenamiento de verano en sistemas integrados en LNMIIT o en cualquier NIT que en un buen instituto privado de capacitación?

En la programación integrada, ¿qué hace 0X1 << 5, 1 | 2 << 4, 0x1 << 1 | 0x1 << 2 significa?

Cómo aprender la codificación de un microcontrolador

¿Un gusto por Arduino se traduce en una carrera en sistemas integrados?

Si ya voy a tomar una clase de proyecto CS (Sistemas informáticos integrados), ¿debería molestarme también en tomar el Proyecto de ingeniería de software?

¿Cómo son útiles las estructuras de datos en sistemas embebidos?

¿Cuál es la diferencia entre PLC y microcontrolador?

Soy un programador 'C' con más de 15 años de experiencia en programación en Kernel / Embedded Systems. Sin embargo, encuentro la asamblea intimidante. ¿Eso es normal?

¿Cómo obtengo conocimiento en sistemas embebidos?

¿Cuáles son los pros y los contras de ESP8266 versus ESP32 como dispositivos IoT?

¿En qué campo debo hacer capacitación, CCNA o sistema embebido inalámbrico, ya que soy estudiante de EC B.Tech para la perspectiva laboral?

¿Cuáles son los diferentes archivos generados durante la compilación cruzada del archivo C incrustado? ¿Y que contiene?

¿Cuál es la mejor manera de aprender Linux embebido? ¿Es razonable asistir a un curso de introducción de Linux incrustado a un precio de US $ 400?