අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

ඒ සියල්ල ආරම්භ වූයේ කතුවරයා ද්විතීයික වෙළඳපොලේ රසවත් උපාංගයක් මිලදී ගැනීමත් සමඟය - Smart Response XE (කෙටි විස්තරය) එය පාසල් සඳහා අදහස් කෙරේ: පන්තියේ සෑම සිසුවෙකුටම අනූව දශකයේ සිට ඉලෙක්ට්‍රොනික සටහන් පොතක් හෝ පරිවර්තකයෙකුට සමාන උපාංගයක් ලැබේ, ගුරුවරයා ප්‍රශ්නයක් අසයි, සහ සිසුන් උපාංගවල යතුරුපුවරුවේ පිළිතුරු ටයිප් කරයි, ඒවා ඒ හරහා ලැබේ. ගුවන් විදුලි නාලිකාව (802.15.4) ගුරුවරයාගේ පරිගණකයට සම්බන්ධ ග්‍රාහකයකට.

මෙම උපාංග වසර කිහිපයකට පෙර නතර කරන ලද අතර, එක් එක් පාසල් $100-$200 සඳහා මිලදී ගත් දේ දැන් eBay හි $10 හෝ ඊට අඩු මුදලකට උත්පතන වේ. එහි ඇති දෘඩාංග ගීකි අත්හදා බැලීම් සඳහා ඉතා සුදුසු ය:

  • 60 යතුරු පුවරුව
  • 384×136 විභේදනයකින් සංදර්ශකය, පික්සලයකට බිටු 2 - BC, CGA වලට සමාන නමුත් 4 වර්ණ නොව, දීප්තියේ ශ්‍රේණිගත කිරීම්
  • microcontroller ATmega128RFA1 (128 kB ෆ්ලෑෂ් මතකය, 4 kB ROM, 16 kB RAM, 802.15.4 සම්ප්‍රේෂකය)
  • බාහිර (ක්ෂුද්‍ර පාලකයට අදාළව, සම්පූර්ණ උපාංගය නොවේ) SPI අතුරුමුහුණත සමඟ මෙගාබිට් 1 (කිලෝබයිට් 128) ෆ්ලෑෂ් මතකය
  • AAA මූලද්‍රව්‍ය 4 සඳහා මැදිරිය.

ක්ෂුද්‍ර පාලකයේ නමෙන් එය AVR පවුලට අයත් බව පැහැදිලිය, එනම් උපාංගය Arduino-අනුකූල කිරීම සුළුපටු කාර්යයකට වඩා වැඩි දෙයක් ...

ප්‍රවෘත්ති වලින් හැක්ඩේ කතුවරයා එය කුමක්දැයි සොයා ගත්තේය දැනටමත් කර ඇත (එම සබැඳියම ඔබට සම්බන්ධ විය යුත්තේ කොතැනටද යන්න කියයි), Arduboy සඳහා ක්‍රීඩා ධාවනය කිරීමට අවස්ථාව තිබේ:


නමුත් කතුවරයා උපාංගයේ සෙල්ලම් කිරීමට නොව අධ්‍යයනය කිරීමට ඇති අවස්ථාව ගැන වැඩි උනන්දුවක් දක්වයි:

  • අනුක්‍රමික SPI අතුරුමුහුණත සමඟ ෆ්ලෑෂ් මතකය
  • AVR සඳහා bootloaders
  • සම්මත 802.15.4

