আই 2 সি ভারী বাধা লোডের নিচে পড়া / লেখার ব্যর্থতা


10

আমার সিস্টেমে আমি আই 2 সি ব্যবহার করছি এবং আমি বুঝতে পারি ভারী বিঘ্নিত বোঝার (অন্যান্য উত্স থেকে), আই 2 সি যোগাযোগ সহজেই ব্যাহত হয়। আই 2 সি এর জন্য এটি কি প্রত্যাশিত আচরণ? আমি বাধাপ্রাপ্ত লোড সত্ত্বেও আশা করতাম, এটি এখনও ঠিক থাকবে যেহেতু আই 2 সি হ'ল সময় সমালোচনামূলক ইন্টারফেস নয়, ঘড়ির সাথে ডেটা সরবরাহ করা হয়।

হালনাগাদ:

প্রসেসরটি এসটিএম 32। বিঘ্নগুলি এডিসির কারণে হয়, আমি পঠিত ইভেন্টগুলির সময় বাধাগুলি অক্ষম করতে পারি না তাই আমার অবশ্যই একটি সমাধান খুঁজে বার করতে হবে যেখানে আমি i2c যোগাযোগকে আরও স্থিতিশীল করতে পারি। STM32 মাস্টার এবং স্লেভটি অন্য একটি ডিভাইস (অ্যাকসিলোমিটার)।

Update2:

আমি যখন একটি ছোট উড়ন্ত তারের সাথে একটি যুক্তি বিশ্লেষককে ঘড়ির সাথে সংযুক্ত করি তখন সমস্যাটি অদৃশ্য হয়ে যায়। মজার বিষয় হল, কোনও বাধা লোড নেই, পড়ার লিখনটি ভাল কাজ করে, যখন বাধা লোড থাকে তখন তারা তা করে না। যাইহোক, যদি আমি এই ঘড়ির সাথে প্রোবটি সংযুক্ত করি তবে পঠন রচনাটিও বিরতিপূর্ণ লোডের অধীনে কাজ করে। আমি মনে করি, কোথাও একটি ক্যাপাসিটেন্স সমস্যা আছে।


1
আপনার প্রশ্নটি খুব জেনারিক কারণ এটি সব আপনার সিস্টেমের ডিজাইনের উপর নির্ভর করে। আই 2 সি কীভাবে পরিচালনা করে তা বাসের ডিভাইসগুলির উপর নির্ভর করে। আপনি কি এগুলি উপেক্ষা করে পরে আসতে পারেন? একটি এফপিজিএতে, আপনার জন্য অনেক যত্ন নেওয়ার জন্য এবং এড়াতে আপনি যুক্তি ডিজাইন করতে পারেন। আবার, আমাদের মাইক্রোকন্ট্রোলার এবং আপনার কাছে অন্যান্য জিনিসগুলি সম্পর্কে আরও তথ্য প্রয়োজন। সাধারণত এখানে একটি ভাল সমাধান হ'ল আরটিওএস ব্যবহার করা এবং কার্যগুলি সঠিকভাবে ডিজাইন করা।
গুস্তাভো লিটোভস্কি

দুটি বিষয় যা সন্ধান করতে হবে, সেগুলি আপনার নিজের আই 2 সি মাস্টার এবং স্লেভ, বা ইমি বা ক্যাপাসিট্যান্স ইস্যুগুলিতে পাওয়ার ভোল্টেজ g বাধা লোড হিসাবে, আপনার মানে কি আপনার মাস্টার একটি বাধা হ্যান্ডেল করা বন্ধ করছে? কিছু চিপস অসীম ঘড়ি প্রসারিত করতে দেয় না।
পাসওয়ারবি

@ গুস্তাভালিটোভস্কি আপনি ঠিক বলেছেন তবে 80% সিপিইউ চক্র এডিসি বিঘ্নিত হয়ে সার্ভিস করছে এবং আইএসআরবিহীন উইন্ডো চলাকালীন একটি পঠনচক্র করার পর্যাপ্ত সময় নেই। সুতরাং আমি ওএস সিস্টেমটিকে কতটা ভালভাবে ডিজাইন করি তা পঠন ব্যাহত হবে।
কেটিসি

