Სარჩევი:

Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი: 4 ნაბიჯი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი: 4 ნაბიჯი

ვიდეო: Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი: 4 ნაბიჯი

ვიდეო: Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი: 4 ნაბიჯი
ვიდეო: Микроконтроллеры ATMEL - ATmega128A-AU ... 2024, ნოემბერი
Anonim
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი
Atmega128A პროპორციული საავტომობილო მოძრაობა - ATMEL ICE AVR ტაიმერი UART PWM კონტროლი

ამ სასწავლო ინსტრუქციაში მე აგიხსნით როგორ

  • აკონტროლეთ DC ძრავა PWM– ით
  • კომუნიკაცია UART– ის საშუალებით
  • გაუმკლავდეს ტაიმერის შეფერხებებს

უპირველეს ყოვლისა, ჩვენ გამოვიყენებთ AVR Core სისტემის განვითარების დაფას, რომელიც შეგიძლიათ ნახოთ Aliexpress– ზე დაახლოებით 4 აშშ დოლარი. განვითარების დაფის ბმული აქ არის. ჩვენ ასევე გამოვიყენებთ Atmel ICE Debugger- ს და Atmel Studio- ს ჩვენი პროგრამული უზრუნველყოფის პროგრამირებისა და გამართვისთვის.

ნაბიჯი 1: ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე

ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე
ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე
ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე
ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე
ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე
ღრმა ჩაძირვა მონაცემთა ცხრილში და წყაროს კოდი - საათის სიჩქარე

1. ტყვიაში ჩვენ განვსაზღვრავთ ჩვენს კრისტალურ სიხშირეს, სადაც შეგვიძლია დავინახოთ განვითარების დაფაზე

ნაბიჯი 2: UART რეგისტრების დაყენება

UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება
UART რეგისტრების დაყენება

UART– თან კომუნიკაციისთვის თქვენ უნდა დააყენოთ USART Baud Rate Registers - UBRRnL და UBRRnH სწორად შეგიძლიათ გამოთვალოთ იგი საკუთარ თავს ან შეგიძლიათ გამოიყენოთ ონლაინ კალკულატორი სწორი მნიშვნელობების მარტივად მისაღებად

ონლაინ კალკულატორი

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

ასე რომ, MYUBBR მნიშვნელობა გამოითვლება მაშინ, UCSR0B რეესტრში ჩვენ ვააქტიურებთ RXEN0 (recv ჩართვა) 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 ფუნქციაში ჩვენ ვაყენებთ ჩვენს CPU საათის შემამცირებელს, ტაიმერს/მრიცხველს, როგორც სწრაფ PWM და ვაყენებთ მის ქცევას COM ბიტებით

ჩვენ ასევე უნდა დავუკავშიროთ DC ძრავა OC2 პინს, რომელიც მითითებულია ცხრილში 66. შეადარეთ გამომავალი რეჟიმი, სწრაფი PWM რეჟიმი ჩვენს მონაცემთა ცხრილში, თქვენ ასევე ნახავთ, რომ OC2 პინი არის (OC2/OC1C) PB7

ნაბიჯი 4: შედეგი

შედეგი
შედეგი
შედეგი
შედეგი

როდესაც ატვირთავს წყაროს კოდს დანართში.

თქვენ შეგიძლიათ შეიყვანოთ ახალი PWM მნიშვნელობა (0-255) UART– დან (შეგიძლიათ გამოიყენოთ arduino სერიული პორტის ტერმინალი) DC ძრავის სიჩქარის დასადგენად.

გირჩევთ: