Vitesse minimale ATMega328 avec UART

9

Je cherche à concevoir un projet à faible puissance qui aura un ATMega328 fonctionnant à basse vitesse pour une consommation d'énergie inférieure.

Le plan actuel est de raccorder l'UART à un récepteur de liaison RF pour une communication à 1200 bauds.

Ce que je me demande, cependant, c'est quelle est la vitesse minimale à laquelle je peux exécuter un ATMega328 et avoir toujours un UART de 1200 bauds. Est-ce que 1 MHz est assez rapide?

robzy
la source

Réponses:

11

L'horloge UART fonctionne à 16 fois la vitesse de transmission. Vous pourriez donc vous en sortir avec 19,2 kHz. 1 MHz suffira.

Le plus souvent, vous exécutez à une fréquence d'horloge qui donne un diviseur pratique pour générer l'horloge de vitesse de transmission UART et qui est encore suffisamment rapide pour tout autre traitement dont vous avez besoin. Chaque fois qu'un octet ou un paquet est transmis via l'UART, mettez le CPU en mode basse consommation et réveillez-vous à nouveau sur une interruption lorsque plus de données sont prêtes.

Clint Lawrence
la source
Je pense que la phrase "L'horloge UART fonctionne à 16 fois la vitesse de transmission" est un peu trompeuse. Le générateur de débit en bauds USART fonctionne sur l'horloge système / oscillateur et est juste prédéfini par la valeur UBRR. Cela dépend également du mode de fonctionnement. Le facteur 16 s'applique au "mode normal asynchrone".
Rev1.0
1

D'après mon observation, il n'est pas viable d'exécuter ATMega328p en dessous de 1Mhz pour économiser de l'énergie (car vous aurez besoin de plus de temps pour terminer le calcul). Cependant, la réduction de la tension entraînera une économie d'énergie élevée. Fonctionnant à 1Mhz et 1,8V ne consomme que 1% d'énergie s'il fonctionne à 16Mhz et 5V. J'ai fait ce tableau de consommation d'énergie ATMega328

Selon cette calculatrice AVR UART si vous exécutez votre AVR à 1 MHz (vitesse par défaut sans cristal externe), vous pouvez UART jusqu'à 4800

Cano64
la source