ಘಟಕ 3 / 9

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

ಲಾಭಗಳು:

  • AI ಜೊತೆಗೆ Arduino/STM32/ESP32 ಗಾಗಿ ರಿಜಿಸ್ಟರ್ ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್ ಸಂದರ್ಭವನ್ನು ನೀಡಿದ ಎಂಬೆಡೆಡ್ ಕೋಡ್ ಅನ್ನು ರಚಿಸುವ ಸಾಮರ್ಥ್ಯ
  • AI ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಅಡಚಣೆಗಳು, ಟೈಮರ್‌ಗಳು ಮತ್ತು ನಿರ್ಬಂಧಿಸದ ಲೂಪ್‌ಗಳಂತಹ ಎಂಬೆಡೆಡ್ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುವ ಮತ್ತು ಸರಿಪಡಿಸುವ ಸಾಮರ್ಥ್ಯ
  • ಹಾರ್ಡ್‌ವೇರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುವ ಮೊದಲು ರಚಿಸಲಾದ ಕೋಡ್ ಅನ್ನು ಮೆಮೊರಿ, ನೈಜ-ಸಮಯ ಮತ್ತು ಸುರಕ್ಷತೆಯ ವಿಷಯದಲ್ಲಿ ಪರಿಶೀಲಿಸುವ ಸಾಮರ್ಥ್ಯ

ಮೆಕಾಟ್ರಾನಿಕ್ಸ್‌ನಲ್ಲಿ, ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್ ಕಲ್ಪನೆಗಳು ಭೌತಿಕ ಪ್ರಪಂಚವನ್ನು ಭೇಟಿ ಮಾಡುವ ಸ್ಥಳವಾಗಿದೆ. Arduino, STM32, ESP32 ನಂತಹ ಕಾರ್ಡ್‌ಗಳು; ಇದು ಸಂವೇದಕಗಳನ್ನು ಓದುತ್ತದೆ, ಆಕ್ಯೂವೇಟರ್‌ಗಳನ್ನು ಓಡಿಸುತ್ತದೆ, ಸಂವಹನ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸೀಮಿತ ಮೆಮೊರಿ, ಸೀಮಿತ ಸಂಸ್ಕರಣಾ ಶಕ್ತಿ ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟಾದ ಸಮಯದ ಅವಶ್ಯಕತೆಗಳ ಅಡಿಯಲ್ಲಿ ಇದೆಲ್ಲವನ್ನೂ ಮಾಡುತ್ತದೆ. ಈ ಕ್ಷೇತ್ರದಲ್ಲಿ ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯು ತುಂಬಾ ಉಪಯುಕ್ತವಾಗಿದೆ: ಇದು ಸಂವೇದಕದ ಡೇಟಾಶೀಟ್‌ನ ಆಧಾರದ ಮೇಲೆ ರಿಜಿಸ್ಟರ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಹೊರತೆಗೆಯಬಹುದು, ಸಂವಹನ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಕೋಡ್ ಮಾಡಬಹುದು, ಟೈಮರ್ ಅಡಚಣೆಯನ್ನು ಹೊಂದಿಸಬಹುದು. ಆದರೆ ಎಂಬೆಡೆಡ್ ವ್ಯವಸ್ಥೆಗಳು AI ಅತ್ಯಂತ "ಮನವೊಪ್ಪಿಸುವ ಸುಳ್ಳುಗಳನ್ನು" ಉತ್ಪಾದಿಸುವ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ; ಏಕೆಂದರೆ ರಿಜಿಸ್ಟರ್ ವಿಳಾಸಗಳು, ಬಿಟ್ ಮಾಸ್ಕ್‌ಗಳು ಮತ್ತು ಸಮಯದ ನಡವಳಿಕೆಯು ಬೋರ್ಡ್‌ಗೆ ನಿರ್ದಿಷ್ಟವಾಗಿರುತ್ತದೆ ಮತ್ತು ಒಂದು ಬಿಟ್ ದೋಷವು ಸಂಪೂರ್ಣ ನಡವಳಿಕೆಯನ್ನು ಅಡ್ಡಿಪಡಿಸುತ್ತದೆ. ಈ ಘಟಕದಲ್ಲಿ, AI ನೊಂದಿಗೆ ಎಂಬೆಡೆಡ್ ಕೋಡ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸಬೇಕು ಮತ್ತು ಅದನ್ನು ಹಾರ್ಡ್‌ವೇರ್‌ಗೆ ಲೋಡ್ ಮಾಡುವ ಮೊದಲು ಅದನ್ನು ಹೇಗೆ ಪರಿಶೀಲಿಸಬೇಕು ಎಂಬುದನ್ನು ನಾವು ಕವರ್ ಮಾಡುತ್ತೇವೆ.

