ಘಟಕ 3 / 9

ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಸ್ ಮತ್ತು ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ ಕೋಡ್

ಲಾಭಗಳು:

  • ಸ್ಪಷ್ಟವಾದ ಪ್ರಾಂಪ್ಟ್‌ನೊಂದಿಗೆ ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್‌ಗಾಗಿ ರಿಜಿಸ್ಟರ್, ಅಡಚಣೆ ಮತ್ತು ಸಮಯದ ಅವಶ್ಯಕತೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಸಾಮರ್ಥ್ಯ
  • ರಿಜಿಸ್ಟರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಬಫರ್ ಓವರ್‌ಫ್ಲೋ ಮತ್ತು ನೈಜ ಸಮಯದ ನಿರ್ಬಂಧಗಳ ವಿಷಯದಲ್ಲಿ 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 ಸಿಸ್ಟಮ್ ಗಡಿಯಾರ). ರಿಜಿಸ್ಟರ್ ಮಟ್ಟದಲ್ಲಿ ಬರೆಯಿರಿ. ಕಾಮೆಂಟ್ ಲೈನ್‌ನಲ್ಲಿ ಲೆಕ್ಕಾಚಾರವನ್ನು ತೋರಿಸಿ - 0-100 ರ ನಡುವೆ ಡ್ಯೂಟಿಯನ್ನು ಹೊಂದಿಸಿ - ನಿಮ್ಮ ಗಡಿಯಾರ ಊಹೆಯು ತಪ್ಪಾಗಿದ್ದರೆ ಮೌಲ್ಯಗಳು ಬದಲಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ.

ವ್ಯತ್ಯಾಸವೆಂದರೆ ಶಕ್ತಿಯುತ ಪ್ರಾಂಪ್ಟ್ ಮಾದರಿಯು ಲೆಕ್ಕಾಚಾರವನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಗಡಿಯಾರದ ಊಹೆಯನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ನೀವು ಪ್ರಿಸ್ಕೇಲರ್/ಎಆರ್ಆರ್ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಬಹುದು:

20 kHz PWM (72 MHz ಗಡಿಯಾರ):Timer_clock = 72 MHz, ನಾವು ಪ್ರಿಸ್ಕೇಲರ್ = 72-1 → ಕೌಂಟರ್ ಗಡಿಯಾರ = 1 MHzARR = (1 MHz / 20 kHz) - 1 = 50 - 1 = 49ಪರಿಶೀಲನೆ: 1e✓ 0 (49+10) =

ಆಡಿಟಿಂಗ್ AI ಕೋಡ್: ಏನು ನೋಡಬೇಕು?

ರಚಿಸಲಾದ ಕೋಡ್ ಕಂಪೈಲ್ ಆಗುವುದರಿಂದ ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಅರ್ಥವಲ್ಲ. ಈ ಪರಿಶೀಲನಾಪಟ್ಟಿಯನ್ನು ಅನುಸರಿಸಿ:

ನಿಯಂತ್ರಣ ಪ್ರದೇಶ

ಏನು ಹುಡುಕಬೇಕು

ನೋಂದಣಿ/ಬಿಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು

ಡೇಟಾಶೀಟ್‌ಗೆ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಸರಿಯಾದ ಬಿಟ್ ಮಾಸ್ಕ್

ಅಡಚಣೆ (ISR)

ಇದು ಚಿಕ್ಕದಾಗಿದೆಯೇ? ಬ್ಲಾಕರ್ ವಿಳಂಬವಿಲ್ಲವೇ? ಬಾಷ್ಪಶೀಲವನ್ನು ಬಳಸಲಾಗಿದೆಯೇ?

ಬಫರ್/ಅರೇ

ಗಡಿ ನಿಯಂತ್ರಣವಿದೆಯೇ? ಉಕ್ಕಿ ಹರಿಯುವ ಅಪಾಯ?

ಸಮಯ

ವಿಳಂಬ ಅಥವಾ ಟೈಮರ್‌ನೊಂದಿಗೆ? ನಿಜವಾದ ಸಮಯದ ನಿರ್ಬಂಧವನ್ನು ಪೂರೈಸಲಾಗಿದೆಯೇ?

ವಿಧ ಮತ್ತು ಅಗಲ

