Minimalna prędkość ATMega328 z UART

9

Zastanawiam się nad zaprojektowaniem projektu o niskiej mocy, w którym ATMega328 będzie pracował z niską prędkością w celu zmniejszenia zużycia energii.

Obecny plan zakłada podłączenie UART do odbiornika RF Link w celu komunikacji z prędkością 1200 bodów.

Zastanawiam się jednak, jaka jest minimalna prędkość, z jaką mogę uruchomić ATMega328 i nadal mieć uruchomiony UART 1200 bodów. Czy 1MHz jest wystarczająco szybki?

robzy
źródło

Odpowiedzi:

11

Zegar UART działa z 16-krotnością prędkości transmisji. Więc mógłbyś uciec z 19,2 kHz. 1 MHz będzie w porządku.

Najczęściej działałbyś z częstotliwością taktowania, która daje wygodny dzielnik do generowania zegara prędkości UART i jest nadal wystarczająco szybka do wszelkich innych operacji, które musisz wykonać. Za każdym razem, gdy bajt lub pakiet jest przesyłany przez UART, przełącz CPU w tryb niskiego poboru mocy i budz się ponownie po przerwie, gdy więcej danych jest już gotowych.

Clint Lawrence
źródło
Myślę, że zdanie „Zegar UART działa z 16-krotnością prędkości transmisji” jest nieco mylące. Generator prędkości transmisji USART działa na zegarze systemu / oscylatora i jest po prostu przeskalowany przez wartość UBRR. Zależy to również od trybu pracy. Współczynnik 16 stosuje się do „Asynchronicznego trybu normalnego”.
Rev1.0
1

Z moich obserwacji nie jest możliwe uruchomienie ATMega328p poniżej 1 MHz w celu oszczędzania energii (ponieważ potrzeba więcej czasu na ukończenie obliczeń). Jednak zmniejszenie napięcia spowoduje wysoką oszczędność energii. Praca przy 1 MHz i 1,8 V zużywa tylko 1% mocy, jeśli działa przy 16 MHz i 5 V. Zrobiłem tę tabelę zużycia energii ATMega328

Zgodnie z tym kalkulatorem AVR UART, jeśli uruchomisz AVR z częstotliwością 1 MHz (domyślna prędkość bez zewnętrznego kryształu), możesz UART do 4800

Cano64
źródło