ಶುದ್ಧ ಸಾಫ್ಟ್‌ವೇರ್‌ನಿಂದ ಎಂಬೆಡೆಡ್ ಕೋಡ್‌ನ ವ್ಯತ್ಯಾಸ

ಡೆಸ್ಕ್‌ಟಾಪ್ ಪ್ರೋಗ್ರಾಂ ಸಾಕಷ್ಟು ಮೆಮೊರಿ, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವ ಸುಲಭತೆಯನ್ನು ಹೊಂದಿದೆ. ಎಂಬೆಡೆಡ್ ಕೋಡ್ ಇವುಗಳಲ್ಲಿ ಹೆಚ್ಚಿನದನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ:

ಗಾತ್ರ

ಡೆಸ್ಕ್ಟಾಪ್

ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್

ಸ್ಮರಣೆ

GB ಮಟ್ಟ

KB ಮಟ್ಟ (ಉದಾ. 2 KB RAM)

ಸಮಯ

ಸಾಮಾನ್ಯವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುವ

ಬಿಗಿಯಾದ, ನೈಜ ಸಮಯ

ಡೀಬಗ್ ಮಾಡುವುದು

ಸುಲಭ (ಡೀಬಗರ್, ಲಾಗ್)

ಹಾರ್ಡ್ (JTAG, ಸೀರಿಯಲ್, LED)

ದೋಷ ಫಲಿತಾಂಶ

ಪ್ರೋಗ್ರಾಂ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ

ಆಕ್ಟಿವೇಟರ್/ಹಾರ್ಡ್‌ವೇರ್ ಹಾನಿಗೊಳಗಾಗಬಹುದು

ಸಂಪನ್ಮೂಲ ಪ್ರವೇಶ

OS ಸಾರಾಂಶಗಳು

ರಿಜಿಸ್ಟರ್‌ಗೆ ನೇರ ಪ್ರವೇಶ

ಈ ವ್ಯತ್ಯಾಸಗಳು AI ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ನಿಮ್ಮ ಮಾನದಂಡಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತವೆ: ಮೆಮೊರಿ ಬಳಕೆ, ನೈಜ-ಸಮಯ (ನಿರ್ಬಂಧಿಸದ) ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್ ರಿಜಿಸ್ಟರ್ ನಿಖರತೆ ಯಾವಾಗಲೂ ನಿಮ್ಮ ಪರಿಶೀಲನಾಪಟ್ಟಿಯ ಮೇಲ್ಭಾಗದಲ್ಲಿರುತ್ತದೆ.

ಬ್ಲಾಕರ್ ವಿರುದ್ಧ ನಾನ್-ಬ್ಲಾಕಿಂಗ್ ಕೋಡ್

ಆರಂಭಿಕರು ಮಾಡಿದ ಸಾಮಾನ್ಯ ತಪ್ಪು (ಮತ್ತು ಆಗಾಗ್ಗೆ AI ನಿಂದ ಮಾಡಲಾಗುತ್ತದೆ) ವಿಳಂಬ () ಬಳಕೆಯಾಗಿದೆ. ವಿಳಂಬ (1000) ಪ್ರೊಸೆಸರ್ ಅನ್ನು 1 ಸೆಕೆಂಡಿಗೆ ಲಾಕ್ ಮಾಡುತ್ತದೆ; ಈ ಅವಧಿಯಲ್ಲಿ, ಯಾವುದೇ ಇತರ ಸಂವೇದಕಗಳನ್ನು ಓದಲಾಗುವುದಿಲ್ಲ, ಯಾವುದೇ ಬಟನ್ಗಳನ್ನು ನಿಯಂತ್ರಿಸಲಾಗುವುದಿಲ್ಲ. ಮೆಕಾಟ್ರಾನಿಕ್ಸ್‌ನಲ್ಲಿ ಇದು ಸ್ವೀಕಾರಾರ್ಹವಲ್ಲ. ಬದಲಿಗೆ, ಮಿಲಿಸ್() ಆಧಾರಿತ ತಡೆರಹಿತ ಮಾದರಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