කතුවරයා ලිවීමෙන් පටන් ගත්තේය පුස්තකාල (GPL v3), එමඟින් ඔබට සංදර්ශකය, ප්‍රතිදාන පෙළ සහ සෘජුකෝණාස්‍රය ආරම්භ කිරීමට සහ SPI ෆ්ලෑෂ් මතකයට ප්‍රවේශ වීමට ඉඩ සලසයි. ඉන්පසු ඔහු උපාංගයේ ප්‍රායෝගික භාවිතය සඳහා අදහස් ඉදිරිපත් කිරීමට පටන් ගත්තේය: VT-100-අනුකූල සාක්කු පර්යන්තයක්, බහු ක්‍රීඩක ක්‍රීඩා. උපාංග තුනක් නැවත ගොඩනඟා ඇති ඔහු, "ගුවන් හරහා" රූප සටහන් ලබා ගැනීමට ඔවුන්ට "ඉගැන්වීමට" තීරණය කළේය. සිත්ගන්නාසුළු පමණක් නොව ඉතා පහසු වනු ඇත: උපාංග නඩුව සෑම විටම විවෘත කිරීමට අපහසු වන අතර බැටරි මැදිරි ආවරණය යටතේ JTAG ක්‍රමලේඛකයෙකු පුවරුවට සම්බන්ධ කිරීමට ඔබට ඉඩ සලසන සිදුරු පමණක් ඇත.

අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

Arduino ඇරඹුම් කාරකය උඩුගත කිරීමට මෙය ප්‍රමාණවත් වේ, නමුත් ස්කීච් එක නොවේ - අනුක්‍රමික වරාය එහි සම්බන්ධ වී නැත, එබැවින් ඔබට තවමත් නඩුව විවෘත නොකර කළ නොහැක. එසේම, පළමු අනුක්‍රමික වරායේ TX0 සහ RX0 රේඛා යතුරුපුවරු අනුකෘතියේ ඡන්ද රේඛා සමඟ සංයුක්ත වේ, එනම් සංදර්ශකයේ පැතිවල ඇති ක්‍රියාකාරී යතුරු මත විමසුම් කරන ඒවා. නමුත් ඔබට කුමක් කළ හැකිද - කතුවරයා මෙය ගොඩනඟා ඇත:

අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

ඔහු එහි JTAG රේඛා ගෙනාවා, දැන් බැටරි මැදිරිය විවෘත කිරීමට අවශ්‍ය නැත. ස්කීච් උඩුගත කළ හැකි වන පරිදි, මම අනුක්‍රමික පෝට් දෙකම එකම සම්බන්ධකයට සම්බන්ධ කළෙමි, ස්විචයක් ද එක් කළෙමි, මන්ද බැටරි ස්ථාපනය කර ඇති බැවින්, වෙනත් ආකාරයකින් උපාංගය ක්‍රියා විරහිත කිරීම භෞතිකව කළ නොහැකි බැවිනි.

පෑස්සුම් යකඩ, උපයෝගිතා පිහියක් සහ මැලියම් තුවක්කුවක් සමඟ වැඩ කිරීමට සෑහෙන කාලයක් ගත විය. පොදුවේ ගත් කල, “ගුවන් හරහා” රූප සටහන් උඩුගත කිරීම වඩාත් පහසු ය; මේ සඳහා අපි හදිසියේ යමක් සොයා ගත යුතුය.

Arduino IDE ස්කීච් උඩුගත කිරීමට වැඩසටහන භාවිතා කරයි avrdude. එය ප්‍රොටෝකෝලය භාවිතයෙන් ක්ෂුද්‍ර පාලකය සමඟ අන්තර්ක්‍රියා කරයි STK500, ඔබට දෙපැත්තටම ගොනු මාරු කිරීමට ඉඩ සලසයි. විචල්‍ය ප්‍රමාදයන්, විකෘති කිරීම් සහ දත්ත නැතිවීම සිදුවිය හැකි නාලිකා සමඟ එය දුර්වල ලෙස අනුකූල වේ. සීරියල් චැනල් එකේ මොකක් හරි ගැලවිල්ලක් ආවොත්, රස්තියාදු උනොත් ඒකට හේතුව හොය හොය පිස්සු කෙලින්න පුළුවන්. වරක් කතුවරයා ගැටලුව නරක කේබලයක් මෙන්ම චපල CP2102 අතුරුමුහුණත් පරිවර්තකයක් බව වටහා ගන්නා තෙක් දින භාගයක් දුක් වින්දා. බිල්ට් අතුරුමුහුණත් පරිවර්තකයක් සහිත ක්ෂුද්‍ර පාලකයක් පවා, උදාහරණයක් ලෙස, ATmega32u4, සමහර විට මේ ආකාරයෙන් ක්‍රියා කළ හැකිය. රූප සටහන් උඩුගත කිරීමේදී දෝෂ එතරම් දුර්ලභ නොවන බව සෑම Arduino පරිශීලකයෙකුම දැක ඇත. සමහර විට පටිගත කිරීම හොඳින් සිදු වේ, නමුත් පරීක්ෂණය කියවීමේදී දෝෂයක් අනාවරණය වේ. ලිවීමේදී දෝෂයක් ඇති බව මින් අදහස් නොවේ - කියවීමේදී අසාර්ථක විය. දැන් සිතන්න "වාතය හරහා" වැඩ කරන විට එකම දේ සිදුවනු ඇත, නමුත් බොහෝ විට.

