क्या मैंने अपना Arduino Uno ईट किया है? बोर्ड पर अपलोड करने में समस्या


86

मैं अपने Arduino Uno में रेखाचित्र अपलोड नहीं कर सकता।

  • क्या मैंने इसे "ईंट" किया है?
  • गलत क्या है, इसके लिए मैं क्या कदम उठा सकता हूं?
  • इसे ठीक करने के लिए मुझे क्या करना होगा?

7
सोच रहे लोगों के लिए, यह एक वास्तविक सवाल नहीं है! यह एक संदर्भ प्रश्न से अधिक है। इस उद्देश्य पर ही सवाल काफी व्यापक बना दिया जाता है। उत्तर हालांकि बहुत विस्तृत है और इसलिए इस प्रश्न को संदर्भ के रूप में उपयोग किया जा सकता है।
पॉल

2
यह एक संदर्भ प्रश्न से अधिक है। काफी सही। देखें यह पूछें और उत्तर अपने प्रश्न ठीक है
निक गैमन

@Nick_Gammon हाँ। लेकिन मुझे लगता है कि आपको किसी तरह इसे नोट करना चाहिए था। पहली नजर में मैं (थोड़ा) इस तथ्य से नाराज था कि सवाल इतना व्यापक था और ऐसा लगता था कि आपने कोई शोध नहीं किया है। लेकिन जब मैंने आपका उत्तर देखा, तो यह समझ में आया। इसके अलावा, (जब आप कर सकते हैं) आप अपने स्वयं के उत्तर को स्वीकार करने के लिए नहीं भूलना चाहिए, ताकि जो लोग मदद करने की कोशिश कर रहे हैं, वे जवाब देना शुरू न करें, इस पर सवाल देख रहे हैं या टिप्पणी कर रहे हैं (जो वास्तव में आपकी मदद नहीं करेगा, जैसा कि आप पहले से ही इस समस्या को दूर करने के लिए एक अच्छा तरीका मिल गया)।
पॉल

प्रतिक्रिया के लिए धन्यवाद। मैंने शुरू में एक नोट के साथ सवाल पोस्ट करने के बारे में सोचा था कि मैं अपना जवाब पोस्ट करने जा रहा था, लेकिन फिर मैंने "अपने खुद के सवाल का जवाब" के बारे में चेकबॉक्स देखा, इसलिए मैंने इसके बजाय उस पर टिक किया। इसे स्वीकार करने के लिए, मुझे 20 घंटे की अनुमति नहीं है। आपका अपना उत्तर स्वीकार करना मुझे थोड़ा अजीब लग रहा था, लेकिन निश्चित रूप से मैं ऐसा कर सकता हूं जब मुझे अनुमति दी जाती है। मैंने मेटा अरुडिनो पर एक प्रश्न पूछा कि एक विहित प्रश्न क्या है? सही प्रक्रिया से काम करने की कोशिश करें लेकिन कोई प्रतिक्रिया नहीं मिली।
निक गैमन

@ फुआज़े और निक गैमन: यह सामान्य रूप से बहुत अच्छा लगता है, मैं केवल यही सुझाव दूंगा कि इस विषय को और अधिक विचारोत्तेजक बनाया जाए कि प्रश्न और उत्तर वास्तव में क्या हैं। जैसा कि यह है, मुझे लगता है कि मैं इसे बहुत अस्पष्ट के रूप में उड़ाने के लिए लुभाया गया हो सकता है। शायद शीर्षक "मैं अपलोड को विफल कैसे कर सकता हूं?"
DLU

जवाबों:


115

यह शायद ईंट नहीं है

मुझे काफी कुछ Arduinos मिल गए हैं, और पिछले कुछ वर्षों में कभी भी केवल "ईंट" किया गया है, और मुझे लगता है कि यह स्थैतिक बिजली के साथ टैप करके था। दुर्भाग्य से उस विशेष में एसएमडी (सतह पर चढ़ा हुआ) प्रोसेसर चिप था, इसलिए इसे किसी अन्य चिप के साथ स्वैप करने की कोशिश करना आसान नहीं है।