// ಕೆಟ್ಟದು: ಬ್ಲಾಕರ್ -- ಪ್ರೊಸೆಸರ್ 1 ಸೆಕೆಂಡ್ ನಿರರ್ಥಕ ಲೂಪ್ () {ಡಿಜಿಟಲ್ ರೈಟ್ (LED, HIGH) ಗಾಗಿ ಬೇರೆ ಯಾವುದೇ ಕೆಲಸವನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ; ವಿಳಂಬ (1000); // ಎಲ್ಲವೂ ಡಿಜಿಟಲ್ ರೈಟ್ ಅನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ (ಎಲ್ಇಡಿ, ಕಡಿಮೆ); ವಿಳಂಬ (1000); // ತುರ್ತು ಬಟನ್ ಅನ್ನು ಈ ಸಮಯದಲ್ಲಿ ಓದಲಾಗುವುದಿಲ್ಲ!}// ಒಳ್ಳೆಯದು: ನಿರ್ಬಂಧಿಸದಿರುವುದು -- ಲೂಪ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿಲ್ಲ, ಇತರ ಕಾರ್ಯಗಳು ರನ್ ಆಗಿದ್ದರೆ (nowMs - previousMs >= ಮಧ್ಯಂತರ) {ಹಿಂದಿನMs = nowMs; ledStatus = !ledStatus; ಡಿಜಿಟಲ್ ರೈಟ್ (ಎಲ್ಇಡಿ, ಲೆಡ್ ಸ್ಟೇಟಸ್); } ಬಟನ್ ಚೆಕ್ (); // ಪ್ರತಿ ಚಕ್ರ ಸಂವೇದಕದಲ್ಲಿ ರನ್ ಮಾಡಬಹುದು ಓದು(); //ಯಾವುದೇ ಲೂಪ್‌ನಲ್ಲಿ ಓಡಬಹುದು}

ನಾನ್-ಬ್ಲಾಕಿಂಗ್ ಪ್ಯಾಟರ್ನ್ ಎಂಬೆಡೆಡ್ ಮೆಕಾಟ್ರಾನಿಕ್ಸ್‌ನ ಆಧಾರವಾಗಿದೆ: ನಿಯಂತ್ರಣ ಲೂಪ್ ನಿರಂತರವಾಗಿ ಹರಿಯುತ್ತದೆ, ಯಾವುದೇ ಕಾರ್ಯವು ಇನ್ನೊಂದನ್ನು ಲಾಕ್ ಮಾಡುವುದಿಲ್ಲ. ಕೋಡ್ ಬರೆಯುವಾಗ "ವಿಳಂಬವನ್ನು ಬಳಸಬೇಡಿ, ಮಿಲಿಸ್-ಆಧಾರಿತ ತಡೆರಹಿತವನ್ನು ಬರೆಯಿರಿ" ಎಂದು AI ಗೆ ಹೇಳುವುದು ಔಟ್‌ಪುಟ್‌ನ ಗುಣಮಟ್ಟವನ್ನು ನೇರವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.

