এভিআর রেজিস্টার এবং পোর্টগুলি কি শূন্যে শুরু করা দরকার?


9

আমার কোডের সূচনা রুটিনের সময় আমি এই জাতীয় জিনিসগুলিতে ব্যবহার করি:

clr    r0  ; will always stay zero

এবং:

out    PORTA, r0; initialize ports
out    DDRA, r0
out    PORTB, r0
...

এটি কি আসলে প্রয়োজনীয়? অথবা আমি নিশ্চিত হতে পারি যে পুনরায় সেট করার পরে এটি স্বয়ংক্রিয়ভাবে সম্পন্ন হয়েছে? বিশেষত, আমি কি সমস্ত কোডকে ডিফল্ট হিসাবে ইনপুট হিসাবে সেট করার জন্য নির্ভর করতে পারি যাতে কোনও কোড কার্যকর করা না হলে বাহ্যিক ভোট নিয়ে কোনও সমস্যা না হয়?

উত্তর:


6

একটি AVR এর I / O পোর্টগুলি পুনরায় সেট করার পরে INPUT / Tri-State / Hi-Z (DDRx = 0x00) এ সেট করা হয়। বেশিরভাগ মাইক্রোকন্ট্রোলারদের (তবে সব না?) এই আচরণ রয়েছে। এটি পিনের জন্য নিরাপদ রাষ্ট্র। তাই হ্যাঁ, আপনি ইনপুট হিসাবে স্বয়ংক্রিয়ভাবে সেট করা পোর্টগুলির উপর নির্ভর করতে পারেন।

কিছু অংশগুলি একটি এটিমেগ 16 দেখায় যে এটি হ'ল:

এখানে চিত্র বর্ণনা লিখুন

ঘড়িটি চলমান না থাকলেও পুনরায় সেট করার শর্তটি সক্রিয় হয়ে উঠলে পোর্ট সি পিনগুলি ত্রি-বিবৃতিযুক্ত।


1
আমি ঠিক এটিই সন্ধান করেছি :)
স্টিফান পল নোকে

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

@ মাইসুউজ মূল বিষয়টি অজানা অবস্থায় আউটপুট না রাখার নয় । মাইক্রোকন্ট্রোলারের সাথে সংযুক্ত এমন বাহ্যিক সার্কিটে তাদের অবাঞ্ছিত প্রভাব থাকতে পারে
এম .আলিন

1
@ মাইসুউজ আপনি পোর্ট ইনপুট রেজিস্টারগুলিতে উল্লেখ করছেন, তাই না? এগুলির প্রাথমিক অবস্থা হিসাবে এন / এ রয়েছে (যা অর্থবোধ করে, যেহেতু তারা কেবল পিনে যা প্রয়োগ হয় তা প্রতিফলিত করে)। তবে আমি ডেটা নির্দেশিকা রেজিস্ট্রারগুলিতে উল্লেখ করছি। আমি কেবল নিশ্চিত হতে চেয়েছিলাম যে আমি দুর্ঘটনাক্রমে পোর্টটি আউটপুট হিসাবে সেট করব না, সম্ভবত পিনের সাথে ভোল্টেজ প্রয়োগ করা হয়েছে তার সাথে দ্বন্দ্ব রয়েছে।
স্টিফান পল নোক

ওহ হ্যাঁ, সত্যিই, আওয়াজের জন্য দুঃখিত ..
মাইসুজ

4
  • তথ্য শীট যা বলুক না কেন পোর্ট ইনিশিয়ালাইজেশন হ'ল একটি ভাল ধারণা।

  • যদি ডেটাশিট কিছু না বলে থাকে তবে এটি একেবারে গুরুত্বপূর্ণ ধারণা।


আপনার প্রোগ্রামটি চালিত হলে কী ঘটবে সে সম্পর্কে যত্নশীল হলে আপনাকে কেবল পোর্ট ডেটা বিষয়বস্তুর সংজ্ঞা দিতে হবে।

আপনি যদি ফলাফলটির বিষয়ে চিন্তা না করেন তবে আপনাকে পোর্ট ডেটার বিট সেট করতে হবে না :-)।

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


পুরোপুরি সম্মত। আমি ঠিক বুঝতে পেরেছি যে একটি হার্ডওয়্যার রিসেটের পরিবর্তে প্রোগ্রাম শুরু হতে পারে বা - অপ্রত্যক্ষ জাম্পগুলি ভুল হয়ে গেলে সম্প্রতি আমার কী হয়েছিল - প্রোগ্রাম কাউন্টারটি উপচে পড়ে আবার 0x0000 এ পৌঁছেছে। তার পরে বন্দরগুলি কী অবস্থায় থাকবে কে জানে ...
স্টিফান পল নোকে

1

রেজিস্টার বা এসআরএএম উভয়ই পুনরায় সেট করার পরে আরম্ভ করা হয় না, কেবল পেরিফেরিয়াল রেজিস্টারগুলির মধ্যে কয়েকটি। আপনার ব্যবহৃত জিনিসগুলি আপনার আরম্ভ করা উচিত।


কোন পেরিফেরিয়াল রেজিস্টার এটি প্রযোজ্য তার কোনও হারিয়ে যাওয়ার সাথে আপনি কি জানেন বা একটি লিঙ্ক আছে? আমি UCSRCডেটাশিটে যেমন কিছু জন্য 'প্রাথমিক মান' পেয়েছি । আই / ও বন্দরগুলি, বিশেষত ডেটার দিকনির্দেশ সম্পর্কে কী বলা যায়?
স্টিফান পল নোক

2
আই / ও পোর্টগুলি ইনপুটতে সেট করা আছে। এটি সব তথ্য পত্রিকায় রয়েছে।
লিওন হেলার

@ লিওন হেলার ওহ ধন্যবাদ, এখন আমি এটি দেখতে পাচ্ছি। ঠিক সেখানে রেজিস্টার বিবরণ। আমি একরকম মিস করেছি ...
স্টিফান পল নোকে

@ নোয়া ১৯৯৯, লিওন সঠিক, পেরিফেরিয়াল রেজিস্টারগুলির প্রাথমিক মানগুলি সর্বদা নিবন্ধকের ভিজ্যুয়ালাইজেশনের নীচে নির্দিষ্ট করা হয় (বা স্বতন্ত্র বিটের নামযুক্ত যে চিত্রটি বলা হয় :))।
অবাকর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.