Nkeji 3 / 9

Sistemụ agbakwunyere na koodu Microcontroller

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:

  1. 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.
  2. 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.
  3. 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ọ.