शांत रहें, और निम्न चरणों का प्रयास करें ...


उदाहरण मंडल

एक "Arduino Uno" केवल एक चीज नहीं है जो विफल हो सकती है। इसके कई प्रमुख घटक हैं, और संभवतः केवल एक विफल हुआ है (यदि कोई हो)। देखें यह संदर्भ तस्वीर:

Arduino Uno प्रमुख घटक

प्रमुख घटक हैं:

  • Atmega16U2 प्रोसेसर - यह USB कनेक्शन के लिए इंटरफ़ेस को संभालता है
  • Atmega328P प्रोसेसर - यह "मुख्य" प्रोसेसर है जिस पर आपका स्केच है
  • वोल्टेज रेगुलेटर - यह पावर जैक से आने वाली बिजली को 5 वी में परिवर्तित करता है
  • पावर एलईडी (हरा) - चिह्नित "ऑन"
  • संकेतक एलईडी (पीला) चिह्नित "एल" - एक op-amp के माध्यम से डिजिटल पिन 13 से जुड़ा हुआ है
  • Rx और Tx एल ई डी (पीला) - ये संकेत देते हैं कि क्या USB चिप (Atmega16U2) प्राप्त कर रहा है या संचारित कर रहा है

ध्यान दें कि आरएक्स और टीएक्स एलईडी सीधे बोर्ड पर डिजिटल पिन 0 और 1 से जुड़े नहीं हैं (चिह्नित आरएक्स और टीएक्स)। वे केवल तभी रोशन करते हैं यदि आप USB के माध्यम से धारावाहिक संचार कर रहे हैं , न कि यदि आपके पास कुछ है (जैसे एक जीपीएस) सीधे डिजिटल पिन 0 और 1 में प्लग किया गया है।

यह भी ध्यान दें कि चूंकि "एल" एलईडी एक ऑप-एम्प के माध्यम से जुड़ा हुआ है, इसलिए यह रोशन हो सकता है यदि पिन 13 आपके स्केच में एक इनपुट पर सेट है । यह सामान्य बात है। इसका मतलब यह नहीं है कि कुछ गलती से डेटा भेज रहा है।


शक्ति की जाँच करें

यूएसबी पावर

  • यूएसबी केबल के साथ अपने कंप्यूटर में बोर्ड को प्लग करें और जांचें कि हरे रंग की "ऑन" एलईडी लाइट्स।

  • मल्टीमीटर का उपयोग करें और जम्पर की एक जोड़ी 5V पिन और GND पिन (सबसे नीचे तीर) के बीच परीक्षण करती है। आपको लगभग 5.0 V की रीडिंग मिलनी चाहिए (मुझे मेरा 5.04 V मिल गया)।

(यदि आपके पास एक नहीं है, तो आप लगभग $ 10 के लिए एक सस्ता मल्टीमीटर खरीद सकते हैं, लेकिन आप लगभग $ 50 के लिए एक बेहतर हो रहे हैं - सभी इलेक्ट्रॉनिक्स वेब साइटों और स्टोरों की जांच करें।)

  • 3.3 वी पिन और जीएनडी पिन के बीच भी परीक्षण करें - आपको 3.3 वी मिलना चाहिए।

यदि आपको 5 वी नहीं मिलता है, तो सुनिश्चित करें कि यूएसबी केबल प्लग-इन हो और दूसरा छोर आपके कंप्यूटर से जुड़ा हो। एक अलग केबल भी आज़माएं।

बिजली के जैक

  • यदि आप उपयोग कर रहे हैं, या उपयोग करने की योजना बना रहे हैं, तो पावर जैक (फोटो पर "इन पावर" चिह्नित है) यूएसबी को डिस्कनेक्ट करें, और बिजली की आपूर्ति में प्लग करें - जो कि केंद्र पिन पर सकारात्मक के साथ 7 से 12 वी डीसी होना चाहिए ।

  • ऊपर के रूप में 5 V और 3.3 V पिन को मापें। आपको अभी भी उन पर समान वोल्टेज देखना चाहिए।