8/16/32-ಬಿಟ್ ಓವರ್‌ಫ್ಲೋ, ಸಹಿ/ಸಹಿ ಮಾಡದ ಗೊಂದಲ

ಶಕ್ತಿ/ಕಾವಲುಗಾರ

ಇನ್ಫೈನೈಟ್ ಲೂಪ್ ಫೀಡಿಂಗ್ ವಾಚ್‌ಡಾಗ್?

ಅಡಚಣೆ ಸೇವಾ ದಿನಚರಿಗಳು (ISR) ದೋಷಗಳ ಸಾಮಾನ್ಯ ಮೂಲವಾಗಿದೆ. AI ಕೆಲವೊಮ್ಮೆ ISR ಒಳಗೆ ವಿಳಂಬ() ಅಥವಾ ಲಾಂಗ್ ಲೂಪ್ ಅನ್ನು ಇರಿಸುತ್ತದೆ. ಇದು ಇತರ ಅಡಚಣೆಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ ಮತ್ತು ವಾಚ್‌ಡಾಗ್ ಮರುಹೊಂದಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. ನಿಯಮ: ISR ಸಾಧ್ಯವಾದಷ್ಟು ಚಿಕ್ಕದಾಗಿರಬೇಕು; ಮುಖ್ಯ ಕೆಲಸವು ಧ್ವಜವನ್ನು ಸ್ಥಾಪಿಸಲು ಮತ್ತು ಅದನ್ನು ಮುಖ್ಯ ಲೂಪ್ಗೆ ಸರಿಸಲು ಆಗಿರಬೇಕು.

// ದುರ್ಬಲ (AI ಕೆಲವೊಮ್ಮೆ ಇದನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ): ISR ಶೂನ್ಯ TIM3_IRQHandler (ಶೂನ್ಯ) ನಲ್ಲಿ ಬ್ಲಾಕರ್ ಕಾರ್ಯ { if (TIM3->SR & TIM_SR_UIF) { TIM3->SR &= ~TIM_SR_UIF; read_sensor(); // ಬಹಳ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು - BAD CASE_Delay(10); // ISR ನಲ್ಲಿ ವಿಳಂಬ - ತುಂಬಾ ಕೆಟ್ಟದು }}// ಸ್ಟ್ರಾಂಗ್: ISR ಚಿಕ್ಕದು; ಕೆಲಸವು ಮುಖ್ಯ ಲೂಪ್ವೊಲೇಟೈಲ್ uint8_t ಟಿಕ್_ಫ್ಲ್ಯಾಗ್ = 0 ಗೆ ಚಲಿಸುತ್ತದೆ; // ಬಾಷ್ಪಶೀಲ ಸ್ಥಿತಿ ನಿರರ್ಥಕ TIM3_IRQHandler(ಶೂನ್ಯ) { if (TIM3->SR & TIM_SR_UIF) { TIM3->SR &= ~TIM_SR_UIF; ಟಿಕ್_ಫ್ಲಾಗ್ = 1; //ಕೇವಲ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಿ }}// ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ: ವೇಳೆ (ಟಿಕ್_ಫ್ಲಾಗ್) {ಟಿಕ್_ಫ್ಲ್ಯಾಗ್ = 0; read_sensor(); }

ಎಚ್ಚರಿಕೆ: ಅಡಚಣೆ ಮತ್ತು ಮುಖ್ಯ ಲೂಪ್ ನಡುವೆ ಹಂಚಿಕೊಳ್ಳಲಾದ ಯಾವುದೇ ವೇರಿಯಬಲ್ ಬಾಷ್ಪಶೀಲವಾಗಿರಬೇಕು. ಇಲ್ಲದಿದ್ದರೆ, ಕಂಪೈಲರ್ ರಿಜಿಸ್ಟರ್‌ನಲ್ಲಿ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ನವೀಕರಣವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು. AI ಸಾಮಾನ್ಯವಾಗಿ ಈ ಕೀವರ್ಡ್ ಅನ್ನು ಮರೆತುಬಿಡುತ್ತದೆ; ಕೋಡ್ ಅನ್ನು ಓದುವಾಗ ಅದನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ ನೋಡಿ.

