Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR mjerač vremena UART PWM kontrola: 4 koraka
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR mjerač vremena UART PWM kontrola: 4 koraka
Anonim
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola
Atmega128A proporcionalna vožnja motorom - ATMEL ICE AVR timer UART PWM kontrola

U ovom uputstvu ću vam objasniti kako to učiniti

  • upravljajte istosmjernim motorom s PWM -om
  • komunicirati putem UART -a
  • rukovati vremenskim prekidima

Prije svega, upotrijebit ćemo razvojnu ploču AVR Core sistema 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 otklanjanje grešaka u našem softveru.

Korak 1: Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina takta

Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata
Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata
Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata
Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata
Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata
Dubinsko ronjenje u podatkovnom listu i izvornom kodu - brzina sata

U 1. točki definiramo našu kristalnu frekvenciju koju možemo vidjeti na razvojnoj ploči

Korak 2: Postavljanje UART registara

Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara
Postavljanje UART registara

Da biste komunicirali s UART -om, morate ispravno postaviti USART registre brzine prijenosa podataka - UBRRnL i UBRRnH, možete to sami izračunati ili možete koristiti mrežni kalkulator za lako dobijanje 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') {bafer [bufferIndex] = rcvChar; bufferIndex ++; }}

Ne biste trebali raditi nikakvu poslovnu logiku u rutini usluge prekida. Morate učiniti da se funkcija vrati što je prije moguće.

Korak 3: Postavke PWM -a

PWM postavke
PWM postavke

U funkciji initPWM postavili smo skaler takta procesora, 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 listu s podacima, također ćete vidjeti da je OC2 pin (OC2/OC1C) PB7

Korak 4: Rezultat

Rezultat
Rezultat
Rezultat
Rezultat

Kada učitate izvorni kod u privitku.

Možete unijeti novu vrijednost PWM-a (0-255) iz UART-a (možete koristiti terminal serijskog porta arduino) za postavljanje brzine istosmjernog motora.