यदि आप USB के साथ 5 V जुड़े हुए हैं, लेकिन बिजली की आपूर्ति के साथ नहीं है तो वोल्टेज नियामक (फोटो पर चिह्नित) संभवतः क्षतिग्रस्त है। या, संभवतः बिजली की आपूर्ति विफल हो गई है। पुष्टि करने के लिए एक अलग बिजली की आपूर्ति की कोशिश करो जो यह है।


एलईडी फ्लैश पर बिजली की जांच करें

यदि आपके पास Optiboot बूटलोडर है (सामान्य रूप से उस के साथ जहाज) तो यदि आप रीसेट बटन दबाते हैं और छोड़ते हैं, या USB या पॉवर केबल को वापस प्लग करते हैं, तो "L" LED को जल्दी से 3 बार फ्लैश करना चाहिए। "ऑन" और "ऑफ" बार 50 एमएस प्रत्येक होते हैं, तीन चमक दूसरी के लगभग 1/3 के भीतर खत्म होनी चाहिए।

यदि ऐसा नहीं होता है, तो आपको बूटलोडर, या मुख्य प्रोसेसर चिप (Atmega328P) के साथ समस्या हो सकती है।


एक स्केच अपलोड करने का प्रयास करें

महत्वपूर्ण: यदि आपको स्केच अपलोड करने में समस्या हो रही है, तो किसी भी कनेक्टेड डिवाइस (जैसे ढाल) को हटा दें। बोर्ड सॉकेट में प्लग किए गए जम्पर तारों को भी हटा दें। विशेष रूप से, डिजिटल पिंस 0 और 1 (आरएक्स और टीएक्स) में प्लग नहीं होना चाहिए क्योंकि यह अपलोडिंग कंप्यूटर के साथ संचार में हस्तक्षेप करेगा।

सरल उदाहरण स्केच में से एक चुनें (जैसे। ब्लिंक) और इसे अपलोड करने का प्रयास करें। यह वही है जो आपको देखना चाहिए:

  • "एल" एलईडी को 3 बार फ्लैश करना चाहिए। ऐसा इसलिए है क्योंकि अपलोडिंग प्रक्रिया से एक कमांड द्वारा मुख्य चिप को रीसेट किया जा रहा है।

  • "आरएक्स" एलईडी को जल्दी से फ्लैश करना चाहिए। यह बूटलोडर को सक्रिय करने के लिए अपलोड करने की प्रक्रिया से निर्देश है।

  • "टीएक्स" एलईडी को जल्दी से फ्लैश करना चाहिए। यह अपलोड किए गए डेटा को स्वीकार करने वाला प्रोसेसर है।

आप ऊपर देख सकते हैं, भले ही अपलोडिंग प्रक्रिया विफल हो। ऐसा इसलिए हो सकता है क्योंकि गलत बोर्ड प्रकार का चयन किया गया है।

यदि केवल "आरएक्स" एलईडी फ्लैश होता है, तो यह बूटलोडर या मुख्य प्रोसेसर चिप (एटमेगा 328 पी) के साथ एक समस्या के कारण हो सकता है। कोई दस्तक दे रहा है, लेकिन घर पर कोई नहीं है!

बोर्ड के प्रकार की जाँच करें

अगर एल ई डी फ्लैश, लेकिन आप इस तरह से एक संदेश मिलता है:

avrdude: stk500_recv(): programmer is not responding

बोर्ड के प्रकार की जाँच करें:

बोर्ड प्रकार मेनू

यदि आपके पास गलत बोर्ड प्रकार का चयन किया गया है, तो यह संभवतः गलत अपलोडिंग निर्देश भेजेगा, और टाइम-आउट या अन्यथा विफल। यदि आप मेरे जैसे हैं और आपके पास अलग-अलग बोर्ड पड़े हैं, तो यह भूलना आसान है कि आपने जो आखिरी अपलोड किया था, वह एक अलग बोर्ड प्रकार के लिए था।

