Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
V tem navodilu vam bom razložil, kako
- krmilite enosmerni motor s PWM
- komunicirati prek UART
- ročaj časovnik prekinitve
Najprej bomo uporabili razvojno ploščo sistema AVR Core, ki jo najdete na Aliexpressu okoli 4 USD. Povezava razvojne plošče je tukaj. Za programiranje in odpravljanje napak naše programske opreme bomo uporabili tudi Atmel ICE Debugger in Atmel Studio.
1. korak: Poglobite se v podatkovni list in izvorno kodo - hitrost ure
V 1. črti definiramo našo kristalno frekvenco, ki jo lahko vidimo na razvojni plošči
2. korak: Nastavitev registrov UART
Če želite komunicirati z UART, morate pravilno nastaviti registre hitrosti prenosa podatkov USART - UBRRnL in UBRRnH, ki jih lahko sami izračunate ali pa z lahkoto dobite pravilne vrednosti s spletnim kalkulatorjem
Spletni kalkulator
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Tako se izračuna vrednost MYUBBR. V registru UCSR0B omogočimo RXEN0 (omogoč. Recv) TXEN0 (omogoči prenos) in RXCIE0 (RX za prekinitev). V registru UCSR0C izberemo 8 -bitno velikost znakov.
Ko nastavimo prekinitveni bit RX, bi morali dodati funkcijo ISR za USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {medpomnilnik [bufferIndex] = rcvChar; bufferIndex ++; }}
V rutini prekinitvenih storitev ne bi smeli delati poslovne logike. Funkcijo morate vrniti čim prej.
Korak: Nastavitve PWM
V funkciji initPWM nastavimo merilnik ure procesorja, način Timer/Counter kot Fast PWM in nastavimo njegovo vedenje s COM bitovi
Morali bi priključiti tudi enosmerni motor na pin OC2, ki je naveden v tabeli 66. Primerjajte izhodni način, hitri način PWM v našem podatkovnem listu, videli boste tudi, da je pin OC2 (OC2/OC1C) PB7
4. korak: Rezultat
Ko naložite izvorno kodo v prilogo.
Novo vrednost PWM (0-255) lahko vnesete iz UART (lahko uporabite terminal za serijska vrata arduino), da nastavite hitrost enosmernega motorja.