ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

ದ್ವಿತೀಯ ಮಾರುಕಟ್ಟೆಯಲ್ಲಿ ಲೇಖಕರು ಆಸಕ್ತಿದಾಯಕ ಸಾಧನವನ್ನು ಖರೀದಿಸುವುದರೊಂದಿಗೆ ಇದು ಪ್ರಾರಂಭವಾಯಿತು - ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE (ಸಣ್ಣ ವಿವರಣೆ) ಇದು ಶಾಲೆಗಳಿಗೆ ಉದ್ದೇಶಿಸಲಾಗಿದೆ: ತರಗತಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಬ್ಬ ವಿದ್ಯಾರ್ಥಿಯು ಎಲೆಕ್ಟ್ರಾನಿಕ್ ನೋಟ್‌ಬುಕ್ ಅಥವಾ ತೊಂಬತ್ತರ ದಶಕದ ಅನುವಾದಕನಂತೆಯೇ ಸಾಧನವನ್ನು ಪಡೆಯುತ್ತಾನೆ, ಶಿಕ್ಷಕರು ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತಾರೆ ಮತ್ತು ವಿದ್ಯಾರ್ಥಿಗಳು ಸಾಧನಗಳ ಕೀಬೋರ್ಡ್‌ಗಳಲ್ಲಿ ಉತ್ತರಗಳನ್ನು ಟೈಪ್ ಮಾಡುತ್ತಾರೆ, ಅದನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ ರೇಡಿಯೋ ಚಾನಲ್ (802.15.4) ಶಿಕ್ಷಕರ ಪಿಸಿಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ರಿಸೀವರ್‌ಗೆ.

ಈ ಸಾಧನಗಳನ್ನು ಹಲವಾರು ವರ್ಷಗಳ ಹಿಂದೆ ಸ್ಥಗಿತಗೊಳಿಸಲಾಯಿತು, ಮತ್ತು ಪ್ರತಿಯೊಂದಕ್ಕೂ $100- $200 ಕ್ಕೆ ಖರೀದಿಸಿದ ಶಾಲೆಗಳು ಈಗ eBay ನಲ್ಲಿ $10 ಅಥವಾ ಅದಕ್ಕಿಂತ ಕಡಿಮೆ ಬೆಲೆಗೆ ಪಾಪ್ ಅಪ್ ಆಗುತ್ತಿವೆ. ಅಲ್ಲಿನ ಯಂತ್ರಾಂಶವು ಗೀಕಿ ಪ್ರಯೋಗಗಳಿಗೆ ತುಂಬಾ ಸೂಕ್ತವಾಗಿದೆ:

  • 60 ಕೀಲಿ ಕೀಬೋರ್ಡ್
  • 384×136 ರೆಸಲ್ಯೂಶನ್‌ನೊಂದಿಗೆ ಪ್ರದರ್ಶಿಸಿ, ಪ್ರತಿ ಪಿಕ್ಸೆಲ್‌ಗೆ 2 ಬಿಟ್‌ಗಳು - BC, CGA ಗೆ ಹೋಲುತ್ತವೆ, ಆದರೆ 4 ಬಣ್ಣಗಳಲ್ಲ, ಆದರೆ ಹೊಳಪಿನ ಹಂತಗಳು
  • ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ ATmega128RFA1 (128 kB ಫ್ಲಾಶ್ ಮೆಮೊರಿ, 4 kB ROM, 16 kB RAM, 802.15.4 ಟ್ರಾನ್ಸ್‌ಸಿವರ್)
  • ಬಾಹ್ಯ (ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಸಂಪೂರ್ಣ ಸಾಧನವಲ್ಲ) 1 ಮೆಗಾಬಿಟ್ (128 ಕಿಲೋಬೈಟ್) SPI ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಫ್ಲಾಶ್ ಮೆಮೊರಿ
  • 4 AAA ಅಂಶಗಳಿಗೆ ವಿಭಾಗ.

ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್‌ನ ಹೆಸರಿನಿಂದ ಅದು AVR ಕುಟುಂಬಕ್ಕೆ ಸೇರಿದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ, ಅಂದರೆ ಸಾಧನವನ್ನು Arduino-ಹೊಂದಾಣಿಕೆ ಮಾಡುವುದು ಕ್ಷುಲ್ಲಕ ಕೆಲಸಕ್ಕಿಂತ ಹೆಚ್ಚು...

ಸುದ್ದಿಯಿಂದ ಹ್ಯಾಕಡೆ ಲೇಖಕರು ಅದು ಏನೆಂದು ಕಂಡುಕೊಂಡರು ಈಗಾಗಲೇ ಮಾಡಿದ್ದಾರೆ (ಅದೇ ಲಿಂಕ್ ಎಲ್ಲಿ ಸಂಪರ್ಕಿಸಬೇಕೆಂದು ನಿಮಗೆ ಹೇಳುತ್ತದೆ), ಆರ್ಡುಬಾಯ್‌ಗಾಗಿ ಆಟಗಳನ್ನು ಚಲಾಯಿಸಲು ಅವಕಾಶವಿದೆ:


ಆದರೆ ಲೇಖಕರು ಸಾಧನದಲ್ಲಿ ಆಡದಿರುವ ಅವಕಾಶದಲ್ಲಿ ಹೆಚ್ಚು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದಾರೆ, ಆದರೆ ಅಧ್ಯಯನ ಮಾಡಲು:

  • ಸರಣಿ SPI ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಫ್ಲಾಶ್ ಮೆಮೊರಿ
  • AVR ಗಾಗಿ ಬೂಟ್‌ಲೋಡರ್‌ಗಳು
  • ಪ್ರಮಾಣಿತ 802.15.4

ಲೇಖಕರು ಬರೆಯುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸಿದರು ಗ್ರಂಥಾಲಯಗಳು (GPL v3), ಇದು ನಿಮಗೆ ಪ್ರದರ್ಶನ, ಔಟ್‌ಪುಟ್ ಪಠ್ಯ ಮತ್ತು ಆಯತಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮತ್ತು SPI ಫ್ಲ್ಯಾಶ್ ಮೆಮೊರಿಯನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ನಂತರ ಅವರು ಸಾಧನದ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಗಾಗಿ ಆಲೋಚನೆಗಳೊಂದಿಗೆ ಬರಲು ಪ್ರಾರಂಭಿಸಿದರು: VT-100-ಹೊಂದಾಣಿಕೆಯ ಪಾಕೆಟ್ ಟರ್ಮಿನಲ್, ಮಲ್ಟಿಪ್ಲೇಯರ್ ಆಟಗಳು. ಮೂರು ಸಾಧನಗಳನ್ನು ಪುನರ್ನಿರ್ಮಿಸಿದ ನಂತರ, ಅವರು "ಗಾಳಿಯಲ್ಲಿ" ರೇಖಾಚಿತ್ರಗಳನ್ನು ಸ್ವೀಕರಿಸಲು "ಕಲಿಸಲು" ನಿರ್ಧರಿಸಿದರು. ಯಾವುದು ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ, ಆದರೆ ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿದೆ: ಸಾಧನದ ಪ್ರಕರಣವು ಪ್ರತಿ ಬಾರಿಯೂ ತೆರೆಯಲು ಕಷ್ಟ, ಮತ್ತು ಬ್ಯಾಟರಿ ಕಂಪಾರ್ಟ್ಮೆಂಟ್ ಕವರ್ ಅಡಿಯಲ್ಲಿ ಬೋರ್ಡ್ಗೆ JTAG ಪ್ರೋಗ್ರಾಮರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ರಂಧ್ರಗಳು ಮಾತ್ರ ಇವೆ.

ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