कॉम पोर्ट की जाँच करें

यदि एलईडी बिल्कुल नहीं चमकती हैं, तो आपके पास गलत कम पोर्ट चयनित हो सकते हैं।

कॉम पोर्ट की जाँच करें:

कॉम पोर्ट मेनू

यदि संभव हो तो एक अलग पीसी / मैक का प्रयास करें

यदि आपके पास एक हाथ है तो एक अलग पीसी / मैक पर अपने Arduino का प्रयास करें। यह संकुचित कर सकता है कि आपके पास उस विशेष कंप्यूटर के साथ कोई समस्या है या नहीं, जिसे आपने इसे प्लग इन किया है, या सामान्य रूप से कंप्यूटर।

लूपबैक टेस्ट करें

  • सभी शील्ड और अन्य तारों को डिस्कनेक्ट करें
  • बोर्ड को सत्ता से हटा दें
  • RESET से GND (फोटो में नारंगी तार) से एक जम्पर तार कनेक्ट करें
  • Rx से Tx (फोटो में सफेद तार) से एक जम्पर तार कनेक्ट करें

तारों:

लूपबैक परीक्षण

  • USB केबल में प्लग करें, और टर्मिनल प्रोग्राम शुरू करें - जैसे Arduino IDE में टर्मिनल मॉनिटर। कुछ टाइप करें और इसे भेजें (जैसे टर्मिनल मॉनिटर में एंटर दबाएं )।
  • आपके द्वारा टाइप की गई हर चीज वापस गूँजनी चाहिए।

यदि सबकुछ वापस आ गया है: यह पुष्टि करता है कि आपके पास सही कॉम पोर्ट है, तो USB केबल ठीक है और USB इंटरफ़ेस चिप (Atmega16U2) शायद ठीक है।

यदि कुछ भी वापस नहीं लिया गया है, तो जांचें:

  • आपके पास सही कम पोर्ट है।
  • एक अलग केबल का प्रयास करें। कुछ सस्ते यूएसबी केबल में केवल बिजली के तार होते हैं न कि डेटा तार।
  • Arduino स्थापित करने के लिए डिवाइस ड्राइवर की जाँच करें। आपको शायद ऐसा करने की आवश्यकता नहीं है यदि वह बोर्ड इस कंप्यूटर पर पहले काम करता है, लेकिन यह करने योग्य हो सकता है यदि आपने पहली बार इस बोर्ड को इस कंप्यूटर में प्लग किया हो।

Atmega16U2 चिप का परीक्षण करें

यदि आपका बोर्ड लूप-बैक परीक्षण में विफल रहता है, और आप निश्चित हैं कि यूएसबी केबल ठीक है, तो आप एटमेगा 16 यूआई चिप का परीक्षण कर सकते हैं। Atmega16U2 चिप के पास, और USB सॉकेट के पास, बोर्ड पर एक ICSP (इन सर्किट सीरियल प्रोग्रामिंग) हेडर है।

पहले पावर डिस्कनेक्ट करें (USB केबल और किसी भी पावर केबल को अनप्लग करें)।

तब आप ICSP हेडर को 6 जम्पर तारों के माध्यम से एक अच्छे यूनो में जोड़ सकते हैं, जैसा कि फोटो में दिखाया गया है:

Atmega16U2 चिप का परीक्षण करें

ICSP हेडर के लिए पिन-आउट (ऊपर से) हैं:

ICSP हेडर

Atmega16U2 चिप के पास ICSP हेडर पर पिन 1 को एक छोटे सफेद बिंदु के साथ "एफआरएफ" में "एफ" के पास चिह्नित किया गया है। ATmega328P चिप के पास ICSP हेडर पर पिन 1 को "ओएन" में "एन" के नीचे, एक छोटे सफेद बिंदु के साथ चिह्नित किया गया है।

कनेक्ट करें:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

अपनी वायरिंग को दोबारा जांचें।

