תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
במדריך זה אסביר לך כיצד
- לשלוט במנוע DC עם PWM
- לתקשר באמצעות UART
- לטפל בהפסקת טיימר
קודם כל, נשתמש בלוח פיתוח מערכת AVR Core שתוכל למצוא ב- Aliexpress בסביבות 4 דולר. קישור לוח הפיתוח נמצא כאן. אנו נשתמש גם ב- Atmel ICE Debugger וב- Atmel Studio כדי לתכנת ולפתור באגים בתוכנה שלנו.
שלב 1: צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
ב 1. הכדור אנו מגדירים את תדר הגביש שלנו שבו אנו יכולים לראות על לוח הפיתוח
שלב 2: הגדרת רישומי UART
על מנת לתקשר עם UART עליך להגדיר את רשימות קצב השידור של USART - UBRRnL ו- UBRRnH בצורה נכונה אתה יכול לחשב זאת בעצמך או להשתמש במחשבון מקוון כדי לקבל ערכים נכונים בקלות
מחשבון מקוון
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
אז ערך MYUBBR מחושב אז, ברישום UCSR0B אנו מאפשרים RXEN0 (recv enable) TXEN0 (transmit enable) ו- RXCIE0 (RX להפסקה). ברישום UCSR0C אנו בוחרים גודל סיביות של 8 סיביות.
לאחר שנקבע את ביט RUT, עלינו להוסיף פונקציית ISR עבור USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}
אסור לך לעשות שום היגיון עסקי בשגרת השירות שלך. עליך לגרום לפונקציה לחזור בהקדם האפשרי.
שלב 3: הגדרות PWM
בפונקציה initPWM הגדרנו את מדריך שעוני המעבד שלנו, מצב טיימר/מונה כ- PWM מהיר והגדרנו את התנהגותו עם סיביות COM
כמו כן עלינו לחבר את מנוע DC לסיכת OC2 המפורטת בטבלה 66. השווה מצב פלט, מצב PWM מהיר בגיליון הנתונים שלנו, תראה גם שסיכת OC2 היא (OC2/OC1C) PB7
שלב 4: תוצאה
כאשר אתה מעלה את קוד המקור בקובץ המצורף.
אתה יכול להזין ערך PWM חדש (0-255) מ- UART (אתה יכול להשתמש במסוף יציאה טורית של arduino) כדי להגדיר את מהירות מנוע DC.