@ পাসসার্বি আপনি ঠিক থাকতে পারেন যুক্তি বিশ্লেষকটির তদন্তটি যখন আমি ক্লক লাইনে সংযুক্ত করি তখন সমস্যাটি অদৃশ্য হয়ে যায়।
কেটিসি

টান আপগুলির জন্য আপনার বর্তমান মানটি কী। আপনি কি এগুলিকে অন্য কোনও মূল্যে পরিবর্তন করার চেষ্টা করেছেন? (কেবলমাত্র প্রথম অনুমানের জন্য 10 কে বা 4 কে 7 বা 2 কে চেষ্টা করুন)
টম এল।

উত্তর:


9

এটি একটি সফ্টওয়্যার সমস্যা, আপনি বাধা সার্ভিসিংয়ে অনেক বেশি সময় ব্যয় করছেন এবং আপনার আই 2 সি রুটিন এটি পরিচালনা করতে সক্ষম নয় (সুতরাং এটি দুটি জিনিস যা সঠিক নয়)। আমি বেশ কিছু অনুরূপ পরিস্থিতিতে দিয়েছি।

প্রথম: আপনাকে বিঘ্নগুলিতে যথাসম্ভব কম করার দরকার, কেবল তথ্য পড়ুন এবং সঞ্চয় করুন, আইএসআরের বাইরে আপনি যে প্রক্রিয়াকরণ করতে পারেন তা করবেন না, গণিতগণ প্রচুর সিপিইউ চক্র নিতে পারে এবং সিপিইউ অন্য কিছু করতে পারে না যে বাধা যখন।

দ্বিতীয়: জিনিসগুলি স্বয়ংক্রিয় করতে ডিএমএ তদন্ত করুন, যাতে আপনার বিঘ্নগুলি প্রায় একটি পটভূমির স্বয়ংক্রিয় প্রক্রিয়াতে পরিণত হয়।

তৃতীয়: যদি আই 2 সি গুরুত্বপূর্ণ হয় তবে সেটিও একটি বিঘ্নের মধ্যে রাখুন, তবে নিশ্চিত করুন যে আপনি অগ্রাধিকারগুলি কার্যকর করেছেন!

চতুর্থ: আপনার আই 2 সি রুটিন কেন ব্যর্থ হচ্ছে তা নিয়ে কাজ করুন, আই 2 সি নিজেই খুব বিরতিহীন সময়, বিরতি এবং অপেক্ষা ইত্যাদির পক্ষে দাঁড়াতে পারে যাতে আপনার রুটিনটিকে এটির অনুমতি দেওয়ার জন্য সংশোধন করার প্রয়োজন হতে পারে।