Arduino ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಇದು ಸಾಕು, ಆದರೆ ಸ್ಕೆಚ್ ಅಲ್ಲ - ಸೀರಿಯಲ್ ಪೋರ್ಟ್ ಅಲ್ಲಿ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಇನ್ನೂ ಪ್ರಕರಣವನ್ನು ತೆರೆಯದೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅಲ್ಲದೆ, ಮೊದಲ ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ನ TX0 ಮತ್ತು RX0 ಸಾಲುಗಳನ್ನು ಕೀಬೋರ್ಡ್ ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ನ ಪೋಲಿಂಗ್ ಲೈನ್‌ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ, ಅವುಗಳೆಂದರೆ ಡಿಸ್‌ಪ್ಲೇಯ ಬದಿಗಳಲ್ಲಿ ಫಂಕ್ಷನ್ ಕೀಗಳನ್ನು ಪೋಲ್ ಮಾಡುತ್ತದೆ. ಆದರೆ ನೀವು ಏನು ಮಾಡಬಹುದು - ಲೇಖಕರು ಇದನ್ನು ನಿರ್ಮಿಸಿದ್ದಾರೆ:

ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

ಅವರು ಅಲ್ಲಿಗೆ JTAG ಸಾಲುಗಳನ್ನು ತಂದರು, ಮತ್ತು ಈಗ ಬ್ಯಾಟರಿ ವಿಭಾಗವನ್ನು ತೆರೆಯುವ ಅಗತ್ಯವಿಲ್ಲ. ಮತ್ತು ಸ್ಕೆಚ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು, ನಾನು ಎರಡೂ ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗಳನ್ನು ಒಂದೇ ಕನೆಕ್ಟರ್‌ಗೆ ಸಂಪರ್ಕಿಸಿದ್ದೇನೆ, ಸ್ವಿಚ್ ಅನ್ನು ಸಹ ಸೇರಿಸಿದೆ, ಏಕೆಂದರೆ ಬ್ಯಾಟರಿಗಳನ್ನು ಸ್ಥಾಪಿಸಿದಾಗ, ಸಾಧನವನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಆಫ್ ಮಾಡುವುದು ಭೌತಿಕವಾಗಿ ಅಸಾಧ್ಯ.

ಬೆಸುಗೆ ಹಾಕುವ ಕಬ್ಬಿಣ, ಯುಟಿಲಿಟಿ ಚಾಕು ಮತ್ತು ಅಂಟು ಗನ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಂಡಿತು. ಸಾಮಾನ್ಯವಾಗಿ, "ಗಾಳಿಯಲ್ಲಿ" ರೇಖಾಚಿತ್ರಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುವುದು ಹೆಚ್ಚು ಅನುಕೂಲಕರವಾಗಿದೆ; ಇದಕ್ಕಾಗಿ ನಾವು ತುರ್ತಾಗಿ ಏನನ್ನಾದರೂ ಆವಿಷ್ಕರಿಸಬೇಕಾಗಿದೆ.