फिर "ज्ञात अच्छा" बोर्ड पर "Atmega_Board_Detector" स्केच स्थापित करें जैसा कि Atmega बूटलोडर प्रोग्रामर पृष्ठ पर वर्णित है । कोड GitHub पर है - निकगैमन / arduino_sketches । यदि आप उस पृष्ठ पर डाउनलोड बटन पर क्लिक करते हैं तो आपको कई उपयोगी रेखाचित्र मिलेंगे। जिसे आप चाहते हैं उसे "Atmega_Board_Detector" कहा जाता है।

एक बार स्थापित होने पर, सीरियल मॉनिटर खोलें, इसे 115200 बॉड पर सेट करें, और आपको कुछ इस तरह से देखना चाहिए:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

हालाँकि अगर आपको इस तरह का संदेश मिलता है:

"Failed to enter programming mode. Double-check wiring!"

यह दर्शाता है कि आपका ATmega16U2 काम नहीं कर रहा है।


ATmega328P चिप का परीक्षण करें

"ज्ञात अच्छा" Arduino Uno से पावर को डिस्कनेक्ट करें और इस फ़ोटो के अनुसार ICSP जंपर्स को फिर से खोलें, उन्हें आपके Uno पर "मुख्य" प्रोसेसर से कनेक्ट करने के लिए:

ATmega328P चिप का परीक्षण करें

ICSP हेडर के लिए पिन-आउट (ऊपर से) हैं:

ICSP हेडर

ATmega328P चिप के पास ICSP हेडर पर पिन 1 को "ओएन" में "एन" के नीचे, एक छोटे सफेद बिंदु के साथ चिह्नित किया गया है।

वायरिंग पहले की तरह ही है, सिवाय इसके कि आप दूसरे ICSP हेडर से कनेक्ट हो रहे हैं - बोर्ड के अंत में एक, USB सॉकेट से दूर।

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

एक बार कनेक्ट होने के बाद, सीरियल मॉनिटर खोलें, इसे 115200 बॉड पर सेट करें, और आपको कुछ इस तरह से देखना चाहिए:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

इस मामले में यह पुष्टि करता है कि मुख्य प्रोसेसर काम कर रहा है, और इस पर Optiboot बूटलोडर है।


चीजें आप ठीक कर सकते हैं

विफल वोल्टेज नियामक

इसे बदलना आसान नहीं है, लेकिन यह केवल तभी आवश्यक है जब आप पावर जैक का उपयोग करें। यदि आप USB से चलते हैं तो इसकी आवश्यकता नहीं है। वैकल्पिक रूप से आप 4 से 5 वी की आपूर्ति (जैसे 3 एक्स एए बैटरी) की व्यवस्था कर सकते हैं और उन्हें सीधे बोर्ड पर 5 वी सॉकेट से कनेक्ट कर सकते हैं।


ATmega16U2 चिप विफल

यह केवल USB पोर्ट और धारावाहिक डीबगिंग के माध्यम से स्केच अपलोड करने के लिए आवश्यक है। इसे बदलना विशेष रूप से आसान नहीं है क्योंकि यह एक SMD (सरफेस माउंटेड डिवाइस) है। हालाँकि आप इसके बिना प्रबंधन कर सकते हैं।

यदि आप ICSP प्रोग्रामिंग डिवाइस खरीदते हैं, तो आप ICSP हेडर के माध्यम से स्केच अपलोड कर सकते हैं।

ऐसे उपकरणों के उदाहरण ICSP सॉकेट में प्लग किए गए हैं:

USBtinyISP

AVRISP

(उन तस्वीरों को एक रगेडुइनो के लिया गया था, लेकिन अवधारणा एक ही है)।


आप एक FTDI केबल भी प्राप्त कर सकते हैं, जैसे:

Arduino को FTDI कनेक्ट करें

इसे अपने बोर्ड के सीरियल पोर्ट से इस तरह कनेक्ट करें:

FTDI केबल

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

अब आप USB चिप को दरकिनार करके सीधे मुख्य प्रोसेसर पर स्केच अपलोड कर सकते हैं।


