Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
U ovom uputstvu ću vam objasniti kako to učiniti
- upravljati istosmjernim motorom s PWM -om
- komunicirati putem UART -a
- ručica mjerača vremena prekida
Prije svega, upotrijebit ćemo razvojnu ploču AVR Core sustava koju možete pronaći na Aliexpressu oko 4 USD. Link razvojne ploče je ovdje. Također ćemo koristiti Atmel ICE Debugger i Atmel Studio za programiranje i ispravljanje pogrešaka u našem softveru.
Korak 1: Dubinsko ronjenje u podatkovnoj tablici i izvornom kodu - brzina takta
U 1. točki definiramo našu kristalnu frekvenciju koju možemo vidjeti na razvojnoj ploči
Korak 2: Postavljanje UART registara
Da biste komunicirali s UART -om, morate ispravno postaviti USART registre brzine prijenosa podataka - UBRRnL i UBRRnH, to možete sami izračunati ili možete koristiti mrežni kalkulator za jednostavno dobivanje ispravnih vrijednosti
Mrežni kalkulator
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Dakle, tada se izračunava vrijednost MYUBBR. U registru UCSR0B omogućujemo RXEN0 (omogućavanje recv) TXEN0 (omogućavanje prijenosa) i RXCIE0 (RX za prekid). U registru UCSR0C odabiremo 8 -bitnu veličinu znakova.
Nakon što smo postavili RX prekidni bit, trebali bismo dodati ISR funkciju za USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {međuspremnik [bufferIndex] = rcvChar; bufferIndex ++; }}
Ne biste trebali unositi nikakvu poslovnu logiku u rutinu usluge prekida. Morate učiniti da se funkcija vrati što je prije moguće.
Korak 3: Postavke PWM -a
U funkciji initPWM postavili smo skaler CPU sata, način Timer/Counter kao Fast PWM i postavili njegovo ponašanje s COM bitovima
Također bismo trebali spojiti istosmjerni motor na OC2 pin koji je naveden u Tablici 66. Usporedite Output Mode, Fast PWM Mode u našem podatkovnom listu, također ćete vidjeti da je OC2 pin (OC2/OC1C) PB7
Korak 4: Rezultat
Kada učitate izvorni kod u privitku.
Možete unijeti novu vrijednost PWM (0-255) iz UART-a (možete koristiti terminal serijskog porta arduino) za podešavanje brzine istosmjernog motora.