Arduino IDE ಸ್ಕೆಚ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬಳಸುತ್ತದೆ avrdude. ಇದು ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ STK500, ಇದು ಫೈಲ್‌ಗಳನ್ನು ಎರಡೂ ದಿಕ್ಕುಗಳಲ್ಲಿ ವರ್ಗಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ವೇರಿಯಬಲ್ ವಿಳಂಬಗಳು, ಅಸ್ಪಷ್ಟತೆ ಮತ್ತು ಡೇಟಾ ನಷ್ಟ ಸಾಧ್ಯವಿರುವ ಚಾನಲ್‌ಗಳೊಂದಿಗೆ ಇದು ಕಳಪೆಯಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ಧಾರಾವಾಹಿ ವಾಹಿನಿಯಲ್ಲಿ ಏನಾದರೂ ಸಡಿಲವಾದರೆ ಅಥವಾ ರಸ್ಟಲ್ ಆಗಿದ್ದರೆ, ನೀವು ಕಾರಣವನ್ನು ಹುಡುಕುತ್ತಾ ಹುಚ್ಚರಾಗಬಹುದು. ಒಮ್ಮೆ ಲೇಖಕನು ಸಮಸ್ಯೆಯು ಕೆಟ್ಟ ಕೇಬಲ್ ಮತ್ತು ವಿಚಿತ್ರವಾದ CP2102 ಇಂಟರ್ಫೇಸ್ ಪರಿವರ್ತಕ ಎಂದು ಅರಿತುಕೊಳ್ಳುವವರೆಗೆ ಅರ್ಧ ದಿನ ಅನುಭವಿಸಿದನು. ಅಂತರ್ನಿರ್ಮಿತ ಇಂಟರ್ಫೇಸ್ ಪರಿವರ್ತಕವನ್ನು ಹೊಂದಿರುವ ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್ ಸಹ, ಉದಾಹರಣೆಗೆ, ATmega32u4, ಕೆಲವೊಮ್ಮೆ ಈ ರೀತಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಸ್ಕೆಚ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವಾಗ ದೋಷಗಳು ತುಂಬಾ ಅಪರೂಪವಲ್ಲ ಎಂದು ಪ್ರತಿ Arduino ಬಳಕೆದಾರರು ಗಮನಿಸಿದ್ದಾರೆ. ಕೆಲವೊಮ್ಮೆ ರೆಕಾರ್ಡಿಂಗ್ ಚೆನ್ನಾಗಿ ಹೋಗುತ್ತದೆ, ಆದರೆ ಪರೀಕ್ಷೆಯನ್ನು ಓದುವಾಗ ದೋಷವನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗುತ್ತದೆ. ಬರೆಯುವಾಗ ದೋಷವಿದೆ ಎಂದು ಇದರ ಅರ್ಥವಲ್ಲ - ಓದುವಾಗ ವಿಫಲವಾಗಿದೆ. ಈಗ "ಗಾಳಿಯಲ್ಲಿ" ಕೆಲಸ ಮಾಡುವಾಗ ಅದೇ ಸಂಭವಿಸುತ್ತದೆ ಎಂದು ಊಹಿಸಿ, ಆದರೆ ಹೆಚ್ಚಾಗಿ.

ಈ ಸಮಸ್ಯೆಯನ್ನು ನಿವಾರಿಸಲು ವಿವಿಧ ಮಾರ್ಗಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ ನಂತರ, ಲೇಖಕರು ಈ ಕೆಳಗಿನವುಗಳೊಂದಿಗೆ ಬಂದರು. ಸಾಧನವು SPI ಇಂಟರ್‌ಫೇಸ್‌ನೊಂದಿಗೆ 128 KB ಫ್ಲ್ಯಾಷ್ ಮೆಮೊರಿಯನ್ನು ಹೊಂದಿದೆ - ನಾವು ತಂತಿಗಳ ಮೂಲಕ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ (ಲೇಖಕರು ಈಗಾಗಲೇ ಕನೆಕ್ಟರ್‌ನೊಂದಿಗೆ ಒಂದು ಸಾಧನವನ್ನು ಹೊಂದಿದ್ದಾರೆ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ), ಈ ಮೆಮೊರಿಯನ್ನು ಬಫರ್ ಆಗಿ ಬಳಸಿ ಮತ್ತು ರೇಡಿಯೊ ಮೂಲಕ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ ಮತ್ತೊಂದು ಸಾಧನಕ್ಕೆ ಚಾನಲ್. Cybiko ನಿಂದ ಹಲೋ.

