ಈ ಹೊಸ ಲೇಖನದಲ್ಲಿ ನಾವು ಏನನ್ನು ನೋಡಲಿದ್ದೇವೆ ಕಾವಲುಗಾರ, ಇದನ್ನು ಯಾವುದಕ್ಕಾಗಿ ಬಳಸಬಹುದು ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಯೋಜನೆಗಳಲ್ಲಿ ಹೇಗೆ ಬಳಸುವುದು ಆರ್ಡುನೋ. ಈ ಆಸಕ್ತಿದಾಯಕ ಮತ್ತು ಅಜ್ಞಾತ ಕಾರ್ಯದ ಬಗ್ಗೆ ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಎಲ್ಲವೂ. ಮತ್ತು ಹೌದು, ಅದರ ಹೆಸರೇ ಸೂಚಿಸುವಂತೆ (ವಾಚ್ಡಾಗ್), ಕೆಲವು ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಇದನ್ನು ಬಳಸಬಹುದು.
ಇಲ್ಲಿ ನಾವು ನೋಡುತ್ತೇವೆ ನೀವು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದದ್ದು ಬಗ್ಗೆ…
ಕಾವಲು ನಾಯಿ ಎಂದರೇನು?
ಕಂಪ್ಯೂಟಿಂಗ್ನಲ್ಲಿ, ಎ ಕಾವಲು ನಾಯಿ ಇದು ಸಿಸ್ಟಮ್ ಅಥವಾ ಪ್ರೋಗ್ರಾಂನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಬಳಸಲಾಗುವ ಮೇಲ್ವಿಚಾರಣಾ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಕ್ರ್ಯಾಶ್ಗಳು ಅಥವಾ ಫ್ರೀಜ್ಗಳಂತಹ ವ್ಯವಸ್ಥೆಯಲ್ಲಿನ ಅಸಹಜ ಸಂದರ್ಭಗಳು ಅಥವಾ ವೈಫಲ್ಯಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಮತ್ತು ಪ್ರತಿಕ್ರಿಯಿಸುವುದು ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯ ನಿರಂತರತೆ ಅಥವಾ ಸಿಸ್ಟಮ್ನ ಚೇತರಿಕೆಗೆ ಖಾತರಿ ನೀಡಲು ಸರಿಪಡಿಸುವ ಕ್ರಮಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದು ಇದರ ಮುಖ್ಯ ಕಾರ್ಯವಾಗಿದೆ.
ಕಾವಲು ನಾಯಿ ಟೈಮರ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ನಿರ್ದಿಷ್ಟ ಸಮಯದ ಮಧ್ಯಂತರಕ್ಕಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. ಆ ಸಮಯದ ಮಧ್ಯಂತರದಲ್ಲಿ ಸಿಸ್ಟಮ್ ಅಥವಾ ಪ್ರೋಗ್ರಾಂ ನಿರ್ದಿಷ್ಟ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸದಿದ್ದರೆ ಅಥವಾ ವಾಚ್ಡಾಗ್ ಅನ್ನು ಪವರ್ ಮಾಡದಿದ್ದರೆ (ಅಂದರೆ, ಅದು ಅದನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವುದಿಲ್ಲ), ಸಿಸ್ಟಮ್ ಅನಪೇಕ್ಷಿತ ಸ್ಥಿತಿಯಲ್ಲಿದೆ ಅಥವಾ ಸರಿಯಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ ಮತ್ತು ಡೀಫಾಲ್ಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಎಂದು ವಾಚ್ಡಾಗ್ ಊಹಿಸುತ್ತದೆ ಕ್ರಮ. ಈ ಕ್ರಿಯೆಯು ಅನುಷ್ಠಾನದ ಮೂಲಕ ಬದಲಾಗಬಹುದು ಮತ್ತು ಸಿಸ್ಟಮ್ ಅನ್ನು ರೀಬೂಟ್ ಮಾಡುವುದು, ದೋಷ ಲಾಗ್ಗಳನ್ನು ರಚಿಸುವುದು, ಎಚ್ಚರಿಕೆಗಳನ್ನು ಹೆಚ್ಚಿಸುವುದು ಅಥವಾ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ನಿರ್ದಿಷ್ಟ ಕ್ರಮಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದು ಒಳಗೊಂಡಿರಬಹುದು.
ವಾಚ್ಡಾಗ್ ಅನ್ನು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ಸರ್ವರ್ಗಳಿಂದ ಸಾಧನಗಳಿಗೆ ವಿವಿಧ ಕಂಪ್ಯೂಟರ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ಸಾಧನಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ Arduino ಸೇರಿದಂತೆ ಎಂಬೆಡೆಡ್ ಮತ್ತು ನಿರ್ಣಾಯಕ ನೈಜ-ಸಮಯದ ವ್ಯವಸ್ಥೆಗಳು. ಸಮಸ್ಯೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪತ್ತೆಹಚ್ಚುವ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯಿಸುವ ಮೂಲಕ ಸಿಸ್ಟಮ್ ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಲಭ್ಯತೆಯನ್ನು ಸುಧಾರಿಸುವುದು ಇದರ ಪ್ರಾಥಮಿಕ ಗುರಿಯಾಗಿದೆ, ಹೀಗಾಗಿ ವೈಫಲ್ಯದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಹಸ್ತಚಾಲಿತ ಹಸ್ತಕ್ಷೇಪದ ಅಗತ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
Arduino ವಾಚ್ಡಾಗ್ ಎಂದರೇನು?
Arduino ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ಅನ್ನು ಅಪ್ಲಿಕೇಶನ್ನ ಅಗತ್ಯಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ಹೊಂದಿಸಬೇಕು. ಅವನು ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ಆಂತರಿಕ 128 kHz ಗಡಿಯಾರದ ಮೂಲವನ್ನು ಬಳಸುತ್ತದೆ (ಬಳಸಿದ ಬೋರ್ಡ್ ಮತ್ತು MCU ಅನ್ನು ಅವಲಂಬಿಸಿ ಬದಲಾಗಬಹುದು). ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಅದು ಶೂನ್ಯದಿಂದ ಬಳಕೆದಾರರಿಂದ ಪೂರ್ವನಿರ್ಧರಿತ ಮೌಲ್ಯಕ್ಕೆ ಎಣಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ಆ ಮೌಲ್ಯವನ್ನು ತಲುಪಿದಾಗ ಅದನ್ನು ಮರುಹೊಂದಿಸದಿದ್ದರೆ, ಅದು ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ ಅನ್ನು ಮರುಹೊಂದಿಸುತ್ತದೆ.
ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ATmega328P, ಇದನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ Arduino UNO, 10 ವಿಭಿನ್ನ ಸಮಯ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀಡುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ಟೈಮರ್ ಯಾವಾಗ ಉಕ್ಕಿ ಹರಿಯುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಮರುಹೊಂದಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. ವಿಭಿನ್ನ ಸಮಯದ ಮಧ್ಯಂತರಗಳು ಕೆಳಕಂಡಂತಿವೆ: 16 ms, 32 ms, 64 ms, 0.125 ಸೆಕೆಂಡುಗಳು, 0.25 ಸೆಕೆಂಡುಗಳು, 0.5 ಸೆಕೆಂಡುಗಳು, 1 ಸೆಕೆಂಡ್, 2 ಸೆಕೆಂಡುಗಳು, 4 ಸೆಕೆಂಡುಗಳು ಮತ್ತು 8 ಸೆಕೆಂಡುಗಳು, ನಾನು ಸೇರಿಸಿದ ಕೋಷ್ಟಕದಲ್ಲಿ ನಾವು ನಂತರ ನೋಡುತ್ತೇವೆ.
ವಾಚ್ಡಾಗ್ ಟೈಮರ್ನೊಂದಿಗೆ ನೀವು ಏನು ಮಾಡಬಹುದು ಎಂಬುದು ನಿಮಗೆ ಇನ್ನೂ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲದಿದ್ದರೆ Arduino UNO, ಸರಿ ನೊಡೋಣ ಒಂದು ಉದಾಹರಣೆ ಆದ್ದರಿಂದ ನೀವು ಅದನ್ನು ಸಚಿತ್ರವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೀರಿ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಎಲ್ಇಡಿಗಳ ಸರಳ ಬ್ಲಿಂಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. while() ಲೂಪ್ ಅನ್ನು ನಮೂದಿಸುವ ಮೊದಲು LED ಗಳು ಒಂದು ಸೆಟ್ ಅವಧಿಯವರೆಗೆ ಮಿಟುಕಿಸುತ್ತವೆ. ಈ while() ಲೂಪ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಲಾದ ವ್ಯವಸ್ಥೆಗೆ ಪರ್ಯಾಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ವೈಟ್() ಲೂಪ್ನಲ್ಲಿರುವಾಗ ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ಅನ್ನು ಮರುಹೊಂದಿಸದ ಕಾರಣ, ಇದು ಸಿಸ್ಟಮ್ ರೀಬೂಟ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ ಮತ್ತು ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಮತ್ತು ರೀಬೂಟ್ ಆಗುವ ಮೊದಲು ಎಲ್ಇಡಿಗಳು ಮತ್ತೆ ಮಿನುಗುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತವೆ. ಈ ಚಕ್ರವು ಮುಂದುವರಿಯುತ್ತದೆ ...
ಪರಿಗಣನೆಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳು
ವಾಚ್ಡಾಗ್ ಟೈಮರ್ ಕೋಡ್ನ ಆರಂಭದಲ್ಲಿ ಇದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ವಾಚ್ಡಾಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೊದಲು x ಸೆಕೆಂಡುಗಳ ವಿಳಂಬವನ್ನು ಸಂಯೋಜಿಸಲಾಗಿದೆ. ಹೊಸ ಕೋಡ್ ಲೋಡ್ ಆಗುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಫ್ಲ್ಯಾಷ್ ಮೆಮೊರಿಗೆ ಕೋಡ್ ಅನ್ನು ಬರೆಯಲು ಸಾಕಷ್ಟು ಸಮಯವನ್ನು ಅನುಮತಿಸಲು Arduino ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಅನುಮತಿಸಲು ಈ ವಿಳಂಬವು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಮುನ್ನೆಚ್ಚರಿಕೆಯಾಗಿ ಈ ಅಂಶವು ಪ್ರಸ್ತುತವಾಗಿದೆ. ದೋಷಪೂರಿತ ಕೋಡಿಂಗ್ ಅಥವಾ ಅಸಮರ್ಪಕ ಪರಿಗಣನೆಗಳಿಂದಾಗಿ, ಲಿಖಿತ ಕೋಡ್ ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್ ಅನ್ನು ಬಹಳ ಕಡಿಮೆ ಅಂತರದಲ್ಲಿ ಅನಂತವಾಗಿ ಮರುಹೊಂದಿಸುವ ಪರಿಸ್ಥಿತಿಯು ಉದ್ಭವಿಸಬಹುದು. ಇದು Arduino ಬೋರ್ಡ್ ಅನ್ನು ಹಾನಿಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ಅನ್ನು ಸರಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ಇದು ಸಂಭವಿಸಿದಲ್ಲಿ, ಲಾಕ್ ಆಗಿರುವ Arduino ನಲ್ಲಿ ISP ಆಗಿ ಮತ್ತೊಂದು Arduino ಅನ್ನು ಬಳಸಿಕೊಂಡು ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಬರ್ನ್ ಮಾಡುವುದು ಅವಶ್ಯಕ...
ನಾವು Arduino ವಾಚ್ಡಾಗ್ ಅನ್ನು ಬಳಸುವಾಗ, ಅದನ್ನು ಬಳಸುವುದು ಅವಶ್ಯಕ ಬಿಟ್ ರೆಜಿಸ್ಟರ್ಗಳು ಚಿಪ್ನ ನಡವಳಿಕೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು. ಸಂಬಂಧಿತ ರೆಜಿಸ್ಟರ್ಗಳು ಮತ್ತು ಅವುಗಳ ಅರ್ಥವನ್ನು Arduino ಬೋರ್ಡ್ನಲ್ಲಿರುವ ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ ಡೇಟಾಶೀಟ್ನಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ. ಆದಾಗ್ಯೂ, Arduino ಇಂಟಿಗ್ರೇಟೆಡ್ ಡೆವಲಪ್ಮೆಂಟ್ ಎನ್ವಿರಾನ್ಮೆಂಟ್ (IDE) ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಕೆಲವು ಕಾರ್ಯಗಳು ಮತ್ತು ಮ್ಯಾಕ್ರೋಗಳೊಂದಿಗೆ ಬರುತ್ತದೆ, ಇದನ್ನು ಗ್ರಂಥಾಲಯವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬಹುದು. #ಸೇರಿಸು AVR ಚಿಪ್ನ ವಾಚ್ಡಾಗ್ ಅನ್ನು ಬಳಸಲು.
ಈ ರೀತಿಯಾಗಿ, ನಾವು ವಾಚ್ಡಾಗ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು wdt_enable() ಕಾರ್ಯದ ಮೂಲಕ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದು. ಟೈಮರ್ ಅನ್ನು ಮರುಹೊಂದಿಸದಿದ್ದಲ್ಲಿ ಬೋರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಮೊದಲು ಈ ಕಾರ್ಯದ ವಾದವು ಸಮಯವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ನೀವು ಕೋಡ್ನಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದಾದ ಮೌಲ್ಯಗಳಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಇಲ್ಲಿ ನಾನು ಅವುಗಳನ್ನು ಸೇರಿಸುತ್ತೇನೆ:
ಕಾವಲುಗಾರನನ್ನು ಪ್ರಚೋದಿಸುವ ಮೊದಲು ಸಮಯ | wtd_enable() ವಾದ |
15 ms | WDTO_15MS |
30 ms | WDTO_30MS |
60 ms | WDTO_60MS |
120 ms | WDTO_120MS |
250 ms | WDTO_250MS |
500 ms | WDTO_500MS |
1 ರು | WDTO_1S |
2 ರು | WDTO_2S |
4 ರು | WDTO_4S |
8 ರು | WDTO_8S |
Arduino ನಲ್ಲಿ ವಾಚ್ಡಾಗ್ ಅನ್ನು ಬಳಸುವ ಉದಾಹರಣೆ
ಅಂತಿಮವಾಗಿ, Arduino IDE ನಲ್ಲಿ ಉದಾಹರಣೆಯೊಂದಿಗೆ ವಾಚ್ಡಾಗ್ ಅನ್ನು ಪ್ರಾಯೋಗಿಕ ರೀತಿಯಲ್ಲಿ ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ನೋಡಲಿದ್ದೇವೆ. ನಾವು ನೋಡುವಂತೆ, ಇದು ತುಂಬಾ ಸರಳವಾಗಿದೆ, ನೀವು ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ಈ ರೀತಿಯ ವಿವಿಧ ಮೂಲ ಕೋಡ್ಗಳನ್ನು ಕಾಣಬಹುದು, ಆದ್ದರಿಂದ ನೀವು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ಗಳಲ್ಲಿ ವಾಚ್ಡಾಗ್ ಅನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಸ್ವಂತ ಕೋಡ್ಗಳನ್ನು ಅಭ್ಯಾಸ ಮಾಡಬಹುದು, ಮಾರ್ಪಡಿಸಬಹುದು ಮತ್ತು ರಚಿಸಬಹುದು. ನೋಡೋಣ ನಮ್ಮ ಉದಾಹರಣೆ:
#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h) void setup() { wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos } void loop() { wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio //Aquí iría el código de tu programa... }
Arduino ಗಾಗಿ ಈ ಸ್ಕೆಚ್ ಉದಾಹರಣೆಯಲ್ಲಿ ನೋಡಬಹುದಾದಂತೆ, ಇವೆ ಮೂರು ಕಾರ್ಯಗಳು ವಾಚ್ಡಾಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಗಮನಾರ್ಹವಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ, ಮತ್ತು ಇವುಗಳು:
- wdt_disable() Arduino ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವಾಗ ಟೈಮರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು.
- wdt_enable(ಸಮಯ) ಟೈಮರ್ಗೆ ಮಧ್ಯಂತರವನ್ನು ನಿಯೋಜಿಸಲು ಮತ್ತು ಅದನ್ನು ಪ್ರಾರಂಭಿಸಲು, ಮೇಲಿನ ಕೋಷ್ಟಕದಲ್ಲಿ ನಾನು ತೋರಿಸಿರುವಂತೆ ಅನುಗುಣವಾದ ಸಮಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ.
- wdt_reset() ನಿಯೋಜಿಸಲಾದ ಮಧ್ಯಂತರವನ್ನು ನವೀಕರಿಸಲು ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಮರುಪ್ರಾರಂಭಿಸುವುದಿಲ್ಲ.