পঞ্চম: দেখুন আপনি "চেইন" বিঘ্নিত করতে পারেন কিনা, আপনি ADC আরও দক্ষতার সাথে পড়াতে পরিষেবা পেতে পারেন বা এডিসিকে একটি অন্য মোডে রেখে দিতে পারেন যেখানে বাধা দেওয়ার আগে এটি আপনার জন্য আরও কাজ করে (EG সমস্ত পাঠ্য উপলব্ধ হওয়ার অপেক্ষা রাখে, তারপরে 8 টি পৃথক এডিসি চ্যানেলের জন্য 8 টি পৃথক বিঘ্নিত না হয়ে সমস্ত হিটের মধ্যে পড়ুন।

ষষ্ঠ: একটি কোডের প্রতিটি বিটটিতে আপনি কতটা সময় ব্যয় করছেন তা সনাক্ত করতে, আপনি এটি গতি বাড়িয়ে তুলতে পারেন কিনা তা জানতে, একটি অসিলোস্কোপ বা যুক্তি বিশ্লেষক এবং বোর্ডে অতিরিক্ত আইও পিনগুলি ব্যবহার করুন। (আপনি যখন কোনও ফাংশন / আইএসআর প্রবেশ করেন তখন পিনটি উচ্চ সেট করুন, প্রস্থানের সময় এটিকে আবার কম সেট করুন)।

সপ্তম: আপনি যদি সত্যিই এডিসিটি এত বেশি পড়তে চান তবে সিদ্ধান্ত নিন, ধীরে ধীরে কি জিনিসকে আরও খারাপ করে দেবে? এটি পাল্টা স্বজ্ঞাত তবে ধীরে ধীরে চলমান আসলে ভাল ফলাফল দেয়, আপনার জন্য সিগন্যাল গড় গড়ার কাজ করে এবং স্পাইক / ট্রান্সিয়েন্টগুলিকে কাটায় যা সমস্যার কারণ হতে পারে বা অতিরিক্ত প্রসেসিং অপসারণের প্রয়োজন হতে পারে। আমরা মোটর কন্ট্রোল পিআইডি রুটিনটিকে কেবল 1/4 গতিতে চালিয়ে, প্রক্রিয়ায় সিপিইউর সময় প্রচুর পরিমাণে মুক্ত করে উন্নতি করি।


পরামর্শের জন্য ধন্যবাদ। সমস্যাটি কোনওভাবে হার্ডওয়্যারকে নির্দেশ করে।
কেটিসি

4

একটি বাস স্লেভ যা অন্যান্য জিনিস নিয়ে ব্যস্ত থাকে তার যোগাযোগের শেষ অবধি চালিয়ে নিতে সক্ষম না হওয়া পর্যন্ত সময় কেনার জন্য প্রসারিত ক্লক করার ক্ষমতা রাখে। এটি তাত্ক্ষণিকভাবে ACK / NACK ঘড়ি পালস না পাঠিয়ে, উত্তরটি প্রস্তুত না হওয়া অবধি যোগাযোগকে মধ্যবর্তী অবস্থায় রেখে।

এই ধরণের পরিস্থিতি মোকাবেলার জন্য ক্লক স্ট্রেচিং উপযুক্ত উপায়। এমন একটি ডিভাইস যা প্রসারিত না করে এবং অন্যান্য খারাপ কাজ করে (বাস হ্যাং / পুনঃসূচনা, NACKs একটি বৈধ ঠিকানা বা কমান্ড ইত্যাদি) সমস্যাযুক্ত হতে পারে এবং মাস্টারকে জিনিসগুলি বাছাই করে রাখার জন্য অতিরিক্ত বোঝা চাপায় (এটি আদেশগুলি পুনরায় করতে হবে) , ন্যাক ইত্যাদি ট্র্যাক রাখুন)


আপনি ঠিক বলেছেন তবে সমস্যাটি হোস্টের। হোস্ট অন্যান্য জিনিস নিয়ে ব্যস্ত, দাস নয়। তাই আমি নিশ্চিত না যে আমি একটি ঘড়ি প্রসারিত করতে পারি।
কেটিসি

আপনি কি বোর্ডের আই 2 সি হার্ডওয়্যার ব্যবহার করছেন বা জিপিআইও লাইনগুলির বাইরে প্রোটোকলটি বিট-ব্যাং করছেন? স্ট্যান্ডার্ডে কোনও নির্দিষ্ট আই 2 সি টাইমআউট অন্তর্বর্তী নেই, সুতরাং দাসদের প্যাকেট শেষ করার জন্য মাস্টারটির জন্য অনির্দিষ্টকালের জন্য অপেক্ষা করা উচিত।
অ্যাডাম লরেন্স

আমি STM32 আইসি 2 এপিআই ব্যবহার করি। দয়া করে আপডেটটি দেখুন, এটি ক্যাপাসিট্যান্স সমস্যার মতো দেখাচ্ছে looks
কেটিসি

1

