ஆதாயங்கள்:
- மைக்ரோகண்ட்ரோலருக்கான பதிவு, குறுக்கீடு மற்றும் நேரத் தேவைகளை தெளிவான வரியில் வரையறுக்கும் திறன்
- பதிவு அமைப்புகள், இடையக வழிதல் மற்றும் நிகழ் நேரக் கட்டுப்பாடுகள் ஆகியவற்றின் அடிப்படையில் AI தயாரித்த C/Arduino குறியீட்டைச் சரிபார்க்கும் திறன்
- உருவாக்கப்பட்ட குறியீட்டை வன்பொருளில் அளவிடுவதன் மூலம் சரிபார்க்கும் பழக்கத்தைப் பயன்படுத்துவதற்கான திறன் (ஒசிலோஸ்கோப், சீரியல் போர்ட்)
உட்பொதிக்கப்பட்ட கணினி மேம்பாடு என்பது மென்பொருளும் வன்பொருளும் குறுக்கிடும் இடமாகும்: குறியீடானது "தொகுத்து" இயங்கினாலும், ஒரு பதிவு பிட்டை தவறாக அமைப்பது, அதிக நேரம் குறுக்கீடு வைத்திருப்பது அல்லது இடையகத்தை நிரம்பி வழிவது ஆகியவை புலத்தில் விசித்திரமான, மறுஉற்பத்தி செய்ய முடியாத தோல்விகளை ஏற்படுத்தும். AI உண்மையில் இந்தப் பகுதியில் ஒரு முடுக்கி; இது ஆரம்ப எலும்புக்கூடுகள், வன்பொருள் சுருக்க செயல்பாடுகள், மாநில இயந்திரங்கள் மற்றும் தொடர்பு நடைமுறைகளை உருவாக்க முடியும். ஆனால் AI உங்கள் கார்டின் டேட்டாஷீட்டைப் பார்க்கவில்லை, உங்கள் கடிகார அதிர்வெண்ணை அறியவில்லை, உங்கள் உண்மையான நேரக் கட்டுப்பாடுகளை உணரவில்லை. இந்த யூனிட்டில், மைக்ரோகண்ட்ரோலர் வேலையை AIக்கு எவ்வாறு தெளிவாக வரையறுப்பது, உருவாக்கப்பட்ட C/Arduino குறியீட்டை எவ்வாறு சரிபார்ப்பது மற்றும் வன்பொருளில் உள்ள அனைத்தையும் ஏன் அளவிட வேண்டும் என்பதை நாங்கள் விவரிப்போம்.
தேவையை தெளிவாக வரையறுத்தல்: பதிவு, வெட்டுதல், நேரம்
AI க்கு "எல்இடியை ஒளிரச் செய்யுங்கள்" என்று சொல்வது வேலை செய்யாது; எந்த அட்டை, எந்த முள், எந்த கடிகார அலைவரிசை, எந்த நேரம்? AIக்கு உட்பொதிக்கப்பட்ட பணியை ஒதுக்கும்போது, இந்த கட்டமைப்பைப் பயன்படுத்தவும்: வன்பொருள் (MCU குடும்பம், கடிகாரம், முள்), செயல்பாடு (என்ன நடக்கும்), கட்டுப்பாடு (நேரம், சக்தி, நினைவகம்) மற்றும் இடைமுகம் (பதிவு, HAL, Arduino நூலகம்).
பலவீனமான ப்ராம்ட் / ஸ்ட்ராங் ப்ராம்ட்
பலவீனம்: "STM32 உடன் PWM ஐ உருவாக்கவும்." (முடிவு: எந்த டைமர், எந்த அதிர்வெண், எந்த முள் தெளிவாக இல்லை; பொதுவான, ஒருவேளை தவறான பதிவு என்று பெயரிடப்பட்ட குறியீடு.) STRONG: "STM32F103 (72 MHz அமைப்பு கடிகாரம்) க்கு TIM3 CH1 (PA6) இல் 20 kHz, 0-100% அனுசரிப்பு டூட்டி PWM ஐ உருவாக்கவும் (72 MHz அமைப்பு கடிகாரம்). பதிவு மட்டத்தில் எழுதவும் (HAL மற்றும் K2 க்கு முந்தைய மதிப்பு). கணக்கீடு செய்து, 0-100 க்கு இடையில் ஒரு செயல்பாட்டு அளவுருவை அமைக்கவும் - உங்கள் கடிகார அனுமானம் தவறாக இருந்தால் மதிப்புகள் மாறும்.
வித்தியாசம் என்னவென்றால், சக்திவாய்ந்த ப்ராம்ட் மாதிரியானது கணக்கீட்டைக் காட்டவும் கடிகார அனுமானத்தை வெளிப்படுத்தவும் செய்கிறது. எனவே நீங்கள் ப்ரீஸ்கேலர்/ஏஆர்ஆர் மதிப்புகளை சுயாதீனமாக சரிபார்க்கலாம்:
20 kHz PWMக்கு (72 MHz கடிகாரம்):Timer_clock = 72 MHzஎங்களுக்கு ப்ரீஸ்கேலர் வேண்டுமானால் = 72-1 → எதிர் கடிகாரம் = 1 MHzARR = (1 MHz / 20 kHz) - 1 = 50 - 1 = 49சரிபார்ப்பு: 1e06 / (49+10) =
தணிக்கை AI குறியீடு: எதைப் பார்க்க வேண்டும்?
உருவாக்கப்பட்ட குறியீடு தொகுக்கப்படுவதால் அது சரியாக வேலை செய்கிறது என்று அர்த்தமல்ல. இந்த சரிபார்ப்புப் பட்டியலைப் பின்பற்றவும்:
கட்டுப்பாட்டு பகுதி
எதைத் தேடுவது
பதிவு/பிட் அமைப்புகள்
தரவுத்தாள், சரியான பிட் மாஸ்க் ஆகியவற்றுடன் சரியாக இணக்கமானது
குறுக்கீடு (ISR)
இது குறுகியதா? தடுப்பான் தாமதம் இல்லையா? ஆவியாகும் தன்மை பயன்படுத்தப்படுகிறதா?
தாங்கல்/வரிசை
எல்லைக் கட்டுப்பாடு உள்ளதா? நிரம்பி வழியும் அபாயம்?
நேரம்
தாமதம் அல்லது டைமர்? உண்மையான நேரக் கட்டுப்பாடு பூர்த்தி செய்யப்படுகிறதா?
வகை மற்றும் அகலம்
8/16/32-பிட் ஓவர்ஃப்ளோ, கையொப்பமிடப்பட்ட/கையொப்பமிடப்படாத குழப்பம்
சக்தி / கண்காணிப்பு நாய்
எல்லையற்ற வளைய உணவளிக்கும் கண்காணிப்பாளரா?
குறுக்கீடு சேவை நடைமுறைகள் (ISR) பிழைகளின் பொதுவான ஆதாரமாகும். AI சில நேரங்களில் தாமதம்() அல்லது நீண்ட சுழற்சியை ISRக்குள் வைக்கிறது. இது மற்ற குறுக்கீடுகளைத் தவறவிடுவதற்கும் கண்காணிப்பு அமைப்பு மீட்டமைப்பதற்கும் வழிவகுக்கிறது. விதி: ISR முடிந்தவரை குறுகியதாக இருக்க வேண்டும்; ஒரு கொடியை அமைத்து அதை முக்கிய வளையத்திற்கு நகர்த்துவது முக்கிய வேலையாக இருக்க வேண்டும்.
// WEAK (AI சில நேரங்களில் இதை உருவாக்குகிறது): ISR void TIM3_IRQHandler(செல்லம்) {if (TIM3->SR & TIM_SR_UIF) { TIM3->SR &= ~TIM_SR_UIF; read_sensor(); // நீண்ட நேரம் ஆகலாம் - BAD CASE_Delay(10); // ISR இல் தாமதம் - மிகவும் மோசமானது }}// STRONG: ISR குறுகிய; வேலை முக்கிய loopvolatile uint8_t tick_flag = 0க்கு நகர்கிறது; // ஆவியாகும் நிலை டிக்_கொடி = 1; //கொடியை அமைக்கவும் }}// முக்கிய வளையத்தில்: என்றால் (tick_flag) {tick_flag = 0; read_sensor(); }
எச்சரிக்கை: குறுக்கீடு மற்றும் பிரதான சுழற்சிக்கு இடையில் பகிரப்படும் எந்த மாறியும் ஆவியாக இருக்க வேண்டும். இல்லையெனில், கம்பைலர் பதிவேட்டில் உள்ள மாறியை தேக்ககப்படுத்தலாம் மற்றும் புதுப்பிப்பை தவறவிடலாம். AI இந்த முக்கிய சொல்லை அடிக்கடி மறந்துவிடுகிறது; குறியீட்டைப் படிக்கும்போது அதைக் குறிப்பாகத் தேடுங்கள்.
பஃபர் ஓவர்ஃப்ளோ மற்றும் வகை பிழைகள்
AI ஆனது சீரியல் போர்ட்டில் இருந்து தரவை வரம்புகள் சரிபார்ப்பு இல்லாமல் ஒரு நிலையான அளவு வரிசையில் நகலெடுக்க முடியும். உட்பொதிக்கப்பட்ட அமைப்பில், இது தொடர்ச்சியான நினைவகம் மற்றும் விவரிக்கப்படாத செயலிழப்புகளை நசுக்குவதாகும். ஒவ்வொரு strcpy, வரிசை அட்டவணை மற்றும் DMA இடையகத்திலும் வரம்பு சரிபார்க்கப்படுவதை உறுதிசெய்யவும். இதேபோல், 8-பிட் கவுண்டர் 255க்குப் பிறகு மீட்டமைக்கப்படுகிறது; AI இதைப் புறக்கணித்து நிரம்பி வழியும் கணக்கை நம்பலாம்.
வன்பொருளில் சரிபார்ப்பு: "வேலை" என்பது அளவிடப்படுகிறது, அனுமானிக்கப்படவில்லை
உட்பொதிக்கப்பட்ட அமைப்பில், மிகவும் நம்பகமான ஆதாரம் மீட்டர், கம்பைலர் அல்ல. இந்த மூன்று வழிகளில் உருவாக்கப்பட்ட குறியீட்டைச் சரிபார்க்கவும்:
- அலைக்காட்டி/தருக்க பகுப்பாய்வி: PWM அதிர்வெண், சமிக்ஞை நேரம் மற்றும் தொடர்பு அலைவடிவம் ஆகியவற்றை அளவிடவும். நீங்கள் 20 kHz விரும்பினால், திரையில் 20 kHz ஐப் பார்க்கவும்.
- சீரியல் போர்ட் (UART) பதிவு: மாறி மதிப்புகள், நிலை மாற்றங்கள் மற்றும் பிழை கவுண்டர்களை அச்சிட்டு, எதிர்பார்க்கப்படும் நடத்தையுடன் ஒப்பிடவும்.
- கட்டுப்படுத்தப்பட்ட மற்றும் அழுத்த சோதனை: கணினி அதிக சுமை, வேகமான தரவு மற்றும் மோசமான நேரத்தின் கீழ் உள்ளதா என சோதிக்கவும்.
அளவிடப்பட்ட மதிப்பு கணக்கீட்டில் உடன்படவில்லை எனில், கடிகார அனுமானம், ப்ரீஸ்கேலர் மதிப்பு அல்லது பதிவு அமைப்பு தவறானது; துரத்துகிறது.
மினி கேஸ்
HC-SR04 அல்ட்ராசோனிக் சென்சார் மூலம் AI அச்சிடப்பட்ட தூர அளவீட்டுக் குறியீட்டை மாணவர்களின் குழு கொண்டுள்ளது. குறியீடு தொகுக்கிறது ஆனால் தூரம் எப்போதும் அபத்தமான மதிப்புகளை அளிக்கிறது. அவர்கள் அதை அலைக்காட்டியுடன் இணைக்கும்போது, எதிரொலி கால் அதன் நேரத்தை மைக்ரோ விநாடிகளுக்குப் பதிலாக மில்லி விநாடிகளில் கணக்கிடுவதை அவர்கள் காண்கிறார்கள்; மைக்ரோஸ்()க்குப் பதிலாக AI மில்லிஸ்()ஐப் பயன்படுத்தியது. இந்த ஒரு வார்த்தைப் பிழையானது 1000 காரணி மூலம் முழு அளவீட்டையும் குழப்பியது. அவர்கள் மூல எதிரொலி நேரத்தை சீரியல் பதிவில் அச்சிட்டு உண்மையான ஆட்சியாளருடன் ஒப்பிடும்போது, அவர்கள் பிழையைக் கண்டுபிடித்து அதைச் சரிசெய்கிறார்கள். பாடம்: தொகுக்கப்பட்ட குறியீடு சரியான குறியீடு அல்ல; வன்பொருளில் உள்ள அளவீடு உடனடியாக பிழையை வெளிப்படுத்துகிறது.
பொதுவான தவறுகள்
- பதிவு பெயர்கள் மற்றும் பிட் முகமூடிகளை டேட்டாஷீட்டுடன் ஒப்பிடாமல் ஏற்றுக்கொள்வது.
- ISR க்குள் தாமதம் அல்லது நீண்ட செயலாக்கத்தைத் தடுப்பதை அனுமதிக்கிறது.
- பகிரப்பட்ட மாறிகளில் மாறும் தன்மையை மறத்தல்.
- பைபாஸ் பஃபர் மற்றும் வரிசை வரம்புகளை சரிபார்த்தல்; நிரம்பி வழிவதை பார்க்கவில்லை.
- கடிகார அதிர்வெண் மற்றும் நேர அனுமானங்களைச் சரிபார்க்காமல் அவற்றை நம்பியிருப்பது.
- ஒரு அலைக்காட்டி/தொடர் பதிவைக் கொண்டு அளவிடாமல் "வேலை செய்கிறது" என்ற குறியீட்டைக் கருத்தில் கொள்வது.
சுருக்கமாக
- வன்பொருள், செயல்பாடு, கட்டுப்பாடுகள் மற்றும் இடைமுகம் ஆகியவற்றின் அடிப்படையில் உட்பொதிக்கப்பட்ட பணியை தெளிவாக வரையறுக்கவும்.
- AI ஆனது ப்ரீஸ்கேலர்/ஏஆர்ஆர் போன்ற நேர மதிப்புகளைக் கணக்கிட்டு அவற்றைச் சுதந்திரமாகச் சரிபார்க்கவும்.
- ISRகளை சுருக்கமாக வைத்திருங்கள், பகிரப்பட்ட மாறிகளில் ஆவியாகும் தன்மையைப் பயன்படுத்தவும்.
- குறிப்பாக பதிவு, இடையக வரம்பு மற்றும் வகை அகலப் பிழைகளைத் தேடுங்கள்.
- "இது வேலை செய்கிறது" என்பது ஒரு அலைக்காட்டி, லாஜிக் பகுப்பாய்வி மற்றும் தொடர் பதிவு மூலம் நிரூபிக்கப்பட்டுள்ளது, கம்பைலர் மூலம் அல்ல.
- அளவிடப்பட்ட மதிப்பு கணக்கீட்டில் உடன்படவில்லை என்றால், அனுமானங்களைத் துரத்தவும்.
விண்ணப்ப பணி
உங்களிடம் உள்ள மைக்ரோகண்ட்ரோலருடன் (Arduino, STM32, ESP32), குறிப்பிட்ட அதிர்வெண்ணில் PWM அல்லது ஒரு குறிப்பிட்ட காலப் பணிக்காக AIயிடம் கேட்கவும். குறியீட்டை ஏற்றுவதற்கு முன்: (1) கருத்து வரியில் கணக்கின் அதிர்வெண்/நேர மதிப்புகளை சுயாதீனமாக சரிபார்க்கவும், (2) ISR மற்றும் பகிரப்பட்ட மாறிகளில் நிலையற்ற மற்றும் தடுப்பதை சரிபார்க்கவும். பதிவேற்றிய பிறகு, ஒரு அலைக்காட்டி அல்லது லாஜிக் அனலைசர் மூலம் உண்மையான அதிர்வெண்ணை அளந்து, இலக்குடன் ஒப்பிடவும். விலகல் இருந்தால், மூலத்தைக் கண்டுபிடித்து அதைச் சரிசெய்து, தவறாகக் கருதப்பட்டதைக் கவனியுங்கள்.