ರೇಡಿಯೋ ಚಾನೆಲ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕೋಡ್ ಅನ್ನು ಬರೆದ ನಂತರ, ಹಾಗೆಯೇ ಫಾಂಟ್, ಲೋಡರ್ 4 ಕಿಲೋಬೈಟ್‌ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಯಿತು. ಆದ್ದರಿಂದ, HFUSE ಮೌಲ್ಯವನ್ನು 0xDA ನಿಂದ 0xD8 ಗೆ ಬದಲಾಯಿಸಬೇಕಾಗಿತ್ತು. ಈಗ ಬೂಟ್‌ಲೋಡರ್ 8 ಕಿಲೋಬೈಟ್‌ಗಳಷ್ಟು ಉದ್ದವಿರಬಹುದು ಮತ್ತು ಆರಂಭಿಕ ವಿಳಾಸವು ಈಗ 0x1E000 ಆಗಿದೆ. ಇದು ಮೇಕ್‌ಫೈಲ್‌ನಲ್ಲಿ ಪ್ರತಿಫಲಿಸುತ್ತದೆ, ಆದರೆ ಭರ್ತಿ ಮಾಡುವಾಗ ಸಹ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬೇಕು ಲೋಡರ್ avrdude ಮೂಲಕ.

ATmega802.15.4RFA128 ನಲ್ಲಿನ 1 ಟ್ರಾನ್ಸ್‌ಸಿವರ್ ಅನ್ನು ಮೂಲತಃ ಪ್ರೋಟೋಕಾಲ್ ಬಳಸಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಜಿಗ್ಬೀ, ಇದು ಸಾಕಷ್ಟು ಜಟಿಲವಾಗಿದೆ, ಆದ್ದರಿಂದ ಲೇಖಕರು ಬದಲಿಗೆ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರವಾನಿಸಲು ನಿರ್ಧರಿಸಿದ್ದಾರೆ. ಇದನ್ನು ATmega128RFA1 ನಲ್ಲಿ ಹಾರ್ಡ್‌ವೇರ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಕಡಿಮೆ ಕೋಡ್ ಅಗತ್ಯವಿದೆ. ಅಲ್ಲದೆ, ಸರಳತೆಗಾಗಿ, ಲೇಖಕರು ಸ್ಥಿರ ಚಾನಲ್ ಅನ್ನು ಬಳಸಲು ನಿರ್ಧರಿಸಿದರು, ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ. 802.15.4 ಮಾನದಂಡವು 16 ರಿಂದ 11 ರವರೆಗಿನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ 26 ಚಾನಲ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಅವುಗಳು ಸಾಕಷ್ಟು ಜನಸಂದಣಿಯನ್ನು ಹೊಂದಿವೆ, ಕೆಲವು ವೈಫೈ ಚಾನಲ್‌ಗಳನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತವೆ (ಕೆಂಪು ಜಿಗ್‌ಬೀ ಚಾನಲ್‌ಗಳು, ನೀಲಿ, ಹಸಿರು ಮತ್ತು ಹಳದಿ ವೈಫೈ).

ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

15 ಮತ್ತು 26 ಚಾನಲ್‌ಗಳು ವೈಫೈನಿಂದ ಹಸ್ತಕ್ಷೇಪಕ್ಕೆ ಕನಿಷ್ಠ ಒಳಗಾಗುತ್ತವೆ ಎಂದು ಅದು ಬದಲಾಯಿತು. ಲೇಖಕರು ಅವುಗಳಲ್ಲಿ ಎರಡನೆಯದನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದಾರೆ. ಹಕ್ಕು ನಿರಾಕರಣೆ: ಜಿಗ್‌ಬೀ ಅನ್ನು ಈ ರೀತಿ ಸರಳೀಕರಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆಯೇ ಎಂದು ಅನುವಾದಕನಿಗೆ ತಿಳಿದಿಲ್ಲ. ಬಹುಶಃ ನಾವು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡಬೇಕೇ ಮತ್ತು ಅದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕೇ?

ಮೊದಲ ಸಾಧನದಲ್ಲಿ, STK500 ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಡೇಟಾವನ್ನು ರವಾನಿಸುವ ಸೀಮಿತ ಸ್ಥಿತಿಯ ಯಂತ್ರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಅವಶ್ಯಕ. ಬಹುಪಾಲು, ರವಾನೆಯಾದ ಮತ್ತು ಸ್ವೀಕರಿಸಿದ ಸಂದೇಶಗಳು ಸ್ವಾವಲಂಬಿಯಾಗಿರುತ್ತವೆ, ಆದರೆ ಕೆಲವು ಹಿಂದಿನ ಚಾನಲ್ ಮೂಲಕ ಹಾದುಹೋದವುಗಳಿಗೆ ಸಂಬಂಧಿಸಿವೆ. ಸಂಭಾಷಣೆಯ ವಿವರಣೆಯನ್ನು ನೀಡಲಾಗಿದೆ ಇಲ್ಲಿ.

ಈ ಸಂವಾದದ ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ ಗಮ್ಯಸ್ಥಾನ ಸಾಧನದ ಫ್ಲಾಶ್ ಮೆಮೊರಿಗೆ ಬರೆಯಲು ಉದ್ದೇಶಿಸಲಾದ ಪ್ಯಾಕೆಟ್‌ಗಳ ಪ್ರಸರಣವಾಗಿದೆ. AVR ಕುಟುಂಬದ ಸರಳ ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್‌ಗಳಿಗಾಗಿ, ಪುಟದ ಗಾತ್ರವು 128 ಬೈಟ್‌ಗಳು, ಆದರೆ ATmega128RFA1 ಗೆ ಇದು 256. ಮತ್ತು SPI ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಫ್ಲಾಶ್ ಮೆಮೊರಿಗೆ, ಇದು ಒಂದೇ ಆಗಿರುತ್ತದೆ. ಮೊದಲ ಸಾಧನದಲ್ಲಿನ ಪ್ರೋಗ್ರಾಂ, ಸ್ಕೆಚ್ ಅನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುವಾಗ, ಅದನ್ನು ತಕ್ಷಣವೇ ಎರಡನೆಯದಕ್ಕೆ ವರ್ಗಾಯಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅದನ್ನು ಈ ಮೆಮೊರಿಗೆ ಬರೆಯುತ್ತದೆ. Arduino IDE ಪ್ರವೇಶದ ಸರಿಯಾದತೆಯನ್ನು ಪರಿಶೀಲಿಸಿದಾಗ, ಅಲ್ಲಿ ಬರೆದದ್ದನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಈಗ ನಾವು ಸ್ವೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ರೇಡಿಯೊ ಚಾನಲ್ ಮೂಲಕ ಎರಡನೇ ಸಾಧನಕ್ಕೆ ರವಾನಿಸಬೇಕಾಗಿದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಸ್ವೀಕರಿಸುವಿಕೆಯಿಂದ ಪ್ರಸರಣ ಮತ್ತು ಹಿಂದಕ್ಕೆ ಬದಲಾಯಿಸುವುದು ಸಾಕಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ. STK500 ಪ್ರೋಟೋಕಾಲ್ ವಿಳಂಬದ ಬಗ್ಗೆ ಅಸಡ್ಡೆ ಹೊಂದಿದೆ, ಆದರೆ ಡೇಟಾ ನಷ್ಟವನ್ನು ಸಹಿಸುವುದಿಲ್ಲ (ವಿಚಿತ್ರ, ಆದರೆ ವಿಳಂಬವು ಡೇಟಾ ವರ್ಗಾವಣೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ಎಂದು ಮೇಲೆ ಹೇಳಲಾಗಿದೆ). ಮತ್ತು ನಿಸ್ತಂತು ಪ್ರಸರಣದ ಸಮಯದಲ್ಲಿ ನಷ್ಟಗಳು ಅನಿವಾರ್ಯ. ATmega128RFA1 ವರ್ಗಾವಣೆಯ ಸರಿಯಾದತೆಯ ಬಗ್ಗೆ ಸಂದೇಹಗಳಿದ್ದಾಗ ಪುನರಾವರ್ತಿತ ವಿನಂತಿಗಳ ಅಂತರ್ನಿರ್ಮಿತ ಹಾರ್ಡ್‌ವೇರ್ ಅನುಷ್ಠಾನವನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಲೇಖಕರು ಅದನ್ನು ಸಾಫ್ಟ್‌ವೇರ್‌ನಲ್ಲಿ ಸ್ವತಃ ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿರ್ಧರಿಸಿದ್ದಾರೆ. ಅವರು ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದರು, ಇದರಲ್ಲಿ ಹೆಚ್ಚಿನ ಡೇಟಾವು ಇನ್ನೊಂದಕ್ಕಿಂತ ಒಂದು ರೀತಿಯಲ್ಲಿ ಹರಿಯುತ್ತದೆ.

ಇದು ಪರಿಪೂರ್ಣವಲ್ಲ, ಆದರೆ ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. 256-ಬೈಟ್ ಪುಟವನ್ನು ನಾಲ್ಕು ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ, ಪ್ರತಿಯೊಂದೂ ಪ್ಯಾಕೆಟ್ ಆಗಿ ಗಾಳಿಯ ಮೂಲಕ ಹರಡುತ್ತದೆ. ಒಂದು ಪ್ಯಾಕೆಟ್ 125 ಬೈಟ್‌ಗಳ ಡೇಟಾವನ್ನು ಮತ್ತು ಉದ್ದಕ್ಕಾಗಿ ಒಂದು ಬೈಟ್ ಮತ್ತು CRC ಗಾಗಿ ಎರಡು ಬೈಟ್‌ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬಹುದು. ಆದ್ದರಿಂದ ಪುಟ ಮತ್ತು ವಿಭಾಗದ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ (64 ರಿಂದ 0 ರವರೆಗೆ) 3 ಬೈಟ್‌ಗಳ ಉದ್ದದ ತುಣುಕುಗಳನ್ನು ಅಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. ಸ್ವೀಕರಿಸುವ ಸಾಧನವು ವೇರಿಯಬಲ್ ಅನ್ನು ಹೊಂದಿದ್ದು ಅದು ಎಷ್ಟು ಭಾಗಗಳನ್ನು ಸ್ವೀಕರಿಸಿದೆ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಾ ನಾಲ್ಕು ಬಂದಾಗ, ಕಳುಹಿಸುವ ಸಾಧನವು ಸಂಪೂರ್ಣ ಪುಟವನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ ಎಂದು ದೃಢೀಕರಣವನ್ನು ಪಡೆಯುತ್ತದೆ. ಯಾವುದೇ ದೃಢೀಕರಣವಿಲ್ಲ (CRC ಹೊಂದಿಕೆಯಾಗಲಿಲ್ಲ) - ಸಂಪೂರ್ಣ ಪುಟವನ್ನು ಮರುಕಳುಹಿಸಿ. ಕೇಬಲ್ ಮೂಲಕ ಪ್ರಸಾರ ಮಾಡುವಾಗ ವೇಗವು ಇನ್ನೂ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ. ನೋಡಿ:


ಆದರೆ ಸಾಮಾನ್ಯವಾಗಿ, ಸ್ಕೆಚ್‌ಗಳನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಅದರ ಮೂಲಕ ಸಾಧನಗಳಿಗೆ ಕೇಬಲ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಅನುಕೂಲಕರ ಮಾರ್ಗವನ್ನು ಒದಗಿಸುವುದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಫೋಟೋದಲ್ಲಿರುವಂತೆ CP2102 ನಲ್ಲಿ ಅಂತಹ ಇಂಟರ್ಫೇಸ್ ಪರಿವರ್ತಕದ ಒಳಗೆ ಇರಿಸಿ ಮತ್ತು ಅದನ್ನು ಬೋರ್ಡ್‌ಗೆ ಅಂಟಿಸಿ ಇದರಿಂದ ಮೈಕ್ರೋ ಯುಎಸ್‌ಬಿ ಕೇಬಲ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುವಾಗ ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವಾಗ ಅದು ಬಲವನ್ನು ತಡೆದುಕೊಳ್ಳುತ್ತದೆ.

ನಾವು ATmega128RFA1 ಗಾಗಿ OTA ಬೂಟ್‌ಲೋಡರ್ ಅನ್ನು ಬರೆಯುತ್ತಿದ್ದೇವೆ (ಸ್ಮಾರ್ಟ್ ರೆಸ್ಪಾನ್ಸ್ XE ಸಾಧನದ ಭಾಗವಾಗಿ)

ಇದು 3,3-ವೋಲ್ಟ್ ಸ್ಟೆಬಿಲೈಸರ್ ಅನ್ನು ಸಹ ಹೊಂದಿದೆ (ಮತ್ತು 6-ವೋಲ್ಟ್ ವಿದ್ಯುತ್ ಸರಬರಾಜು ಹೊಂದಿರುವ ಸಾಧನದಲ್ಲಿ ಅದನ್ನು ಹೇಗೆ ಬಳಸುವುದು - ಅದು ಒಂದೇ ಸ್ಟೆಬಿಲೈಸರ್ ಹೊಂದಿದ್ದರೆ, ಮತ್ತು ನೀವು ಎರಡು ಡಯೋಡ್‌ಗಳನ್ನು ಸೇರಿಸಬಹುದು ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಯಾವುದು ಸಾಧನವನ್ನು ಶಕ್ತಿಯನ್ನು ನೀಡುತ್ತದೆ ಎಂಬುದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡಬಹುದು) . ಎಲ್ಲಾ ಮೂರು ಎಲ್ಇಡಿಗಳನ್ನು ಇಂಟರ್ಫೇಸ್ ಪರಿವರ್ತಕ ಬೋರ್ಡ್ನಿಂದ ಅನ್ಸೋಲ್ಡರ್ ಮಾಡಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಅವುಗಳು ಬ್ಯಾಟರಿಗಳನ್ನು ಅವುಗಳ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವಾಗ ಹೆಚ್ಚುವರಿಯಾಗಿ ಲೋಡ್ ಮಾಡುತ್ತವೆ ಮತ್ತು ಕೀಬೋರ್ಡ್ ಮತದಾನದಲ್ಲಿ ಹಸ್ತಕ್ಷೇಪ ಮಾಡುತ್ತದೆ ಮತ್ತು SPI ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಫ್ಲಾಶ್ ಮೆಮೊರಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಗುರಿಯನ್ನು ಅನುಸರಿಸುವುದು ಅದನ್ನು ಸಾಧಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ (ಮತ್ತು ಬಸ್ ಬಗ್ಗೆ ಆ ಜೋಕ್ ಅಗತ್ಯವಿಲ್ಲ). ಲೇಖಕರು AVR ಬೂಟ್‌ಲೋಡರ್‌ಗಳು, SPI ಫ್ಲ್ಯಾಶ್ ಮೆಮೊರಿ, STK500 ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು 802.15.4 ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಬಗ್ಗೆ ಬಹಳಷ್ಟು ಕಲಿತರು.

ಮೇಲೆ ವಿವರಿಸಿದ ಲೈಬ್ರರಿಗೆ ಹೆಚ್ಚುವರಿಯಾಗಿ ಎಲ್ಲಾ ಇತರ ಕೋಡ್ - ಆಗಿದೆ ಇಲ್ಲಿ, ಮತ್ತು ಇದು GPL v3 ಅಡಿಯಲ್ಲಿಯೂ ಇದೆ. ಲೇಖಕರ ಟ್ವಿಟರ್ - ಇಲ್ಲಿ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