आप .hex फ़ाइलों को अपलोड करने के लिए मेरे Atmega चिप स्टैंड-अलोन प्रोग्रामर का उपयोग कर सकते हैं - यह आपको SD कार्ड पर स्केच के लिए .hex फ़ाइल की प्रतिलिपि बनाने देता है और फिर ICSP हेडर के माध्यम से बोर्ड को प्रोग्राम करता है।


ATmega328P चिप विफल

मुख्य प्रोसेसर को काफी आसानी से बदला जा सकता है यदि यह सॉकेट में लगाया जाता है। लगभग $ US 6. के लिए Adafruit जैसी कहीं से एक प्रतिस्थापन चिप प्राप्त करें वैकल्पिक रूप से, eBay का प्रयास करें। एक चिप प्राप्त करने की कोशिश करें जिसमें परेशानी को बचाने के लिए पहले से ही ऑप्टिबूट बूटलोडर है।

सॉकेट से मौजूदा चिप को सावधानी से पुरस्कृत करें, और पिन के स्थान पर ध्यान देते हुए नया स्थापित करें। पिन 1 में चिप पर एक पायदान है, और इसकी सही अभिविन्यास इस तस्वीर में पहली तस्वीर पर एक पीले रंग के साथ नोट की गई है डॉट (बोर्ड के किनारे के सबसे करीब)। आपको शायद पैरों को थोड़ा सीधा करने की आवश्यकता होगी। चिप को छोरों से पकड़ें और धीरे से एक सपाट सतह पर एक डेस्क की तरह नीचे धकेलें, जब तक कि उन्हें थोड़ा सा अंदर की ओर धकेल न दिया जाए। धातु के पिंस को छूने की कोशिश करें, आप उन्हें स्थैतिक बिजली से झपका सकते हैं।


ATmega328P प्रतिक्रिया देता है लेकिन कोई बूटलोडर नहीं है

मेरे पास Atmega बूटलोडर प्रोग्रामर में एक स्केच है जो Optiboot बूटलोडर को बदल देगा। वायर चिप डिटेक्टर स्केच के समान है। कोड GitHub पर है - निकगैमन / arduino_sketches । यदि आप उस पृष्ठ पर डाउनलोड बटन पर क्लिक करते हैं तो आपको कई उपयोगी रेखाचित्र मिलेंगे। जिसे आप चाहते हैं उसे "Atmega_Board_Programmer" कहा जाता है।

अपने "ज्ञात अच्छे" ऊनो पर स्केच स्थापित करें, और इसे पहले दिखाए गए तारों के साथ लक्ष्य बोर्ड से कनेक्ट करें।

ATmega328P चिप का परीक्षण करें

अपने "अच्छे" पर सीरियल मॉनिटर खोलें और आपको यह देखना चाहिए:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Uno (Optiboot) लोडर के लिए "U" टाइप करें।

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

चिप को प्रोग्राम करने के लिए "G" टाइप करें।

तुम्हे देखना चाहिए:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

इसमें लगभग एक सेकंड लगता है। अब बूटलोडर स्थापित है।


प्रहरी घड़ी की समस्याओं

वॉचडॉग टाइमर (डिफ़ॉल्ट रूप से बंद) एक निश्चित समय के बाद प्रोसेसर को रीसेट करने के लिए कॉन्फ़िगर किया जा सकता है। इरादा क्षेत्र में तैनात प्रोसेसर के लिए "हैंग" से उबरने का है। हालाँकि अगर टाइमर छोटी अवधि (जैसे 16 एमएस) के लिए सेट है, तो प्रोसेसर फिर से रीसेट हो सकता है इससे पहले कि बूटलोडर के पास कुछ भी करने का मौका हो।

लक्षण यह हैं कि आप कोई नया स्केच अपलोड नहीं कर सकते। कुछ आधुनिक बूटलोडर्स (जैसे ऑप्टिबूट) इस समस्या को रोकने के लिए कदम उठाते हैं क्योंकि वे पहली चीजों में से एक हैं। हालाँकि अन्य नहीं करते हैं।