ಬಫರ್ ಓವರ್‌ಫ್ಲೋ ಮತ್ತು ಟೈಪ್ ದೋಷಗಳು

AI ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ನಿಂದ ದತ್ತಾಂಶವನ್ನು ಮಿತಿಗಳನ್ನು ಪರಿಶೀಲಿಸದೆಯೇ ಸ್ಥಿರ-ಗಾತ್ರದ ಅರೇಗೆ ನಕಲಿಸಬಹುದು. ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ, ಇದರರ್ಥ ಪಕ್ಕದಲ್ಲಿರುವ ಮೆಮೊರಿ ಮತ್ತು ವಿವರಿಸಲಾಗದ ಕ್ರ್ಯಾಶ್‌ಗಳನ್ನು ಪುಡಿಮಾಡುವುದು. ಪ್ರತಿ strcpy, ಅರೇ ಇಂಡೆಕ್ಸ್ ಮತ್ತು DMA ಬಫರ್‌ನಲ್ಲಿ ಮಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಅಂತೆಯೇ, 255 ರ ನಂತರ 8-ಬಿಟ್ ಕೌಂಟರ್ ಮರುಹೊಂದಿಸುತ್ತದೆ; AI ಇದನ್ನು ನಿರ್ಲಕ್ಷಿಸಬಹುದು ಮತ್ತು ತುಂಬಿರುವ ಖಾತೆಯನ್ನು ಅವಲಂಬಿಸಬಹುದು.

ಹಾರ್ಡ್‌ವೇರ್‌ನಲ್ಲಿ ಪರಿಶೀಲನೆ: "ವರ್ಕಿಂಗ್" ಅನ್ನು ಅಳೆಯಲಾಗುತ್ತದೆ, ಊಹಿಸಲಾಗಿಲ್ಲ

ಎಂಬೆಡೆಡ್ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ಅತ್ಯಂತ ವಿಶ್ವಾಸಾರ್ಹ ಪುರಾವೆಯು ಮೀಟರ್ ಆಗಿದೆ, ಕಂಪೈಲರ್ ಅಲ್ಲ. ಈ ಮೂರು ವಿಧಾನಗಳಲ್ಲಿ ರಚಿಸಿದ ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ:

  1. ಆಸಿಲ್ಲೋಸ್ಕೋಪ್/ಲಾಜಿಕ್ ವಿಶ್ಲೇಷಕ: PWM ಆವರ್ತನ, ಸಿಗ್ನಲ್ ಸಮಯ ಮತ್ತು ಸಂವಹನ ತರಂಗರೂಪವನ್ನು ಅಳೆಯಿರಿ. ನೀವು 20 kHz ಬಯಸಿದರೆ, ಪರದೆಯ ಮೇಲೆ 20 kHz ನೋಡಿ.
  2. ಸೀರಿಯಲ್ ಪೋರ್ಟ್ (UART) ಲಾಗ್: ವೇರಿಯಬಲ್ ಮೌಲ್ಯಗಳು, ಸ್ಥಿತಿ ಪರಿವರ್ತನೆಗಳು ಮತ್ತು ದೋಷ ಕೌಂಟರ್‌ಗಳನ್ನು ಮುದ್ರಿಸಿ ಮತ್ತು ನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆಯೊಂದಿಗೆ ಹೋಲಿಕೆ ಮಾಡಿ.
  3. ಬೌಂಡ್ ಮತ್ತು ಸ್ಟ್ರೆಸ್ ಟೆಸ್ಟಿಂಗ್: ಸಿಸ್ಟಮ್ ಹೆಚ್ಚಿನ ಲೋಡ್, ವೇಗವಾದ ಡೇಟಾ ಮತ್ತು ಕೆಟ್ಟ ಸಮಯದ ಅಡಿಯಲ್ಲಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆಯೇ ಎಂದು ಪರೀಕ್ಷಿಸಿ.

ಅಳತೆ ಮಾಡಲಾದ ಮೌಲ್ಯವು ಲೆಕ್ಕಾಚಾರದೊಂದಿಗೆ ಸಮ್ಮತಿಸದಿದ್ದರೆ, ಗಡಿಯಾರದ ಊಹೆ, ಪ್ರಿಸ್ಕೇಲರ್ ಮೌಲ್ಯ ಅಥವಾ ರಿಜಿಸ್ಟರ್ ಸೆಟ್ಟಿಂಗ್ ತಪ್ಪಾಗಿದೆ; ಬೆನ್ನಟ್ಟುತ್ತಾರೆ.