මෙම ගැටළුව මඟහරවා ගැනීම සඳහා විවිධ ක්රම උත්සාහ කිරීමෙන් පසුව, කතුවරයා පහත සඳහන් කරුණු ඉදිරිපත් කළේය. උපාංගයට SPI අතුරුමුහුණතක් සහිත 128 KB ෆ්ලෑෂ් මතකයක් ඇත - අපට වයර් හරහා දත්ත ලැබේ (කතුවරයාට දැනටමත් පැත්තේ සම්බන්ධකයක් සහිත එක් උපාංගයක් ඇති බව මතක තබා ගන්න), මෙම මතකය බෆරයක් ලෙස භාවිතා කර රේඩියෝව හරහා දත්ත යවන්න වෙනත් උපාංගයකට නාලිකාව. Cybiko වෙතින් ආයුබෝවන්.

රේඩියෝ නාලිකාව සමඟ වැඩ කිරීමට කේතය ලිවීමෙන් පසුව, අකුරු මෙන්ම, පූරණය කිලෝබයිට් 4 කට වඩා දිගු විය. එබැවින්, HFUSE අගය 0xDA සිට 0xD8 දක්වා වෙනස් කිරීමට සිදු විය. දැන් ඇරඹුම් කාරකය කිලෝබයිට් 8ක් දක්වා දිග විය හැකි අතර ආරම්භක ලිපිනය දැන් 0x1E000 වේ. මෙය Makefile හි පිළිබිඹු වේ, නමුත් පිරවීමේදී ද සැලකිල්ලට ගත යුතුය bootloader avrdude හරහා.

ATmega802.15.4RFA128 හි 1 සම්ප්‍රේෂකය මුලින් නිර්මාණය කර ඇත්තේ ප්‍රොටෝකෝලය භාවිතයෙන් ක්‍රියාත්මක වීමටය. සිග්බී, එය තරමක් සංකීර්ණ ය, එබැවින් කතුවරයා ඒ වෙනුවට පැකට් සම්ප්‍රේෂණය කිරීමට තීරණය කළේය. මෙය ATmega128RFA1 හි දෘඩාංගවල ක්‍රියාත්මක වේ, එබැවින් කුඩා කේතයක් අවශ්‍ය වේ. එසේම, සරල බව සඳහා, කතුවරයා ස්ථාවර නාලිකාවක් භාවිතා කිරීමට තීරණය කළේය, එය අතින් පවා තෝරා ගැනීමට ඉඩ නොදේ. 802.15.4 ප්‍රමිතිය 16 සිට 11 දක්වා අංක සහිත නාලිකා 26කට සහය දක්වයි. ඒවා තරමක් ජනාකීර්ණයි, සමහරක් WiFi නාලිකා අතිච්ඡාදනය කරයි (රතු යනු ZigBee නාලිකා, නිල්, කොළ සහ කහ WiFi වේ).

අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