STM32 এর সক্ষমতার উপর নির্ভর করে (আমি কখনই এটি ব্যবহার করি নি) আপনি নিম্নলিখিত পদ্ধতির একটি ব্যবহার করতে পারেন। আপনি কী করতে চাইছেন সে সম্পর্কে যদি আপনি আরও বিশদ সরবরাহ করতে পারেন এবং আপনার যে আকারে এখন প্রতিটি বাধা কেন প্রয়োজনীয় তা সম্পর্কে একটি দৃinc় যুক্তি থাকতে পারে, তবে আরও একটি সুনির্দিষ্ট উত্তর নিয়ে ভাবা যেতে পারে। বিশেষত আপনার ক্ষেত্রে, যদিও, আই 2 সি এটির জন্য যথেষ্ট ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ভাল লিখিত বিঘ্নিত রুটিনগুলির সাথে সমস্যা না হয়।

  • কোনও কিছুর জন্য বাধা সাধারণত অক্ষম করা যায়। যে কোনও সাধারণ নিয়ামকটিতে সর্বাধিক এক বা দুটি নন-মাস্কেবল ইন্টারফেট থাকে, যার একটি পুনরায় সেট করা হয়। আপনার যদি কোনও কিছুর (ADC বা I2C, আপনার ক্ষেত্রে) বিঘ্নিত চালিত নিয়ন্ত্রণের প্রয়োজন না হয় , তবে সেই পেরিফেরিয়াল কোডটি এমন একটিতে রূপান্তর করুন যা বাধা ব্যবহার করে না এবং তারপরে বাধা নিষ্ক্রিয় করে।

  • বাধা হ্যান্ডলারগুলি দীর্ঘ হওয়া উচিত নয়। বিঘ্নিত ভেক্টর থেকে নিজে যতটা সম্ভব চেষ্টা করুন। বাধা সম্পর্কে চূড়ান্ত নরমাল পদ্ধতিটি হ'ল বিঘ্নিত হ্যান্ডলারের রুটিনের মধ্যে থেকে কেবল একটি পতাকা সেট করা এবং বলে, মূল লুপটি সেখানে থেকে সমস্ত ভারী উত্তোলন করে। আপনার নির্দিষ্ট অ্যাপ্লিকেশন এবং ফার্মওয়্যার আর্কিটেকচারের জন্য যা প্রয়োজন তা সহজ নাও হতে পারে যে, কিন্তু বাধা থেকে সত্যিকারের কতটা করতে হবে তা দেখার চেষ্টা করা সত্যিই সার্থক।

  • আপনার যদি পেরিফেরাল ডিএমএ থাকে তবে প্রতিটি বাইটে বাধা দেওয়ার পরিবর্তে এটি ব্যবহার করুন। সাধারণত, আই 2 সি-র বিপরীতে ডিএমএতে এডিসি রাখা আরও সহজ হবে, তবে বিভিন্ন চিপগুলির বিভিন্ন বাস্তবায়ন রয়েছে। ডিএমএতে আই 2 সি এক্সচেঞ্জ বন্ধ রাখার কোনও পরিষ্কার উপায় থাকলে আমি অবাক হব না। ডিএমএ আপনাকে বিঘ্নের সংখ্যা হ্রাস করতে দেয় এবং আপনার প্রসেসর কোরটিকে ডেটাগুলির প্রতিটি একক ব্লককে মোকাবেলা থেকে মুক্ত করে।

  • আপনি ডেটা দুর্নীতি দেখতে পাচ্ছেন এমন নির্দিষ্ট দৃষ্টান্তগুলি এবং যে পদ্ধতিতে ডেটা দুর্নীতি হচ্ছে সেগুলি সনাক্ত করার চেষ্টা করুন। এটি করা খুব কঠিন, তবে একটি আধুনিক অসিলোস্কোপ / লজিক বিশ্লেষকের সৃজনশীল ব্যবহারের সাথে আপনি কিছু সমস্যা দেখতে সক্ষম হতে পারেন। বিশেষত, নিশ্চিত হয়ে নিন যে সমস্যাটি টাইমিংয়ের সাথে মেমরির সাথে নয় (যা ভয়ঙ্কর কোড এবং উদার সংকলকের সংমিশ্রণ সহ একটি সম্ভাবনা)