ಮಿನಿ ಕೇಸ್

ವಿದ್ಯಾರ್ಥಿಗಳ ತಂಡವು AI ಅನ್ನು HC-SR04 ಅಲ್ಟ್ರಾಸಾನಿಕ್ ಸಂವೇದಕದೊಂದಿಗೆ ದೂರ ಮಾಪನ ಕೋಡ್ ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಕೋಡ್ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ ಆದರೆ ದೂರವು ಯಾವಾಗಲೂ ಹಾಸ್ಯಾಸ್ಪದ ಮೌಲ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ. ಅವರು ಅದನ್ನು ಆಸಿಲ್ಲೋಸ್ಕೋಪ್‌ಗೆ ಸಂಪರ್ಕಿಸಿದಾಗ, ಎಕೋ ಲೆಗ್ ತನ್ನ ಸಮಯವನ್ನು ಮೈಕ್ರೋಸೆಕೆಂಡ್‌ಗಳ ಬದಲಿಗೆ ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ ಎಂದು ಅವರು ನೋಡುತ್ತಾರೆ; AI ಮೈಕ್ರೋಸ್() ಬದಲಿಗೆ ಮಿಲಿಸ್() ಅನ್ನು ಬಳಸಿದೆ. ಈ ಒಂದು ಪದದ ದೋಷವು ಸಂಪೂರ್ಣ ಮಾಪನವನ್ನು 1000 ಅಂಶದಿಂದ ಗೊಂದಲಗೊಳಿಸಿತು. ಅವರು ಕಚ್ಚಾ ಪ್ರತಿಧ್ವನಿ ಸಮಯವನ್ನು ಸರಣಿ ಲಾಗ್‌ಗೆ ಮುದ್ರಿಸಿದಾಗ ಮತ್ತು ಅದನ್ನು ನಿಜವಾದ ಆಡಳಿತಗಾರನೊಂದಿಗೆ ಹೋಲಿಸಿದಾಗ, ಅವರು ದೋಷವನ್ನು ಕಂಡುಹಿಡಿದು ಅದನ್ನು ಸರಿಪಡಿಸುತ್ತಾರೆ. ಪಾಠ: ಸಂಕಲಿಸಿದ ಕೋಡ್ ಸರಿಯಾದ ಕೋಡ್ ಅಲ್ಲ; ಯಂತ್ರಾಂಶದಲ್ಲಿನ ಮಾಪನವು ದೋಷವನ್ನು ತಕ್ಷಣವೇ ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ.

ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳು

  • ರಿಜಿಸ್ಟರ್ ಹೆಸರುಗಳು ಮತ್ತು ಬಿಟ್ ಮಾಸ್ಕ್‌ಗಳನ್ನು ಡೇಟಾಶೀಟ್‌ನೊಂದಿಗೆ ಹೋಲಿಸದೆ ಸ್ವೀಕರಿಸುವುದು.
  • ISR ನೊಳಗೆ ವಿಳಂಬ ಅಥವಾ ದೀರ್ಘ ಸಂಸ್ಕರಣೆಯನ್ನು ತಡೆಯಲು ಅನುಮತಿಸುತ್ತದೆ.
  • ಹಂಚಿದ ಅಸ್ಥಿರಗಳಲ್ಲಿ ಬಾಷ್ಪಶೀಲತೆಯನ್ನು ಮರೆತುಬಿಡುವುದು.
  • ಬೈಪಾಸ್ ಬಫರ್ ಮತ್ತು ಅರೇ ಗಡಿಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ; ಉಕ್ಕಿ ಹರಿಯುವುದನ್ನು ನೋಡುತ್ತಿಲ್ಲ.
  • ಗಡಿಯಾರದ ಆವರ್ತನ ಮತ್ತು ಸಮಯದ ಊಹೆಗಳನ್ನು ಪರಿಶೀಲಿಸದೆ ಅವಲಂಬಿತವಾಗಿದೆ.
  • ಆಸಿಲ್ಲೋಸ್ಕೋಪ್/ಸೀರಿಯಲ್ ಲಾಗ್‌ನೊಂದಿಗೆ ಅಳೆಯದೆ ಕೋಡ್ "ಕೆಲಸ ಮಾಡುತ್ತಿದೆ" ಎಂದು ಪರಿಗಣಿಸಿ.