इससे उबरना मुश्किल हो सकता है, क्योंकि एक बार जब स्केच चलता है, तो आपको इसे रीसेट करने की समस्या होती है, और यदि आपको समस्या है तो आप स्केच को बदल नहीं सकते हैं। लोग अक्सर रिपोर्ट करते हैं कि उन्हें ठीक होने के लिए एक नया बूटलोडर जलाना होगा। हालाँकि यह केवल इसलिए है क्योंकि साइड-इफेक्ट के रूप में, बूटलोडर को जलाने से वर्तमान स्केच मिट जाता है।

वहाँ है उबरने का एक तरीका। ये उपाय करें:

  • बोर्ड को पूरी तरह से बंद करें (यूएसबी केबल को हटा दें)।
  • रीसेट बटन दबाए रखें, और इसे नीचे रखें (या, RESET पिन से जीएनडी पिन तक जम्पर तार चलाएं)। यह समस्या के स्केच को शुरू होने से रोकता है, और इस प्रकार वॉचडॉग टाइमर को सक्रिय करता है
  • अभी भी रीसेट को दबाए रखते हुए, USB केबल को फिर से कनेक्ट करें।
  • एक स्केच अपलोड करना शुरू करें जिसमें यह समस्या नहीं है (जैसे। ब्लिंक)
  • एक बार जब आईडीई रिपोर्ट करता है "अपलोडिंग" रीसेट बटन जारी करता है (या जम्पर तार हटा दें)।
  • इसे अब ओके अपलोड करना चाहिए - क्योंकि स्केच जो वॉचडॉग टाइमर को सक्रिय करता है, कभी शुरू नहीं हुआ।

Mega2560 अपलोड के साथ समस्या

मैं यहां इसका उल्लेख करता हूं, भले ही यह पोस्ट वास्तव में ऊनो बोर्ड को लक्षित कर रहा है, क्योंकि यह काफी सामान्य है।

Mega2560 बूटलोडर के कुछ संस्करण "!!!" पीसी से आने वाले अपलोड में, और अगर वे देखते हैं, तो डिबगिंग मोड में छोड़ दें। इसके कारण अपलोड विफल हो जाता है।

उदाहरण कोड:

Serial.println ("Furnace overheating!!!");

समाधान:

  • अधिक हाल के बूटलोडर को स्थापित करें। इस उत्तर में पहले वर्णित मेरे "बूटलोडर अपलोडर" स्केच को एक बूटलोडर स्थापित करना चाहिए जिसमें वह मुद्दा नहीं है।

या (और अधिक सरल):

  • प्रयोग नहीं करें "!!!" अपने स्केच में।

लियोनार्डो / माइक्रो / एस्प्लोरा आदि को अपलोड करने में समस्याएं

उनके मुख्य (और केवल) प्रोसेसर के रूप में ATmega32u4 के साथ बोर्डों को अपलोड करने के लिए मुश्किल हो सकता है। ऐसा इसलिए है क्योंकि उसी चिप को अपलोड संभालना है और अपना कोड भी चलाना है।

बोर्ड के रीसेट होने के बाद, अवसर की एक छोटी सी खिड़की होती है, जब यह अपलोड होने के लिए एक नया स्केच दिखता है। इन बोर्डों पर अपलोड करने की तकनीक है:

  • त्रुटियों के बिना अपना स्केच संकलित करें।
  • अपलोड शुरू करें
  • जैसे ही IDE "अपलोडिंग" को रिपोर्ट करता है और रीसेट बटन जारी करता है।

ऐसा करने के लिए आपके पास पुराना स्केच शुरू होने से पहले केवल दूसरा या ऐसा होना चाहिए। यदि आपको इस प्रक्रिया को एक-दो बार दोहराना है तो निराश मत होइए। यह सामान्य बात है।


संदर्भ


5
वाह। यह एक महान महान महान उत्तर है
rpax

