Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje aš jums paaiškinsiu, kaip tai padaryti
- valdyti nuolatinės srovės variklį su PWM
- bendrauti per UART
- pertraukia rankenos laikmatis
Visų pirma, mes naudosime AVR pagrindinės sistemos kūrimo plokštę, kurią galite rasti „Aliexpress“maždaug 4 USD. Plėtros lentos nuoroda yra čia. Programinei įrangai programuoti ir derinti taip pat naudosime „Atmel ICE Debugger“ir „Atmel Studio“.
1 žingsnis: giliai pasinerkite į duomenų lapą ir šaltinio kodą - laikrodžio greitis
1. kulkoje mes apibrėžiame savo kristalų dažnį, kur galime matyti kūrimo lentoje
2 veiksmas: UART registrų nustatymas
Norėdami bendrauti su UART, turite teisingai nustatyti USART Baud Rate Registrus - UBRRnL ir UBRRnH, galite juos apskaičiuoti patys arba galite naudoti internetinę skaičiuoklę, kad lengvai gautumėte teisingas vertes
Internetinė skaičiuoklė
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Taigi MYUBBR vertė apskaičiuojama tada, UCSR0B registre įjungiame RXEN0 (recv enable) TXEN0 (perdavimo įgalinimas) ir RXCIE0 (RX pertraukimui). UCSR0C registre pasirenkame 8 bitų simbolių dydį.
Nustatę RX pertraukimo bitą, turėtume pridėti USR funkciją USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buferis [bufferIndex] = rcvChar; bufferIndex ++; }}
Jūs neturėtumėte daryti jokios verslo logikos pertraukdami paslaugų teikimo tvarką. Turite kuo greičiau grąžinti funkciją.
3 žingsnis: PWM nustatymai
Funkcijoje initPWM mes nustatome savo CPU laikrodžio skalę, laikmačio/skaitiklio režimą kaip greitą PWM ir nustatome jo elgesį su COM bitais
Taip pat turėtume prijungti nuolatinės srovės variklį prie OC2 kaiščio, kuris nurodytas 66 lentelėje. Palyginkite išvesties režimą, greitą PWM režimą mūsų duomenų lape, taip pat pamatysite, kad OC2 kaištis yra (OC2/OC1C) PB7
4 žingsnis: rezultatas
Kai įkelsite šaltinio kodą priede.
Norėdami nustatyti nuolatinės srovės variklio greitį, galite įvesti naują PWM vertę (0–255) iš UART (galite naudoti „arduino“serijinio prievado terminalą).