সম্পাদনা: সমস্যার এই উদাহরণ সম্পর্কিত কিছু সুনির্দিষ্ট নোট, প্রশ্ন সম্পর্কে আপনার মন্তব্যগুলি থেকে:

  • অ্যাডিসি পড়তে 80% সিপিইউ ব্যবহার করা সাধারণত উপযুক্ত কাজ নয়। আপনি যদি এটিতে কাজ করতে বা ডেটা সংরক্ষণ করতে না পারেন তবে ডেটা সংগ্রহ করা অকেজো is
  • এমনকি যদি আপনি কোনও উপায়ে বিপুল পরিমাণে ডেটা সংগ্রহ করে (কার্যকরভাবে) হয়ে থাকেন তবে এডিসি বাধা এতক্ষণের বেশি হওয়া উচিত নয় যে এটি আইটেমি পেরিফেরিয়ালটিকে পুরোপুরি দমন করতে পারে যাতে এটি ডেটা হারাতে পারে। আই 2 সি সবচেয়ে বেশি 100 / 400KHz এ চলে runs আই 2 সি-র ঘড়ির কাঁটার চেয়ে আরও মারাত্মক কিছু দেখতে দেখতে এটির জন্য আপনাকে দীর্ঘ সময়ের জন্য বাধা দেওয়ার জন্য সত্যই, সত্যিকারের দীর্ঘ বিরতি দরকার।

ধন্যবাদ। আমাদের সিস্টেমে এই জাতীয় জটিল এবং দীর্ঘ আইএসআর প্রয়োজন, এটি একটি দীর্ঘ গল্প story যদিও আপনি ঠিক বলেছেন, আই 2 সি অবশ্যই এই বিঘ্নিত লোডের অধীনে বজায় রাখতে হবে এবং এটি পারে না। আমি সন্দেহ করছি সমস্যাটি হার্ডওয়ারে রয়েছে, আপডেটটি দেখুন।
কেটিসি

আমার অভিজ্ঞতার পক্ষে এটির মূল্য কী, যেগুলি বেশিরভাগ ব্যবহারের ক্ষেত্রে খুব বেশি দীর্ঘ আইএসআরকে বাধ্যতামূলক বলে মনে হয় আসলে সেগুলিই আরটিওএসের প্রাপ্য। এবং হ্যাঁ, আপনার সর্বশেষ সম্পাদনাটি এটি একটি হার্ডওয়্যার সমস্যার মতো বলে মনে হচ্ছে। আপনার যুক্তি বিশ্লেষক যেখানে ছিল সে লাইনে একটি ছোট ক্যাপাসিটার স্থাপন করার চেষ্টা করুন এবং আপনি সম্ভবত ভাল থাকবেন। কেন এটি প্রয়োজনীয়, তার উত্তর দেওয়া কিছুটা কঠিন। আমি আই 2 সি পুলআপ রেজিস্টারগুলি পরীক্ষা করেছি (আপনার বাসের ক্যাপাসিট্যান্সের জন্য খুব কম হতে পারে) এবং আপনি যে কোনও আই 2 সি বাফার / রিপিটার ব্যবহার করছেন তার ডেটাশিটগুলি পরীক্ষা করে দেখতে চাই।
চিন্তালগিরি শশাঙ্ক

0

প্রদত্ত ব্যবস্থায়, ঘড়ির কাঁটা এবং ডেটা বাসে প্রবেশের শব্দ হতে পারে। আপনার যুক্তিযুক্ত অ্যানেলসার সমস্যাটি সরিয়ে ফেলেছে তা এটি দেখায়। ব্যবহারিক এবং দ্রুত বাস্তবায়নের জন্য, আপনার পর্যবেক্ষণের দ্বারা প্রদত্ত কিউটি অনুসরণ করুন। একই ধরণের পর্যবেক্ষণের উপর ভিত্তি করে ৪০০ কেবিট / সেকেন্ড বাস্তবায়ন সহ একটি আই 2 সি বাসে আমি 12 এমএফ এর সাথে সমান্তরাল 2 এম ঘড়ি এবং ডেটা পয়েন্ট থেকে স্থল থেকে সংযুক্ত করেছি এবং দেখতে পেয়েছি যে সমস্যার সমাধান হয়েছে। এটি নির্দিষ্ট i2c যোগাযোগের জন্য প্রয়োজনীয় আগ্রহের ব্যান্ডের বাইরে শব্দ / ফিল্টারগুলি সরিয়ে দেয়। দয়া করে চেষ্টা করুন এবং পরামর্শ দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.