1
यह एक अद्भुत जवाब है सर।
मर्ट गुल्सोइ

"यदि आप USB के साथ 5 V जुड़ा हुआ है, लेकिन बिजली की आपूर्ति के साथ नहीं है तो वोल्टेज नियामक (फोटो पर चिह्नित) संभवतः क्षतिग्रस्त है। या, संभवतः बिजली आपूर्ति विफल हो गई है। यह पुष्टि करने के लिए एक अलग बिजली आपूर्ति का प्रयास करें। । " - यह आपको स्केच अपलोड करने से क्यों रोकेगा?
user2813274

आप काफी सही हैं, यह नहीं होगा। हालाँकि चेक-लिस्ट को विफलताओं के लिए एक सामान्य चेक-लिस्ट माना जाता था। इस मामले में यह अधिक होगा "मैं एक स्केच अपलोड कर सकता हूं, लेकिन जब बिजली की आपूर्ति (दीवार-मस्सा) के साथ क्षेत्र में तैनात किया जाता है, तो यह काम नहीं करता है"।
निक गैमन

1
मुझे हाल ही में नए FTDI ड्राइवरों के साथ एक समस्या थी कि "ईंट" चीनी "FTDI संगत" (अच्छी तरह से आप नकली कह सकते हैं) चिप्स। उन्होंने डिवाइस के पीआईडी ​​को 0x0000 में डाल दिया, जो ड्राइवरों को अमान्य बना देगा। आप FTDI पर M_PROG टूल के साथ PID को वापस बदलने या ड्राइवरों को बदलने के लिए चुन सकते हैं (और असत्यापित ड्राइवरों को अनुमति देने के लिए विंडोज़ सेट अप करें)।
पॉल

14

कम से कम - जैसा कि मैं मानता हूं कि आप अपने स्केच को अवार्ड के माध्यम से अपलोड करते हैं - कृपया अपलोड विफलता (जैसे स्केच अपलोडर का आउटपुट) के बारे में अधिक जानकारी दें ताकि यहां के लोग आपकी बेहतर मदद कर सकें।

इसके अलावा निक गैमन के महान जवाब के लिए, कृपया अपने स्केच में विस्मयादिबोधक चिह्नों की खोज करें। यदि आपके स्केच में 3 विस्मयादिबोधक चिह्नों के बराबर या अधिक के साथ एक स्ट्रिंग है, तो अपलोड विफल हो जाएगा, क्योंकि Arduino Bootloader के पुराने संस्करण इन विस्मयादिबोधक चिह्नों को एक अन्य फ़ंक्शन के रूप में व्याख्या करेंगे और अपलोड बंद हो जाएगा।

अपलोड को रोकने के लिए एक उदाहरण:

char* test = "This will stop the upload!!!";

Google कोड समस्या देखें ।


1
अच्छी बात। यह मुख्य रूप से Mega2560 पर लागू होता है, लेकिन मैं मानता हूं कि मैंने इसे छोड़ दिया। :)
निक गैमन

1
इस समस्या से निपटने के लिए एक अनुभाग जोड़ा गया।
निक गैमन

2

मैंने स्थैतिक (मुझे लगता है) के कारण अपने Arduino Uno बोर्ड पर 2x ATMega328P को ईंट कर दिया है।

ऐसा लगता है कि स्थिर ने TX पिन को मार दिया है और इसलिए USB केबल का उपयोग करके प्रोग्राम को डाउनलोड नहीं किया जा सकता है।

सबसे आसान उपाय माइक्रोकंट्रोलर को बदलना है। आप एक नया ATMega328P DIP जो Arduino बूटलोडर ( जैसे कि यह Adafruit से एक है ) के साथ प्रोग्राम करके खरीद सकते हैं और आप फिर से जाने के लिए तैयार हैं।

वैकल्पिक रूप से, आप अभी भी AVRISPmkII प्रोग्रामर का उपयोग करके ATMega328P प्रोग्राम कर सकते हैं। जब आप करते हैं, लेकिन सभी टीएक्स पिन ठीक काम करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.