Բովանդակություն:

Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control: 4 Steps
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control: 4 Steps
Anonim
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Համաչափ շարժիչ - ATMEL ICE AVR Timer UART PWM Control

Այս ուսանելիում ես ձեզ կբացատրեմ, թե ինչպես դա անել

  • վերահսկել DC շարժիչը PWM- ով
  • շփվել UART- ի միջոցով
  • կարգավորել ժամաչափի ընդհատումները

Առաջին հերթին, մենք կօգտագործենք AVR Core համակարգի զարգացման տախտակ, որը կարող եք գտնել Aliexpress- ում մոտ 4 ԱՄՆ դոլարի սահմաններում: boardարգացման խորհրդի հղումն այստեղ է: Մենք նաև կօգտագործենք Atmel ICE Debugger- ը և Atmel Studio- ն `մեր ծրագրաշարը ծրագրավորելու և կարգաբերելու համար:

Քայլ 1. Խորը սուզվել տվյալների թերթում և աղբյուրի կոդ `ժամացույցի արագություն

Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed
Deep Diving Into Datasheet & Source Code - Clock Speed

1. փամփուշտում մենք սահմանում ենք մեր բյուրեղային հաճախականությունը, որտեղ կարող ենք տեսնել զարգացման տախտակին

Քայլ 2: UART գրանցիչների տեղադրում

UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում
UART գրանցիչների տեղադրում

UART- ի հետ հաղորդակցվելու համար պետք է ճիշտ սահմանել USART Baud Rate Register - UBRRnL և UBRRnH կարող եք ինքներդ հաշվարկել այն կամ կարող եք օգտագործել առցանց հաշվիչ ՝ ճիշտ արժեքները հեշտությամբ ստանալու համար:

Առցանց հաշվիչ

ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…

Այսպիսով, MYUBBR արժեքը հաշվարկվում է, ապա գրանցամատյանում UCSR0B- ում միացնում ենք RXEN0 (recv enable) TXEN0 (փոխանցման հնարավորություն) և RXCIE0 (RX ընդհատման համար): UCSR0C գրանցամատյանում մենք ընտրում ենք 8 բիթանոց լիցքավորման չափ:

RX ընդհատման բիթը սահմանելուց հետո մենք պետք է ավելացնենք ISR գործառույթը USART0_RX_vect- ի համար

ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {բուֆեր [bufferIndex] = rcvChar; bufferIndex ++; }}

Դուք չպետք է որևէ բիզնես տրամաբանություն անեք ձեր ընդհատվող ծառայության ռեժիմում: Դուք պետք է արագ դարձնեք գործառույթը:

Քայլ 3: PWM կարգավորումներ

PWM կարգավորումներ
PWM կարգավորումներ

In initPWM ֆունկցիայում մենք սահմանում ենք մեր պրոցեսորի ժամացույցի չափիչը, erամաչափ/հաշվիչ ռեժիմը որպես արագ PWM և դրա վարքագիծը սահմանում COM բիթերով:

Մենք նաև պետք է DC շարժիչը միացնենք OC2 կապին, որը նշված է Աղյուսակ 66 -ում: Համեմատեք ելքային ռեժիմը, արագ PWM ռեժիմը մեր տվյալների թերթիկում, նաև կտեսնեք, որ OC2 կապը (OC2/OC1C) PB7 է:

Քայլ 4: Արդյունք

Արդյունք
Արդյունք
Արդյունք
Արդյունք

Երբ դուք վերբեռնում եք սկզբնական կոդը հավելվածում:

Դուք կարող եք մուտքագրել նոր PWM արժեք (0-255) UART- ից (կարող եք օգտագործել arduino սերիական նավահանգստի տերմինալը) ՝ DC շարժիչի արագությունը սահմանելու համար:

Խորհուրդ ենք տալիս: