Minimale ATMega328-Geschwindigkeit mit UART

9

Ich möchte ein Projekt mit geringem Stromverbrauch entwerfen, bei dem ein ATMega328 mit niedriger Geschwindigkeit läuft, um den Stromverbrauch zu senken.

Derzeit ist geplant, den UART für die Kommunikation mit 1200 Baud an einen RF-Link-Empfänger anzuschließen.

Was ich mich jedoch frage, ist die Mindestgeschwindigkeit, mit der ich einen ATMega328 betreiben kann und trotzdem einen 1200baud UART laufen lässt. Ist 1MHz schnell genug?

robzy
quelle

Antworten:

11

Die UART-Uhr läuft mit der 16-fachen Baudrate. Sie könnten also möglicherweise mit 19,2 kHz davonkommen. 1 MHz wird in Ordnung sein.

Meistens würden Sie mit einer Taktrate arbeiten, die einen praktischen Teiler zum Generieren des UART-Baudratentakts bietet und für jede andere Verarbeitung, die Sie ausführen müssen, immer noch schneller genug ist. Schalten Sie die CPU jedes Mal, wenn ein Byte oder Paket über den UART übertragen wird, in einen Energiesparmodus und wachen Sie bei einem Interrupt wieder auf, wenn weitere Daten bereit sind.

Clint Lawrence
quelle
Ich denke, der Satz "Die UART-Uhr läuft mit der 16-fachen Baudrate" ist etwas irreführend. Der USART-Baudratengenerator läuft auf dem System- / Oszillatortakt und wird nur durch den UBRR-Wert vorskaliert. Dies hängt auch von der Betriebsart ab. Der Faktor 16 gilt für den "Asynchronous Normal Mode".
Rev1.0
1

Meiner Beobachtung nach ist es nicht möglich, ATMega328p unter 1 MHz auszuführen, um Strom zu sparen (da Sie mehr Zeit benötigen, um die Berechnung abzuschließen). Eine Reduzierung der Spannung führt jedoch zu einer hohen Energieeinsparung. Der Betrieb mit 1 MHz und 1,8 V verbraucht nur 1% der Leistung, wenn mit 16 MHz und 5 V betrieben wird. Ich habe diese ATMega328-Stromverbrauchstabelle erstellt

Laut diesem AVR-UART-Rechner können Sie bis zu 4800 UART verwenden, wenn Sie Ihren AVR mit 1 MHz (Standardgeschwindigkeit ohne externen Quarz) betreiben

Cano64
quelle