Awọn anfani:
- Agbara lati ṣalaye iforukọsilẹ, da gbigbi ati awọn ibeere akoko fun microcontroller pẹlu itọsi ti o han
- Agbara lati ṣayẹwo koodu C/Arduino ti a ṣe nipasẹ AI ni awọn ofin ti awọn eto iforukọsilẹ, ṣiṣan buffer ati awọn ihamọ akoko gidi
- Agbara lati lo ihuwasi ti ijẹrisi koodu ti ipilẹṣẹ nipasẹ wiwọn rẹ lori ohun elo (oscilloscope, ibudo ni tẹlentẹle)
Idagbasoke eto ti a fi sii ni ibi ti sọfitiwia ati ohun elo ṣe ikorita: ṣeto iforukọsilẹ ni aṣiṣe, didimu gbigbi gun ju, tabi ṣiṣan ṣiṣan yoo fa ajeji, awọn ikuna lile-lati ẹda ni aaye, botilẹjẹpe koodu “ṣe akopọ” ati ṣiṣe. AI jẹ iwongba ti ohun imuyara ni agbegbe yi; O le gbe awọn egungun ibẹrẹ, awọn iṣẹ abstraction hardware, awọn ẹrọ ipinlẹ ati awọn ilana ibaraẹnisọrọ. Ṣugbọn AI ko rii iwe data kaadi rẹ, ko mọ igbohunsafẹfẹ aago rẹ, ati pe ko ni oye awọn idiwọ akoko gidi rẹ. Ninu ẹyọ yii, a yoo bo bii o ṣe le ṣalaye iṣẹ microcontroller ni kedere si AI, bii o ṣe le ṣayẹwo koodu C/Arduino ti ipilẹṣẹ, ati idi ti o yẹ ki o wọn ohun gbogbo ni ohun elo.
Ti n ṣalaye Ibeere naa ni gbangba: Forukọsilẹ, gige, akoko
Sọ fun AI lati “tan ina LED kan” kii yoo ṣiṣẹ; Eyi ti kaadi, eyi ti pin, eyi ti aago igbohunsafẹfẹ, eyi ti ìlà? Nigbati o ba n yan iṣẹ-ṣiṣe ti a fi sinu AI, lo ilana yii: hardware (ebi MCU, aago, pin), iṣẹ (kini yoo ṣẹlẹ), ihamọ (akoko, agbara, iranti), ati wiwo (forukọsilẹ, HAL, ile-ikawe Arduino).
Ailagbara Tọ / Alagbara Tọ
Alailagbara: "Ṣejade PWM pẹlu STM32." (Esi: eyi ti aago, eyi ti igbohunsafẹfẹ, eyi ti pin ni koyewa; gbogboogbo, jasi ti ko tọ forukọsilẹ ti a npè ni koodu.) AGBARA: "Ṣe 20 kHz, 0-100% adijositabulu ojuse PWM on TIM3 CH1 (PA6) fun STM32F103 (72 MHz eto aago). Kọ ni Forukọsilẹ ipele (ko HALC) Kọ ni ipele iforukọsilẹ (ko HALC) - Prescaler ati AATE0 asọye iye. ila. - Ṣeto iṣẹ pẹlu paramita iṣẹ laarin 0-100 - Ọrọìwòye iforukọsilẹ kọọkan ti o lo.
Iyatọ naa ni pe iyara ti o lagbara jẹ ki awoṣe ṣe afihan iṣiro naa ati ṣafihan arosinu aago. Nitorinaa o le ṣayẹwo awọn iye prescaler/ARR ni ominira:
Fun 20 kHz PWM (aago 72 MHz):Aago_clock = 72 MHzTi a ba fẹ prescaler = 72-1 → aago counter = 1 MHzARR = (1 MHz / 20 kHz) - 1 = 50 - 1 = 49 Ijẹrisi: 1e6 / (49+1) = 20 00
Ṣiṣayẹwo koodu AI: Kini lati wa?
Nitoripe awọn akojọpọ koodu ti ipilẹṣẹ ko tumọ si pe o ṣiṣẹ ni deede. Tẹle akojọ ayẹwo yii:
agbegbe iṣakoso
Kini lati wa
Forukọsilẹ / bit eto
Ni ibamu ni ibamu pẹlu iwe data, iboju-boju bit ti o pe
Idilọwọ (ISR)
Ṣe kukuru bi? Ko si idaduro blocker? Ti wa ni iyipada bi?
saarin / orun
Ṣe iṣakoso aala wa? Ewu ti àkúnwọsílẹ?
akoko
Pẹlu idaduro tabi aago? Njẹ akoko akoko gidi ti pade bi?
Iru ati iwọn
8/16/32-bit aponsedanu, wole / unsigned iporuru
agbara / oluṣọ
Abojuto ifunni lupu ailopin bi?
Awọn ilana iṣẹ idalọwọduro (ISR) jẹ orisun ti o wọpọ julọ ti awọn aṣiṣe. AI ma fi idaduro () tabi gun lupu inu ISR. Eyi nyorisi awọn idalọwọduro miiran ti o padanu ati awọn atunto oluṣọ. Ilana: ISR yẹ ki o jẹ kukuru bi o ti ṣee; Iṣẹ akọkọ yẹ ki o jẹ lati ṣeto asia kan ati gbe lọ si lupu akọkọ.
// Ailagbara (AI ma gbe awọn yi): Blocker iṣẹ ni ISR ofo TIM3_IRQHandler (asan) {ti o ba ti (TIM3-> SR & TIM_SR_UIF) { TIM3-> SR & = ~ TIM_SR_UIF; read_sensor (); // le gba igba pipẹ - BAD CASE_Delay (10); // idaduro ni ISR - PUPO BAD}}// ALAGBARA: ISR kukuru; ise rare to akọkọ loopvolatile uint8_t tick_flag = 0; // iyipada CONDITION ofo TIM3_IRQHandler (asan) {ti o ba ti (TIM3-> SR & TIM_SR_UIF) {TIM3-> SR & = ~ TIM_SR_UIF; tick_flag = 1; //Saa ṣeto asia}}// ni akọkọ loop:if (tick_flag) {tick_flag = 0; read_sensor (); }
Išọra: Eyikeyi oniyipada ti o pin laarin idalọwọduro ati lupu akọkọ gbọdọ jẹ iyipada. Bibẹẹkọ, olupilẹṣẹ le kaṣe oniyipada ninu iforukọsilẹ ati padanu imudojuiwọn naa. AI nigbagbogbo gbagbe ọrọ-ọrọ yii; Wa fun ni pataki nigbati o ba ka koodu naa.
Aponsedanu ifipamọ ati Iru awọn aṣiṣe
AI le daakọ data lati ibudo ni tẹlentẹle sinu titobi iwọn ti o wa titi laisi ṣiṣayẹwo awọn ala. Ninu eto ti a fi sii, eyi tumọ si fifun pa iranti itunnu ati awọn ipadanu ti ko ṣe alaye. Rii daju pe iye to wa ni ṣayẹwo ni strcpy kọọkan, atọka orun ati ifipamọ DMA. Bakanna, counter 8-bit tun pada lẹhin 255; AI le foju fojuhan eyi ki o gbẹkẹle akọọlẹ ti nkún.
Ijeri ni Hardware: “Ṣiṣẹ” jẹ Diwọn, Ko ro
Ninu eto ti a fi sii, ẹri ti o gbẹkẹle julọ jẹ mita, kii ṣe olupilẹṣẹ. Ṣayẹwo koodu ti ipilẹṣẹ ni awọn ọna mẹta wọnyi:
- Oscilloscope/ Oluyanju ọgbọn: Ṣe iwọn igbohunsafẹfẹ PWM, aago ifihan ati fọọmu igbi ibaraẹnisọrọ. Ti o ba fẹ 20 kHz, wo 20 kHz loju iboju.
- Akọsilẹ ibudo ni tẹlentẹle (UART): Tẹjade awọn iye oniyipada, awọn iyipada ipinlẹ, ati awọn iṣiro aṣiṣe ki o ṣe afiwe pẹlu ihuwasi ti a nireti.
- Idanwo ati aapọn: Ṣe idanwo boya eto naa duro labẹ ẹru ti o ga julọ, data iyara ati akoko to buruju.
Ti iye iwọn ko ba gba pẹlu iṣiro naa, iṣaro aago, iye prescaler tabi eto iforukọsilẹ ko tọ; lepa.
Mini Case
Ẹgbẹ kan ti awọn ọmọ ile-iwe ni AI tẹjade koodu wiwọn ijinna kan pẹlu sensọ ultrasonic HC-SR04 kan. Awọn koodu akopọ ṣugbọn ijinna nigbagbogbo n fun awọn iye ẹgan. Nigbati wọn ba so pọ mọ oscilloscope, wọn rii pe ẹsẹ iwoyi ṣe iṣiro akoko rẹ ni milliseconds dipo microseconds; AI lo millis () dipo micros (). Aṣiṣe ọrọ-ọkan yii daamu gbogbo iwọn wiwọn nipasẹ ipin kan ti 1000. Nigbati wọn ba tẹ akoko iwoyi aise sinu akọọlẹ tẹlentẹle ati ṣe afiwe rẹ pẹlu alaṣẹ gidi kan, wọn rii aṣiṣe ati ṣatunṣe rẹ. Ẹkọ: koodu ti a ṣajọ kii ṣe koodu ti o pe; Wiwọn ni hardware han aṣiṣe lẹsẹkẹsẹ.
Awọn aṣiṣe ti o wọpọ
- Gbigba awọn orukọ iforukọsilẹ ati awọn iboju iparada lai ṣe afiwe wọn pẹlu iwe data naa.
- Gbigba idaduro idaduro tabi ṣiṣe pipẹ laarin ISR.
- Ngbagbe iyipada lori awọn oniyipada pinpin.
- Ifipamọ fori ati iṣayẹwo awọn aala titobi; ko ri aponsedanu.
- Gbẹkẹle igbohunsafẹfẹ aago ati awọn arosinu akoko laisi ijẹrisi wọn.
- Ṣiyesi koodu naa “ṣiṣẹ” laisi wiwọn rẹ pẹlu oscilloscope/logi ni tẹlentẹle.
Ni akojọpọ
- Kedere asọye iṣẹ-ṣiṣe ti a fi sii ni awọn ofin ti ohun elo, iṣẹ, awọn ihamọ ati wiwo.
- Ṣe iṣiro AI awọn iye akoko bii prescaler / ARR ki o jẹrisi wọn ni ominira.
- Jeki awọn ISR kukuru, lo iyipada lori awọn oniyipada pinpin.
- Ni pato wa fun iforukọsilẹ, opin ifipamọ ati iru awọn aṣiṣe iwọn.
- "O ṣiṣẹ" jẹ ẹri pẹlu oscilloscope kan, olutọpa ọgbọn, ati log tẹlentẹle, kii ṣe pẹlu alakojọ.
- Ti iye iwọn ko ba gba pẹlu iṣiro, lepa awọn arosinu.
Ohun elo iṣẹ-ṣiṣe
Pẹlu microcontroller o ni (Arduino, STM32, ESP32), beere AI fun PWM tabi iṣẹ-ṣiṣe igbakọọkan ni ipo igbohunsafẹfẹ kan. Ṣaaju ki o to gbe koodu naa: (1) rii daju igbohunsafẹfẹ / awọn iye akoko ni ominira ti akọọlẹ naa ni laini asọye, (2) ṣayẹwo fun iyipada ati dina ni ISR ati awọn oniyipada pinpin. Lẹhin ikojọpọ, wiwọn igbohunsafẹfẹ gangan pẹlu oscilloscope tabi oluyanju ọgbọn ati ṣe afiwe rẹ pẹlu ibi-afẹde. Ti iyapa ba wa, wa orisun ki o ṣe atunṣe, ki o ṣe akiyesi ohun ti a ro pe ko tọ.