ಸಾರಾಂಶದಲ್ಲಿ

  • ಹಾರ್ಡ್‌ವೇರ್, ಕಾರ್ಯ, ನಿರ್ಬಂಧಗಳು ಮತ್ತು ಇಂಟರ್‌ಫೇಸ್‌ನ ವಿಷಯದಲ್ಲಿ ಎಂಬೆಡೆಡ್ ಕಾರ್ಯವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ.
  • ಪ್ರಿಸ್ಕೇಲರ್/ಎಆರ್‌ಆರ್‌ನಂತಹ ಸಮಯದ ಮೌಲ್ಯಗಳನ್ನು ಎಐ ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ ಮತ್ತು ಅವುಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಿ.
  • ISR ಗಳನ್ನು ಚಿಕ್ಕದಾಗಿರಿಸಿ, ಹಂಚಿದ ವೇರಿಯೇಬಲ್‌ಗಳಲ್ಲಿ ಬಾಷ್ಪಶೀಲವನ್ನು ಬಳಸಿ.
  • ನಿರ್ದಿಷ್ಟವಾಗಿ ರಿಜಿಸ್ಟರ್, ಬಫರ್ ಮಿತಿ ಮತ್ತು ಟೈಪ್ ಅಗಲ ದೋಷಗಳಿಗಾಗಿ ನೋಡಿ.
  • "ಇದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ" ಎಂಬುದು ಆಸಿಲ್ಲೋಸ್ಕೋಪ್, ಲಾಜಿಕ್ ವಿಶ್ಲೇಷಕ ಮತ್ತು ಸರಣಿ ಲಾಗ್‌ನೊಂದಿಗೆ ಸಾಬೀತಾಗಿದೆ, ಕಂಪೈಲರ್‌ನೊಂದಿಗೆ ಅಲ್ಲ.
  • ಅಳತೆ ಮಾಡಿದ ಮೌಲ್ಯವು ಲೆಕ್ಕಾಚಾರದೊಂದಿಗೆ ಒಪ್ಪದಿದ್ದರೆ, ಊಹೆಗಳನ್ನು ಬೆನ್ನಟ್ಟಿ.

ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯ

ನೀವು ಹೊಂದಿರುವ ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್‌ನೊಂದಿಗೆ (Arduino, STM32, ESP32), ನಿರ್ದಿಷ್ಟ ಆವರ್ತನದಲ್ಲಿ PWM ಅಥವಾ ಆವರ್ತಕ ಕಾರ್ಯಕ್ಕಾಗಿ AI ಅನ್ನು ಕೇಳಿ. ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವ ಮೊದಲು: (1) ಕಾಮೆಂಟ್ ಲೈನ್‌ನಲ್ಲಿ ಖಾತೆಯ ಆವರ್ತನ/ಸಮಯದ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಿ, (2) ISR ಮತ್ತು ಹಂಚಿಕೊಂಡ ವೇರಿಯೇಬಲ್‌ಗಳಲ್ಲಿ ಬಾಷ್ಪಶೀಲ ಮತ್ತು ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಪರಿಶೀಲಿಸಿ. ಅಪ್‌ಲೋಡ್ ಮಾಡಿದ ನಂತರ, ಆಸಿಲ್ಲೋಸ್ಕೋಪ್ ಅಥವಾ ಲಾಜಿಕ್ ವಿಶ್ಲೇಷಕದಿಂದ ನಿಜವಾದ ಆವರ್ತನವನ್ನು ಅಳೆಯಿರಿ ಮತ್ತು ಅದನ್ನು ಗುರಿಯೊಂದಿಗೆ ಹೋಲಿಸಿ. ವಿಚಲನವಿದ್ದರೆ, ಮೂಲವನ್ನು ಹುಡುಕಿ ಮತ್ತು ಅದನ್ನು ಸರಿಪಡಿಸಿ ಮತ್ತು ತಪ್ಪಾಗಿ ಭಾವಿಸಲಾದದನ್ನು ಗಮನಿಸಿ.