ಸಲಹೆ: ವಿಳಂಬಕ್ಕಾಗಿ ನೋಡಿ(AI ನಿಂದ ಎಂಬೆಡೆಡ್ ಕೋಡ್‌ನಲ್ಲಿ. ನೀವು ಮುಖ್ಯ ನಿಯಂತ್ರಣ ಲೂಪ್‌ನಲ್ಲಿ ವಿಳಂಬವನ್ನು ನೋಡಿದರೆ, ಹೆಚ್ಚಾಗಿ ಆ ಕೋಡ್ ನೈಜ-ಸಮಯದ ಸಿಸ್ಟಮ್‌ಗೆ ಸೂಕ್ತವಲ್ಲ ಮತ್ತು ಪುನಃ ಬರೆಯಬೇಕು.

ಅಡಚಣೆಗಳು ಮತ್ತು ಟೈಮರ್ಗಳು

ನಾವು ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ ಕಾಯುವ ಬದಲು ಅಡಚಣೆಗಳೊಂದಿಗೆ ಸಮಯ-ನಿರ್ಣಾಯಕ ಘಟನೆಗಳನ್ನು (ಎನ್‌ಕೋಡರ್ ಪಲ್ಸ್, ಬಟನ್, ಆವರ್ತಕ ಮಾದರಿ) ಸೆರೆಹಿಡಿಯುತ್ತೇವೆ. ಇಂಟರಪ್ಟ್ ರೊಟೀನ್ (ISR) ಅನ್ನು ಚಿಕ್ಕದಾಗಿ ಮತ್ತು ಎಚ್ಚರಿಕೆಯಿಂದ ಬರೆಯಬೇಕು: ಯಾವುದೇ ವಿಳಂಬಗಳು, Serial.print ಅಥವಾ ದೀರ್ಘ ಲೆಕ್ಕಾಚಾರಗಳು ಇದರಲ್ಲಿ ಇಲ್ಲ; ಹಂಚಿದ ಅಸ್ಥಿರಗಳನ್ನು ಬಾಷ್ಪಶೀಲ ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ.

ಬಾಷ್ಪಶೀಲ ದೀರ್ಘ ಎನ್‌ಕೋಡರ್ ಕೌಂಟರ್ = 0; // ISR ಮತ್ತು ಲೂಪ್ ಅನ್ನು ಹಂಚಲಾಗಿದೆ -> ಬಾಷ್ಪಶೀಲ ಸ್ಥಿತಿ ಅನೂರ್ಜಿತ enkoderISR() { // ಸಣ್ಣ ISR: ಕೇವಲ ಎಣಿಕೆ ಮಾಡಿ, (ಡಿಜಿಟಲ್ ರೀಡ್(ENC_B)) ವೇಳೆ ಬೇರೆ ಕೆಲಸ ಮಾಡಬೇಡಿ enkoderCounter++; ಬೇರೆ ಎನ್‌ಕೋಡರ್‌ಕೌಂಟರ್--;}ನಿರರ್ಥಕ ಸೆಟಪ್() {ಪಿನ್‌ಮೋಡ್(ENC_A, INPUT_PULLUP); ಪಿನ್ ಮೋಡ್(ENC_B, INPUT_PULLUP); ಅಟ್ಯಾಚ್‌ಇಂಟರಪ್ಟ್(ಡಿಜಿಟಲ್‌ಪಿನ್‌ಟೋಇಂಟರ್‌ರಪ್ಟ್(ಎನ್‌ಸಿ_ಎ), ಎನ್‌ಕೋಡರ್‌ಐಎಸ್‌ಆರ್, ರೈಸಿಂಗ್);}ನಿರರ್ಥಕ ಲೂಪ್() {ಲಾಂಗ್ ಕೌಂಟರ್; ಯಾವುದೇ ಅಡಚಣೆಗಳು (); //ಅಟಾಮಿಕ್ ರೀಡಿಂಗ್ ಕೌಂಟರ್‌ಗಾಗಿ ಕಿರು ಅಡಚಣೆಗಳು = ಎನ್‌ಕೋಡರ್ ಕೌಂಟರ್; ಅಡಚಣೆಗಳು (); //ಕೌಂಟರಿನೊಂದಿಗೆ ಸುರಕ್ಷಿತವಾಗಿ ವ್ಯವಹಾರ ಮಾಡಿ...}

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ಮೂರು ನಿರ್ಣಾಯಕ ಅಂಶಗಳೆಂದರೆ AI ಸಾಮಾನ್ಯವಾಗಿ ತಪ್ಪಿಹೋಗುತ್ತದೆ: (1) ಹಂಚಿದ ಎನ್‌ಕೋಡರ್ ಕೌಂಟರ್ 'ಬಾಷ್ಪಶೀಲ' ಆಗಿರಬೇಕು ಅಥವಾ ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ನವೀಕರಣಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ; (2) ISR ಚಿಕ್ಕದಾಗಿರಬೇಕು; (3) ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ ಬಹು-ಬೈಟ್ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಓದುವಾಗ, ಪರಮಾಣು ಓದುವಿಕೆಗಾಗಿ ಅಡಚಣೆಗಳನ್ನು ಅಲ್ಪಾವಧಿಗೆ ಮುಚ್ಚಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ISR ಓದುವ ಸಮಯದಲ್ಲಿ ಮಧ್ಯಪ್ರವೇಶಿಸಬಹುದು ಮತ್ತು ಅರ್ಧ/ಭ್ರಷ್ಟ ಮೌಲ್ಯವನ್ನು ಓದಬಹುದು (ಜನಾಂಗದ ಸ್ಥಿತಿ). AI ಕೋಡ್‌ನಲ್ಲಿ ಈ ಮೂರು ಇವೆಯೇ ಎಂದು ಪರೀಕ್ಷಿಸಲು ಮರೆಯದಿರಿ.

ನಿಖರತೆ ಮತ್ತು ಡೇಟಾಶೀಟ್ ಅನ್ನು ನೋಂದಾಯಿಸಿ

AI ನಂಬಲರ್ಹವಾಗಿ ಸಂವೇದಕದ ರಿಜಿಸ್ಟರ್ ವಿಳಾಸ ಅಥವಾ MCU ನ ಕಾನ್ಫಿಗರೇಶನ್ ಬಿಟ್ ಅನ್ನು ತಪ್ಪಾಗಿ ಪ್ರತಿನಿಧಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, MPU6050 IMU ನ ಪವರ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ರಿಜಿಸ್ಟರ್ 0x6B ಆಗಿದೆ; AI ಇದನ್ನು 0x6A ಎಂದು ನೀಡಿದರೆ, ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ, ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ತೋರುತ್ತದೆ, ಆದರೆ ಸಂವೇದಕವು ಎಚ್ಚರಗೊಳ್ಳುವುದಿಲ್ಲ. ಡೇಟಾಶೀಟ್‌ಗೆ ಹೋಲಿಸಿದಾಗ ಮಾತ್ರ ಅಂತಹ ದೋಷಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗುತ್ತದೆ.

// MPU6050 ವೇಕ್-ಅಪ್: ಡೇಟಾಶೀಟ್ ಪ್ರಕಾರ PWR_MGMT_1 = 0x6B, ಮೌಲ್ಯ 0x00# MPU_ADDR 0x68# ವ್ಯಾಖ್ಯಾನಿಸಿ PWR_MGMT_1 0x6B // <-- ದಿಂದ ಪರಿಶೀಲಿಸು datasheetWire.beginTransmission(MPU_ADDR);Wire.write(PWR_MGMT_1);Wire.write(0x00); // ನಿದ್ರೆಯಿಂದ ಎಚ್ಚರಗೊಳ್ಳು modeWire.endTransmission(ನಿಜ);

ಗಮನ: ಡೇಟಾಶೀಟ್‌ನಿಂದ AI ನೀಡಿದ ಪ್ರತಿ ರಿಜಿಸ್ಟರ್ ವಿಳಾಸ, ಬಿಟ್ ಮಾಸ್ಕ್ ಮತ್ತು I2C/SPI ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಿ. ಈ ಮೌಲ್ಯಗಳು ಕಾರ್ಡ್ ಮತ್ತು ಚಿಪ್ ನಿರ್ದಿಷ್ಟವಾಗಿವೆ; AI "ನೆನಪಿಸಿಕೊಳ್ಳುವ" ಮೌಲ್ಯವು ಮತ್ತೊಂದು ಚಿಪ್ ಪರಿಷ್ಕರಣೆಯಿಂದ ಆಗಿರಬಹುದು. ತಪ್ಪಾದ ನೋಂದಣಿ ಮೌನವಾಗಿ ತಪ್ಪಾದ ನಡವಳಿಕೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ.

ದುರ್ಬಲ ಪ್ರಾಂಪ್ಟ್ / ಬಲವಾದ ಪ್ರಾಂಪ್ಟ್

ದುರ್ಬಲ:"ESP32 ನಲ್ಲಿ ತಾಪಮಾನ ಸಂವೇದಕವನ್ನು ಓದಿ."(ಯಾವ ಸಂವೇದಕ? ಯಾವ ಪ್ರೋಟೋಕಾಲ್? ಯಾವ ಪಿನ್? ಜೆನೆರಿಕ್, ಬಹುಶಃ ತಪ್ಪಾದ ಕೋಡ್.)STRONG:"OneWire ಜೊತೆಗೆ GPIO4 ನಿಂದ ESP32 (Arduino ಫ್ರೇಮ್‌ವರ್ಕ್) ನಲ್ಲಿ DS18B20 ತಾಪಮಾನ ಸಂವೇದಕವನ್ನು ಓದಿ. ಪ್ರತಿ 1 ಸೆಕೆಂಡಿಗೆ ತಡೆರಹಿತವನ್ನು ಬರೆಯಿರಿ, ಪ್ರತಿ 1 ಸೆಕೆಂಡಿಗೆ ಮಾದರಿ ದೋಷವನ್ನು ಫ್ಲ್ಯಾಗ್ ಮಾಡಲಾದ ದೋಷವನ್ನು ಬಳಸಿ. -127 ಅಥವಾ 85) ದಯವಿಟ್ಟು ಮೊದಲ ಕಾಮೆಂಟ್‌ನಲ್ಲಿ ನೀವು ಬಳಸುವ ಪ್ರತಿಯೊಂದು ಲೈಬ್ರರಿ ಮತ್ತು ಪಿನ್ ಸಂಪರ್ಕವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ, ಸ್ಟ್ರಿಂಗ್ ಬದಲಿಗೆ ಚಾರ್ ಬಫರ್ ಬಳಸಿ.

ಶಕ್ತಿಯುತ ಪ್ರಾಂಪ್ಟ್; ಇದು ಚಿಪ್, ಫ್ರೇಮ್‌ವರ್ಕ್, ಸಂವೇದಕ, ಪ್ರೋಟೋಕಾಲ್, ಪಿನ್, ಮಾದರಿ ಮಾದರಿ, ದೋಷ ಸ್ಥಿತಿ ಮತ್ತು ಮೆಮೊರಿ ನಿರ್ಬಂಧವನ್ನು ನೀಡುತ್ತದೆ. ಈ ರೀತಿಯಲ್ಲಿ ಔಟ್ಪುಟ್ ಪರಿಶೀಲಿಸಬಹುದಾದ ಮತ್ತು ವಾಸ್ತವಿಕವಾಗಿದೆ.

ಎಂಬೆಡೆಡ್ ಕೋಡ್‌ಗಾಗಿ ಪರಿಶೀಲನಾಪಟ್ಟಿ ಪರಿಶೀಲಿಸಿ

AI ಔಟ್‌ಪುಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವ ಮೊದಲು, ಅದನ್ನು ಈ ಪಟ್ಟಿಯ ಮೂಲಕ ರವಾನಿಸಿ:

  1. ನಿರ್ಬಂಧಿಸುವುದು: ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ ವಿಳಂಬ ಅಥವಾ ದೀರ್ಘ ನಿರ್ಬಂಧವಿದೆಯೇ?
  2. ಬಾಷ್ಪಶೀಲ: ISR ನೊಂದಿಗೆ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆಯೇ?
  3. ಪರಮಾಣು ಪ್ರವೇಶ: ಬಹು-ಬೈಟ್ ಹಂಚಿಕೆಯ ವೇರಿಯಬಲ್ ಅನ್ನು ಓದಲು ಸುರಕ್ಷಿತವಾಗಿದೆಯೇ?
  4. ನೋಂದಾಯಿಸಿ: ವಿಳಾಸಗಳು ಮತ್ತು ಬಿಟ್ ಮಾಸ್ಕ್‌ಗಳು ಡೇಟಾಶೀಟ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆಯೇ?
  5. ಮೆಮೊರಿ: ಸ್ಟ್ರಿಂಗ್, ದೊಡ್ಡ ಅರೇಗಳು, ಪುನರಾವರ್ತನೆಯು KB ಮಟ್ಟದ ಓವರ್‌ಫ್ಲೋ ಅನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆಯೇ?
  6. ದೋಷ ನಿರ್ವಹಣೆ: ಸಂವೇದಕ ಓದುವಿಕೆ ದೋಷಗಳು, ಸಂವಹನ ಸಮಯ ಮೀರುವಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಲಾಗಿದೆಯೇ?
  7. ಸುರಕ್ಷಿತ ಆರಂಭ: ಪ್ರಾರಂಭದಲ್ಲಿ ಆಕ್ಯೂವೇಟರ್ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಸುರಕ್ಷಿತ (ನಿಷ್ಕ್ರಿಯ) ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಿಸಲಾಗಿದೆಯೇ?

ಮಿನಿ ಕೇಸ್

ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಸ್ ಇಂಜಿನಿಯರ್ ಬರನ್ ಅವರು AI ಅನ್ನು ಡ್ರೋನ್‌ಗಾಗಿ IMU ಅನ್ನು ಓದುವ ಕೋಡ್ ಅನ್ನು ಬರೆಯುತ್ತಾರೆ. ಕೋಡ್ ಕಂಪೈಲ್ ಆಗುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಕಾಣುತ್ತದೆ, ಆದರೆ ಕೋನ ಮೌಲ್ಯಗಳು ಅರ್ಥಹೀನವಾಗಿವೆ. ಬ್ಯಾರನ್ ಪರಿಶೀಲನಾಪಟ್ಟಿಯನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ: ರಿಜಿಸ್ಟರ್ ವಿಳಾಸಗಳನ್ನು ಡೇಟಾಶೀಟ್‌ನೊಂದಿಗೆ ಹೋಲಿಸುತ್ತದೆ ಮತ್ತು AI ಗೈರೊಸ್ಕೋಪ್ ಕಾನ್ಫಿಗರೇಶನ್ ರಿಜಿಸ್ಟರ್ ಅನ್ನು ತಪ್ಪಾಗಿ ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ (0x1B ಬದಲಿಗೆ 0x1A), ಆದ್ದರಿಂದ ಸೂಕ್ಷ್ಮತೆಯ ಪ್ರಮಾಣವು ತಪ್ಪಾಗಿದೆ. ಸರಿಪಡಿಸಿದ ನಂತರ, ಮೌಲ್ಯಗಳು ನೆಲೆಗೊಳ್ಳುತ್ತವೆ. ನಂತರ ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ ವಿಳಂಬ(10) ಸೂಚನೆಗಳು; ಇದನ್ನು ಮಿಲಿಸ್-ಆಧಾರಿತ ರಚನೆಗೆ ಪರಿವರ್ತಿಸುವುದು, ಏಕೆಂದರೆ ಫ್ಲೈಟ್ ಕಂಟ್ರೋಲ್ ಲೂಪ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸುವುದು ಸ್ವೀಕಾರಾರ್ಹವಲ್ಲ. ಅಂತಿಮವಾಗಿ, ಹಂಚಿದ ಕೌಂಟರ್ ವೇರಿಯೇಬಲ್ ಬಾಷ್ಪಶೀಲವಾಗಿಲ್ಲ ಎಂದು ನೋಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಸೇರಿಸುತ್ತದೆ. AI ಅಸ್ಥಿಪಂಜರವನ್ನು ವೇಗವಾಗಿ ನೀಡಿತು; ಆದರೆ ವಿಮರ್ಶೆ ಪಟ್ಟಿಯು ಮೂರು ಪ್ರತ್ಯೇಕ ದೋಷಗಳನ್ನು ಸೆಳೆಯಿತು: ನೋಂದಣಿ, ನಿರ್ಬಂಧಿಸುವುದು ಮತ್ತು ಬಾಷ್ಪಶೀಲ, ಮತ್ತು ಯಂತ್ರಾಂಶವು ಅಪಾಯದಲ್ಲಿಲ್ಲ.

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

  • ಮುಖ್ಯ ನಿಯಂತ್ರಣ ಲೂಪ್‌ನಲ್ಲಿ ವಿಳಂಬ() ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ನೈಜ-ಸಮಯದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕೊಲ್ಲುವುದು.
  • ISR ನೊಂದಿಗೆ ಹಂಚಿಕೊಂಡಿರುವ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಅಸ್ಥಿರಗೊಳಿಸುವುದನ್ನು ತಪ್ಪಿಸಿ ಮತ್ತು ಮೂಕ ಡೇಟಾ ಭ್ರಷ್ಟಾಚಾರವನ್ನು ಅನುಭವಿಸುವುದನ್ನು ತಪ್ಪಿಸಿ.
  • ಬಹು-ಬೈಟ್ ಹಂಚಿಕೆಯ ವೇರಿಯಬಲ್ ಅನ್ನು ಪರಮಾಣು ಅಲ್ಲದ ರೀತಿಯಲ್ಲಿ ಓದುವುದು ಮತ್ತು ರೇಸ್ ಸ್ಥಿತಿಯನ್ನು ರಚಿಸುವುದು.
  • ಡೇಟಾಶೀಟ್‌ನೊಂದಿಗೆ AI ನೀಡಿದ ರಿಜಿಸ್ಟರ್/ಬಿಟ್ ಮಾಸ್ಕ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತಿಲ್ಲ.
  • ಸೀಮಿತ RAM ನಲ್ಲಿ ಸ್ಟ್ರಿಂಗ್‌ಗಳು ಮತ್ತು ದೊಡ್ಡ ಅರೇಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಮೊರಿ ಓವರ್‌ಫ್ಲೋ ಅನ್ನು ರಚಿಸುವುದು.
  • ಆಕ್ಯೂವೇಟರ್ ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಆರಂಭದಲ್ಲಿ ಸುರಕ್ಷಿತಗೊಳಿಸಲು ಮರೆಯಲಾಗುತ್ತಿದೆ.

ಸಾರಾಂಶದಲ್ಲಿ

  • ಎಂಬೆಡೆಡ್ ಕೋಡ್; ಇದು ಸೀಮಿತ ಮೆಮೊರಿ, ಬಿಗಿಯಾದ ಸಮಯ ಮತ್ತು ನೇರ ನೋಂದಣಿ ಪ್ರವೇಶದೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
  • ಮುಖ್ಯ ಲೂಪ್‌ನಲ್ಲಿ, ವಿಳಂಬದ ಬದಲಿಗೆ ಮಿಲಿಸ್-ಆಧಾರಿತ ತಡೆರಹಿತ ಮಾದರಿಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
  • ISR ಚಿಕ್ಕದಾಗಿದೆ; ಹಂಚಿದ ಅಸ್ಥಿರಗಳು ಬಾಷ್ಪಶೀಲವಾಗಿರಬೇಕು ಮತ್ತು ಪರಮಾಣು ಪ್ರವೇಶಿಸಬೇಕು.
  • ನೋಂದಣಿ ವಿಳಾಸಗಳು ಮತ್ತು ಬಿಟ್ ಮುಖವಾಡಗಳನ್ನು ಯಾವಾಗಲೂ ಡೇಟಾಶೀಟ್ ವಿರುದ್ಧ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ; AI ತಪ್ಪಾಗಿರಬಹುದು.
  • ಮೆಮೊರಿ, ದೋಷ ನಿರ್ವಹಣೆ ಮತ್ತು ಸುರಕ್ಷಿತ ಆರಂಭಿಕ ಸ್ಥಿತಿಯನ್ನು ಯಾವಾಗಲೂ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ.
  • ಶಕ್ತಿಯುತ ಪ್ರಾಂಪ್ಟ್; ಇದು ಚಿಪ್, ಫ್ರೇಮ್‌ವರ್ಕ್, ಸಂವೇದಕ, ಪ್ರೋಟೋಕಾಲ್, ಪಿನ್ ಮತ್ತು ನಿರ್ಬಂಧಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

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

ಸಂವೇದಕವನ್ನು (ಉದಾ. DS18B20, MPU6050 ಅಥವಾ HC-SR04) ಮತ್ತು ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ (Arduino/ESP32/STM32) ಆಯ್ಕೆಮಾಡಿ. ಈ ಘಟಕದಲ್ಲಿ ಪ್ರಬಲವಾದ ಪ್ರಾಂಪ್ಟ್ ಟೆಂಪ್ಲೇಟ್‌ನೊಂದಿಗೆ AI ನಿರ್ಬಂಧಿಸದ ಓದುವ ಕೋಡ್ ಅನ್ನು ರಚಿಸುವಂತೆ ಮಾಡಿ. ನಂತರ ವಿಮರ್ಶೆ ಪರಿಶೀಲನಾಪಟ್ಟಿಯ ಏಳು ಐಟಂಗಳನ್ನು ಒಂದೊಂದಾಗಿ ಅನುಸರಿಸಿ: ಡೇಟಾಶೀಟ್‌ನೊಂದಿಗೆ ಕನಿಷ್ಠ ಒಂದು ರಿಜಿಸ್ಟರ್/ಪಿನ್ ಮೌಲ್ಯವನ್ನು ಹೋಲಿಸಿ, ಲೂಪ್ ವಿಳಂಬಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಿ, ಹಂಚಿದ ವೇರಿಯೇಬಲ್‌ಗಳ ಬಾಷ್ಪಶೀಲ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ. ಮೊದಲ ಪ್ರಯತ್ನದಲ್ಲಿ ಎಷ್ಟು ಐಟಂಗಳನ್ನು "ಪಾಸ್" ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಎಷ್ಟು ತಿದ್ದುಪಡಿ ಅಗತ್ಯವಿದೆ? ನೀವು ಕಂಡುಕೊಳ್ಳುವ ಪ್ರತಿಯೊಂದು ಸಮಸ್ಯೆ ಮತ್ತು ಅದರ ಪರಿಹಾರವನ್ನು ಗಮನಿಸಿ.