නාලිකා 15 සහ 26 WiFi වලට බාධා කිරීමට අවම වශයෙන් ගොදුරු වන බව පෙනී ගියේය. කතුවරයා ඒවායින් දෙවැන්න තෝරා ගත්තේය. වියාචනය: පරිවර්තකයා එය ZigBee මේ ආකාරයෙන් සරල කිරීමට ඉඩ දෙන්නේ දැයි නොදනී. සමහර විට අපි තව ටිකක් වැඩසටහන් කර එය සම්පූර්ණයෙන්ම ක්රියාත්මක කළ යුතුද?

පළමු උපාංගයේ, STK500 ප්රොටෝකෝලය හරහා දත්ත සම්ප්රේෂණය කරන පරිමිත රාජ්ය යන්ත්රයක් ක්රියාත්මක කිරීම අවශ්ය වේ. බොහෝ දුරට, සම්ප්‍රේෂණය කරන ලද සහ ලැබුණු පණිවිඩ ස්වයංපෝෂිත වේ, නමුත් සමහර ඒවා කලින් නාලිකාව හරහා ගිය ඒවාට සම්බන්ධ වේ. සංවාදයේ විස්තරය ලබා දී ඇත මෙහි.

මෙම සංවාදයේ වැදගත් අංගයක් වන්නේ ගමනාන්ත උපාංගයේ ෆ්ලෑෂ් මතකයට ලිවීමට අදහස් කරන පැකට් සම්ප්‍රේෂණය කිරීමයි. AVR පවුලේ සරල ක්ෂුද්‍ර පාලක සඳහා, පිටු ප්‍රමාණය බයිට් 128 ක් වන නමුත් ATmega128RFA1 සඳහා එය 256. සහ SPI ප්‍රොටෝකෝලය හරහා සම්බන්ධ කර ඇති ෆ්ලෑෂ් මතකය සඳහා එය සමාන වේ. පළමු උපාංගයේ ඇති වැඩසටහන, ස්කීච් එකක් උඩුගත කරන විට, එය වහාම දෙවන ස්ථානයට මාරු නොකරයි, නමුත් එය මෙම මතකයට ලියයි. Arduino IDE එක එන්ට්‍රි එකේ හරිද කියලා චෙක් කලාම එතන ලියාපු දේ එවනවා. දැන් අපි ලැබුණු දත්ත රේඩියෝ නාලිකාව හරහා දෙවන උපාංගයට සම්ප්රේෂණය කළ යුතුය. ඒ අතරම, ලැබීමේ සිට සම්ප්‍රේෂණයට සහ පසුපසට මාරු වීම බොහෝ විට සිදු වේ. STK500 ප්‍රොටෝකෝලය ප්‍රමාදයන් කෙරෙහි උදාසීන ය, නමුත් දත්ත නැතිවීම නොඉවසයි (අමුතුයි, නමුත් ප්‍රමාදයන් දත්ත හුවමාරුවට බලපාන බව ඉහත කීවේ). රැහැන් රහිත සම්ප්‍රේෂණයේදී සිදුවන පාඩු නොවැළැක්විය හැකිය. ATmega128RFA1 හි ඇති දෘඪාංග ක්‍රියාත්මක කිරීමේදී නැවත නැවත කරන ලද ඉල්ලීම් මාරු කිරීමේ නිවැරදිභාවය පිළිබඳව සැකයක් පවතින නමුත් කතුවරයා එයම මෘදුකාංගය තුළම ක්‍රියාත්මක කිරීමට තීරණය කළේය. ඔහු ප්‍රොටෝකෝලයක් ගොඩනඟා ගත් අතර එහි තවත් බොහෝ දත්ත එක් පැත්තකට වඩා ගලා යයි.

