অনেক মাইক্রোকন্ট্রোলার, যেমন পিআইসি 18 এফ এর ফ্ল্যাশ প্রোগ্রাম মেমরি থাকে: "ফ্ল্যাশ প্রোগ্রামের মেমরিটি স্বাভাবিক অপারেশনের সময় পাঠযোগ্য এবং লিখিত হয়"। এর অর্থ কি আমি প্রোগ্রাম মেমোরিতে কিছু ব্যবহারকারীর কনফিগারেশন সঞ্চয় করতে পারি?
অনেক মাইক্রোকন্ট্রোলার, যেমন পিআইসি 18 এফ এর ফ্ল্যাশ প্রোগ্রাম মেমরি থাকে: "ফ্ল্যাশ প্রোগ্রামের মেমরিটি স্বাভাবিক অপারেশনের সময় পাঠযোগ্য এবং লিখিত হয়"। এর অর্থ কি আমি প্রোগ্রাম মেমোরিতে কিছু ব্যবহারকারীর কনফিগারেশন সঞ্চয় করতে পারি?
উত্তর:
হ্যা, তুমি পারো. আমি অনেকবার এটি করেছি।
তবে পৃথক EEPROM ব্যবহারের সাথে সম্পর্কিত কিছু ত্রুটি রয়েছে:
অনেকগুলি পিক 18 এর আকার 1K অবধি EEPROM মেমরি রয়েছে। দুর্ভাগ্যক্রমে PIC18F46J50 আপনি উল্লেখ করেন না। যদি EEPROM উপলভ্য থাকে তবে আপনার ডেটার জন্য এটি যথেষ্ট পরিমাণে বড় হলে এটি আরও ভাল পছন্দ, কারণ EEPROM এ সর্বনিম্ন 1,000,000 মুছা / লেখার চক্র রয়েছে এবং ফ্ল্যাশটি কেবল 10,000 টি।
পিআইসি 18, অন্যান্য মাইক্রোকন্ট্রোলারগুলির মতো, হার্ভার্ড আর্কিটেকচার নামে পরিচিত যা ব্যবহার করে, অর্থাত্ প্রোগ্রাম এবং ডেটার জন্য শারীরিকভাবে পৃথক ঠিকানাযোগ্য অঞ্চল রয়েছে (যেমন আপনার কাছে একটি প্রোগ্রামের ঠিকানা 4 এবং একটি ডেটা ঠিকানা 4 থাকতে পারে এবং সেগুলি এক নয়)। সুতরাং আপনি সি বা অ্যাসেম্বলি ভাষাতে সাধারণ পদ্ধতি ব্যবহার করে ফ্ল্যাশ মেমরিটি পড়তে বা লিখতে পারবেন না।
পরিবর্তে, পিক 18 পরিবারে, আপনি টিবিএলপিটিআর নামে একটি 22-বিট রেজিস্ট্রারে একটি সূচনা ঠিকানা সেট আপ করেছেন। ফ্ল্যাশ থেকে বাইটগুলি পড়তে, আপনি একটি টিবিএলআরডি নির্দেশ ব্যবহার করেন। পাঠ্যের পরে ঠিকানাটি স্বয়ংক্রিয়ভাবে বৃদ্ধি বা হ্রাস করার একটি বিকল্প রয়েছে যা আপনাকে ম্যানুয়ালি করতে হবে না।
ফ্ল্যাশ মেমোরিতে লিখতে, আপনাকে প্রথমে লেখা হবে এমন ফ্ল্যাশ মেমরির এক বা একাধিক 64-বাইট ব্লক মুছতে হবে। টিবিএলপিটিআরে আবার সূচনা ঠিকানা স্থাপনের পরে এবং মুছা অপারেশন শুরু করার জন্য অন্য কয়েকটি রেজিস্টারে মানগুলি অন্তর্ভুক্ত করার পরে, বাধাগুলি অক্ষম করা হয় এবং তারপরে আপনাকে অবশ্যই 0x55 লিখে একটি রেজিস্টারে 0xAA লিখতে হবে; এটি মুছে ফেলা কমান্ডটি আনলক করে এবং ঘটনাক্রমে স্মৃতি মোছা থেকে ভুল কোড রোধ করার জন্য এটি প্রয়োজন। অবশেষে মুছে ফেলতে কমান্ডটি কার্যকর করা হয় এবং তারপরে পুনরায় সক্রিয়করণ বাধা দেয়।
ফ্ল্যাশ মেমরিতে লেখা মুছে ফেলার অনুরূপ, ব্লকের আকারটি আরও ছোট except লিখনটি টিবিএলডাব্লিউটি নির্দেশ ব্যবহার করে কার্যকর করা হয়, যা টিবিএলআরডি নির্দেশের মতো স্বয়ংক্রিয় বৃদ্ধি / হ্রাসও দেয় allows
কনফিগারেশন ডেটা সাশ্রয় করার পাশাপাশি, ফ্ল্যাশ মেমরিতে লেখার মাধ্যমে "ফার্মওয়্যার ওভার দ্য এয়ার" নামে পরিচিত যা ব্যবহার করে ফিল্ডে তাদের ফার্মওয়্যার আপডেট করা যায়। আপনার কাছে ফার্মওয়্যারের একটি নির্দিষ্ট ব্লক থাকা দরকার, সাধারণত প্রোগ্রাম মেমরির শুরুতে, এটি একটি ব্লুটুথ মডিউল, ওয়াই-ফাই, সেলুলার মডিউল, এমনকি একটি তারযুক্ত সংযোগ থেকে আপডেট গ্রহণ করতে পারে এবং একটি নির্দিষ্ট পয়েন্টের উপরে ফ্ল্যাশ আপডেট করতে পারে প্রোগ্রামটি (যেমন একটি "বেড়া") নতুন কোড সহ। আপডেটটি সম্পূর্ণ হওয়ার পরে, একটি রিসেট শুরু করা হয়, এবং নতুন কোডটি ব্যবহার করা হয়।
পিআইসি পরিবারের পাশাপাশি আরও অনেক মাইক্রোকন্ট্রোলারের কাছে তাদের ফ্ল্যাশ মেমরি আপডেট করার ক্ষমতা রয়েছে; কাজটি সম্পাদনের জন্য বেশিরভাগ কনফিগারেশন রেজিস্টার, একটি ঠিকানা পয়েন্টার এবং বিশেষ নির্দেশাবলীর সংমিশ্রণ ব্যবহার করুন।