Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto návode vám vysvetlím, ako na to
- ovládať jednosmerný motor s PWM
- komunikovať cez UART
- zvládnuť prerušenia časovača
Najprv použijeme vývojovú dosku systému AVR Core, ktorú nájdete na Aliexpresse okolo 4 USD. Odkaz na vývojovú dosku nájdete tu. Na programovanie a ladenie nášho softvéru použijeme aj Atmel ICE Debugger a Atmel Studio.
Krok 1: Hlboké ponorenie do technického listu a zdrojového kódu - rýchlosť hodín
V 1. guľke definujeme našu kryštálovú frekvenciu, kde ju môžeme vidieť na vývojovej doske
Krok 2: Nastavenie registrov UART
Aby ste mohli komunikovať s UART, musíte správne nastaviť registre prenosovej rýchlosti USART - UBRRnL a UBRRnH, môžete si to vypočítať sami alebo pomocou online kalkulačky ľahko získať správne hodnoty
Online kalkulačka
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Potom sa vypočíta hodnota MYUBBR. V registri UCSR0B povolíme RXEN0 (zapnutie recv) TXEN0 (povolenie prenosu) a RXCIE0 (RX pre prerušenie). V registri UCSR0C vyberieme 8 -bitovú veľkosť znaku.
Potom, čo nastavíme bit prerušenia RX, mali by sme pridať funkciu ISR pre USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}
Vo svojej rutine prerušenia by ste nemali robiť žiadnu obchodnú logiku. Musíte zaistiť, aby sa funkcia vrátila čo najskôr.
Krok 3: Nastavenia PWM
Vo funkcii initPWM sme nastavili náš scaler taktov CPU, režim Timer/Counter ako Fast PWM a nastavili sme jeho správanie s COM bitmi
Tiež by sme mali pripojiť DC motor na pin OC2, ktorý je uvedený v tabuľke 66. Porovnajte výstupný režim, rýchly režim PWM v našom technickom liste, uvidíte tiež, že pin OC2 je (OC2/OC1C) PB7
Krok 4: Výsledok
Keď nahráte zdrojový kód v prílohe.
Môžete zadať novú hodnotu PWM (0-255) z UART (môžete použiť terminál sériového portu arduino) na nastavenie otáčok motora DC.