එය පරිපූර්ණ නොවේ, නමුත් එය ක්රියා කරයි. බයිට් 256 පිටුව කොටස් හතරකට බෙදා ඇති අතර, ඒ සෑම එකක්ම පැකට්ටුවක් ලෙස වාතය හරහා සම්ප්‍රේෂණය වේ. පැකට්ටුවක බයිට් 125ක් දක්වා දත්ත සහ දිග සඳහා එක් බයිටයක් සහ CRC සඳහා බයිට් දෙකක් අඩංගු විය හැක. එබැවින් පිටු සහ ඛණ්ඩ අංක (64 සිට 0 දක්වා) සමඟ බයිට් 3 ක් දිග කොටස් එහි තබා ඇත. ලැබෙන උපාංගයේ විචල්‍යයක් ඇති අතර එය කොපමණ කොටස් ලැබී ඇත්ද යන්න නිරීක්ෂණය කිරීමට ඉඩ සලසයි, සහ හතරම පැමිණි විට, යවන උපාංගයට සම්පූර්ණ පිටුවම ලැබී ඇති බවට තහවුරු කිරීමක් ලැබේ. තහවුරු කිරීමක් නැත (CRC නොගැලපේ) - සම්පූර්ණ පිටුව නැවත යවන්න. කේබල් හරහා සම්ප්රේෂණය කරන විට වඩා වේගය ඊටත් වඩා වැඩි ය. බලන්න:


නමුත් පොදුවේ ගත් කල, ස්කීච් උඩුගත කිරීම සඳහා සහ එය හරහා කේබලය උපාංග වෙත සම්බන්ධ කිරීම සඳහා පහසු ක්රමයක් සැපයීම අවශ්ය වනු ඇත. උදාහරණයක් ලෙස, ඡායාරූපයේ මෙන්, CP2102 හි එවැනි අතුරු මුහුණත් පරිවර්තකයක් තුළ තබා, මයික්‍රෝ USB කේබලය සම්බන්ධ කිරීම සහ විසන්ධි කිරීමේදී බලයට ඔරොත්තු දෙන පරිදි පුවරුවට එය ඇලවීම.

අපි ATmega128RFA1 සඳහා OTA ඇරඹුම් කාරකයක් ලියන්නෙමු (Smart Response XE උපාංගයේ කොටසක් ලෙස)

එහි වෝල්ට් 3,3 ස්ථායීකාරකයක් ද ඇත (සහ වෝල්ට් 6 ක බල සැපයුමක් සහිත උපාංගයක එය භාවිතා කරන්නේ කෙසේද - එකම ස්ථායීකාරකයක් තිබේ නම්, සහ ඔබට ඩයෝඩ දෙකක් එකතු කර ඒවායින් කුමන උපාංගය බල ගැන්විය යුතුද යන්න ස්වයංක්‍රීයව තෝරා ගත හැකිය) . LED තුනම අතුරුමුහුණත් පරිවර්තක පුවරුවෙන් අලෙවි නොකළ යුතුය, එසේ නොමැතිනම් ඒවා ක්‍රියාත්මක වන විට ඒවා අතිරේකව බැටරි පටවනු ඇති අතර යතුරුපුවරු ඡන්ද විමසීමට බාධා කරන අතර SPI අතුරුමුහුණතක් සමඟ ෆ්ලෑෂ් මතකය සමඟ ක්‍රියා කරයි.

ඉලක්කයක් ලුහුබැඳීම එය සාක්ෂාත් කර ගැනීමට වඩා සිත්ගන්නා සුළු විය (සහ බස් රථය ගැන විහිළුවක් අවශ්‍ය නොවේ). කතුවරයා AVR bootloaders, SPI ෆ්ලෑෂ් මතකය, STK500 ප්‍රොටෝකෝලය සහ 802.15.4 ප්‍රමිතිය ගැන බොහෝ දේ ඉගෙන ගත්තේය.

ඉහත විස්තර කර ඇති පුස්තකාලයට අමතරව අනෙකුත් සියලුම කේතයන් - - මෙහි, සහ එය GPL v3 යටතේ ද වේ. කතුවරයාගේ ට්විටර් - මෙහි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න