Uru:
- Ikike ịkọwa aha, nkwụsịtụ na oge chọrọ maka microcontroller na ngwa ngwa doro anya
- Ikike ịlele koodu C / Arduino nke AI mepụtara n'ihe gbasara ntọala ndebanye aha, oke njupụta na mmachi oge.
- Ikike itinye àgwà nke ịchọpụta koodu emepụtara site na ịlele ya na ngwaike (oscilloscope, ọdụ ụgbọ mmiri)
Mmepe sistemu agbakwunyere bụ ebe sọftụwia na ngwaike na-agbakọ: ịtọlite akwụkwọ n'ụzọ na-ezighi ezi, ijide nkwụsị ogologo oge, ma ọ bụ ikpuchi ihe nchekwa ga-eme ka ọdịda dị ịtụnanya, nke siri ike imepụtagharị n'ọhịa, n'agbanyeghị na koodu ahụ “na-agbakọta” wee na-agba ọsọ. AI bụ n'ezie ihe osooso na mpaghara a; Ọ nwere ike imepụta ọkpụkpụ mbụ, ọrụ abstraction ngwaike, igwe steeti na usoro nkwukọrịta. Mana AI anaghị ahụ akwụkwọ data kaadị gị, ọ maghị ugboro elekere gị, ọ naghị ahụkwa oke oge gị. Na ngalaba a, anyị ga-ekpuchi otu esi akọwapụta ọrụ microcontroller na AI nke ọma, otu esi elele koodu C/Arduino emepụtara, yana ihe kpatara ị ga-eji tụọ ihe niile dị na ngwaike.
Ịkọwapụta ihe a chọrọ n'ụzọ doro anya: Deba aha, ịkpụ, oge
Ịgwa AI ka ọ "gbanye ọkụ" agaghị arụ ọrụ; Kedu kaadị, nke pin, nke ugboro elekere, nke oge? Mgbe ị na-ekenye ọrụ agbakwunyere na AI, jiri usoro a: ngwaike (MCU ezinụlọ, elekere, pin), ọrụ (ihe ga-eme), mgbochi (oge, ike, ebe nchekwa), na interface (ndebanye aha, HAL, Arduino ọba akwụkwọ).
Ngwa ngwa adịghị ike / Ike ngwa ngwa
NA-adịghị ike: "Wepụta PWM na STM32." (Nsonaazụ: nke ngụ oge, nke ugboro, nke pin na-edoghị; n'ozuzu, eleghị anya na-ezighị ezi aha aha koodu). ahịrị. - Tọọ ọrụ na oke ọrụ n'etiti 0-100 - Kwuo ihe ndekọ aha ọ bụla ị na-eji.
Ihe dị iche bụ na ngwa ngwa dị ike na-eme ka ihe nlereanya ahụ gosi ngụkọta oge ma kpughee echiche elekere. Yabụ ị nwere ike lelee ụkpụrụ prescaler/ARR n'onwe gị:
Maka 20 kHz PWM (72 MHz elekere): Oge elekere = 72 MHz Ọ bụrụ na anyị chọrọ prescaler = 72-1 → elekere elekere = 1 MHzARR = (1 MHz / 20 kHz) - 1 = 50 - 1 = 49Nkwenye: 1e6 / (49+1) = 20 00
Auditing AI Code: kedu ihe ị ga-achọ?
Naanị n'ihi na achịkọta koodu emepụtara apụtaghị na ọ na-arụ ọrụ nke ọma. Soro ndepụta nlele a:
mpaghara njikwa
Ihe ị ga-achọ
Ndebanye aha/bit ntọala
Dakọtara na mpempe akwụkwọ data, nkpuchi bit ziri ezi
Nkwụsị (ISR)
Ọ dị mkpụmkpụ? Ọ dịghị ihe mgbochi igbu oge? A na-eji ihe na-agbanwe agbanwe?
ihe nchekwa / n'usoro
Enwere njikwa oke? Ihe ize ndụ nke oke ibu?
oge
Na igbu oge ma ọ bụ ngụ oge? Ezutere mmachi oge n'ezie?
Ụdị na obosara
8/16/32-bit njupụta, mgbagwoju anya bịanyere aka na ya / enweghị akara
ike / onye nche
Onye na-ahụ maka inye nri loop enweghị ngwụcha?
Usoro ọrụ nkwụsịtụ (ISR) bụ isi mmalite nke mperi. AI mgbe ụfọdụ na-etinye igbu oge () ma ọ bụ ogologo akaghị n'ime ISR. Nke a na-eduga na nkwụsịtụ ndị ọzọ na-atụ uche na nrụpụta ndị nche. Ọchịchị: ISR kwesịrị ịdị mkpụmkpụ dị ka o kwere mee; Isi ọrụ kwesịrị ịbụ ịtọ ọkọlọtọ ma bugharịa ya na akaghị isi.
// WEAK (AI mgbe ụfọdụ na-emepụta nke a): Blocker ọrụ na ISR efu TIM3_IRQHandler (efu) {ma ọ bụrụ na (TIM3-> SR & TIM_SR_UIF) {TIM3-> SR & = ~ TIM_SR_UIF; read_sensor (); // nwere ike were ogologo oge - BAD CASE_Delay(10); // igbu oge na ISR - OKWU BAD }}// ike: ISR mkpụmkpụ; ọrụ na-aga na isi loopvolatile uint8_t tick_flag = 0; // na-agbanwe agbanwe CONDITIONvoid TIM3_IRQHandler (efu) {ma ọ bụrụ na (TIM3-> SR & TIM_SR_UIF) {TIM3->SR &= ~TIM_SR_UIF; tick_flag = 1; // dị nnọọ tọọ ọkọlọtọ }}// na isi loop: if (tick_flag) {tick_flag = 0; read_sensor (); }
Akpachara anya: mgbanwe ọ bụla na-ekekọrịta n'etiti nkwụsịtụ na loop bụ isi ga-abụ nke na-agbanwe agbanwe. Ma ọ bụghị ya, onye nchịkọta nwere ike chekwaa mgbanwe na ndekọ ma tufuo mmelite ahụ. AI na-echefukarị isiokwu a; Chọọ ya kpọmkwem mgbe ị na-agụ koodu ahụ.
Mfefe oke na ụdị mperi
AI nwere ike detuo data sitere na ọdụ ụgbọ mmiri n'ime usoro nha anya na-enweghị ịlele oke. N'ime sistemu agbakwunyere, nke a pụtara ịzọpịa ebe nchekwa na-aga n'ihu na mkpọka enweghị nkọwa. Gbaa mbọ hụ na enyochala oke na strcpy ọ bụla, array index na nchekwa DMA. N'otu aka ahụ, 8-bit counter resets mgbe 255; AI nwere ike ileghara nke a anya wee dabere na akaụntụ na-ejubiga ókè.
Nyocha na ngwaike: "Arụ ọrụ" na-atụ, ọ bụghị nke e chere
N'ime usoro agbakwunyere, ihe akaebe a pụrụ ịdabere na ya bụ mita, ọ bụghị onye nchịkọta. Nyochaa koodu emepụtara n'ụzọ atọ ndị a:
- Oscilloscope/onye nyocha mgbagha: Tulee ugboro PWM, oge mgbama na ụdị nkwurịta okwu. Ọ bụrụ na ịchọrọ 20 kHz, hụ 20 kHz na ihuenyo.
- Ndekọ ọdụ ụgbọ mmiri Serial (UART): Bipụta ụkpụrụ na-agbanwe agbanwe, mgbanwe steeti, na akara mperi ma jiri ya tụnyere omume a tụrụ anya ya.
- Nnwale oke na nrụgide: Nwalee ma sistemụ ahụ ọ na-ejide n'okpuru ibu kachasị elu, data kachasị ọsọ na oge kacha njọ.
Ọ bụrụ na ọnụ ahịa a tụrụ atụghị ekwenye na ngụkọta oge, echiche elekere, uru prescaler ma ọ bụ ntọala ndekọ ezighi ezi; chụrụ.
Obere Case
Otu ụmụ akwụkwọ nwere AI na-ebipụta koodu nha anya na ihe mmetụta ultrasonic HC-SR04. Koodu na-achịkọta mana anya na-enye ụkpụrụ na-akpa ọchị mgbe niile. Mgbe ha jikọtara ya na oscilloscope, ha na-ahụ na ụkwụ echo na-agbakọ oge ya na milliseconds kama microseconds; AI jiri millis () kama micros(). Njehie otu okwu a gbagwojuru nha ahụ dum site na ihe dị ka 1000. Mgbe ha na-ebipụta oge echo raw n'ime log serial wee jiri ya tụnyere ezigbo onye na-achị achị, ha na-ahụ njehie ahụ wee dozie ya. Ihe nkuzi: koodu agbakọtara abụghị koodu ziri ezi; Ntụle na ngwaike na-ekpughe njehie ozugbo.
Mmejọ a na-emekarị
- Ịnabata aha ndebanye aha na ihe mkpuchi bit na-enweghị atụnyere ha na akwụkwọ data ahụ.
- Na-enye ohere igbochi igbu oge ma ọ bụ nhazi ogologo n'ime ISR.
- Ichefu na-agbanwe agbanwe na mgbanwe nkekọrịta.
- Ịgafe ihe nchekwa na ịlele oke oke; na-ahụghị oke njupụta.
- Ịdabere na oge elekere na echiche oge na-egosighi ha.
- N'ịtụle koodu ahụ "na-arụ ọrụ" na-ejighị oscilloscope/serial log tụọ ya.
Na nchịkọta
- Kọwaa nke ọma ọrụ agbakwunyere n'ihe gbasara ngwaike, ọrụ, ihe mgbochi na interface.
- Nwee AI gbakọọ ụkpụrụ oge dị ka prescaler / ARR wee nyochaa ha n'onwe ya.
- Debe ISR dị mkpụmkpụ, jiri mgbanwe na-agbanwe agbanwe.
- Chọọ kpọmkwem aha ndekọ, oke ihe nchekwa na ụdị mperi obosara.
- “Ọ na-arụ ọrụ” ka a na-eji oscilloscope, nyocha mgbagha, na ndekọ serial, ọ bụghị ya na ndị nchịkọta.
- Ọ bụrụ na ọnụ ahịa a tụrụ ekwenyeghị na mgbako ahụ, chụọ echiche ndị ahụ.
Ọrụ ngwa
Site na microcontroller ị nwere (Arduino, STM32, ESP32), jụọ AI maka PWM ma ọ bụ ọrụ oge n'otu oge. Tupu itinye koodu ahụ: (1) nyochaa ụkpụrụ ugboro / oge n'adabereghị na akaụntụ ahụ na ahịrị okwu, (2) lelee maka mgbanwe na igbochi na ISR na mgbanwe mgbanwe. Mgbe ebugochara, jiri oscilloscope ma ọ bụ nyocha mgbagha tụọ ugboro ole ma were ya tụnyere ebumnuche. Ọ bụrụ na enwere mgbagha, chọta isi iyi wee mezie ya, wee rịba ama ihe e chere na ọ dị njọ.