Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola!!
Me gustaría saber si alguno conoce la manera de dormir un microcontrolador (meterlo en algún modo de SLEEP) y despertarlo a la entrada de datos en el USART.
La pregunta más bien va enfocada a qué modo de SLEEP permite hacer algo similar y si es sencillo de manejar.
El microcontrolador sobre el que me interesaría conocer si se puede hacer algo similar es el Atmega16, con el que sé que con el modo Idle el USART se mantiene despierto, pero necesitaría un modo SLEEP que optimizase mejor el consumo que un simple Idle. De todas maneras, si con otro microcontrolador sabeis que se pueda hacer algo similar y más optimizado, comentarlo.
Muchas gracias.
Hola MorgoZ, no tengo ni idea de si el Atmega16 en modo SLEEP despierta cuando recibe datos serie. Como seguramente se puede despertar por interrupción externa, puedes poner la recepción de datos serie a la entrada de interrución externa. De esta manera despertará en el bit de start e incluso es posible que puedas capturar el 1r dato serie.
Suerte!
Muchas gracias pormla respuesta, roboticsBCN, lo tendré en cuenta y a ver si se puede aplicar 😉
¡Feliz año!
Para los AVR, hay diferentes modos de 'dormir'. Según el modo, tienes más o menos formas de 'despertar' el micro. Para hacerlo desde los periféricos digitales como el USART, sólo puedes usar el modo IDLE (tanto para Mega16 como Mega640), pues es el único que sigue con el clock de periféricos en marcha, tal y como tu comentas.
Pero la ventaja del Mega640, és que puedes ir parando los relojes de manera individual para cada periférico, de manera que puedes reducir mucho el consumo en modo Idle, con los registros de Power Reduction (pagina 55 del datasheet).
De todas maneras, reducir el consumo de un circuito es algo más que simplemente poner el micro a dormir, y puede conllevar muchas consideraciones, sobre todo, de la circuitería conectada a los pines.
Beamspot.