আমি কি করছিলাম
আমি একটি এসটিএম 32 মাইক্রোকন্ট্রোলার ব্যবহার করছি এবং আমার প্রকল্পের জন্য আমাকে দিনের নির্দিষ্ট সময়ে ডেটা পাঠাতে সক্ষম হতে হবে (বলুন, সকাল 11 টা এবং দুপুর ২ টা)। মাইক্রোকন্ট্রোলারটি এটি অর্জনের আগে আমার সময়টি জানতে হবে। দুর্ভাগ্যক্রমে, আমার কাছে কেবল একটি একমুখী যোগাযোগ রয়েছে এবং তাই আমি নেটওয়ার্ক থেকে বর্তমান সময়ের জন্য অনুরোধ করতে পারি না।
সুতরাং আমি প্রোগ্রামিং শেষ করার পরে, আমি বর্তমান সময়টি সেট করতে চাই। আমি জানতাম যে নিম্নলিখিত কমান্ডটি ব্যবহার করে আমি এসটি-লিংক ইউটিলিটি কমান্ড লাইন ইন্টারফেস (এসটি-লিঙ্ক_সিএলআই) ব্যবহার করে ফ্ল্যাশটিতে ডেটা লিখতে সক্ষম:
ST-LINK_CLI.exe -w32 <Address> <data> -Rst
আমি একটি সাধারণ পরীক্ষার স্ক্রিপ্ট লিখেছিলাম যা বর্তমানে ইউনিক্স টাইম স্ট্যাম্পকে কোড ব্যবহার করে না এমন কোনও ঠিকানায় লিখেছে।
আমি টাইম স্ট্যাম্পটি পড়ার জন্য একটি ফাংশন লিখতে যাচ্ছিলাম এবং আরটিসি সময় সেট করতে এটি ব্যবহার করব। আমি এসটি-লিঙ্ক ইউটিলিটি ব্যবহারকারী ম্যানুয়ালটিতে নিম্নলিখিতটি না পড়ার আগে পর্যন্ত :
-w32 ফ্ল্যাশ মেমরি, ওটিপি, এসআরএম এবং আর / ডাব্লু নিবন্ধগুলিতে লেখা সমর্থন করে।
যখন ম্যানুয়ালটি বলে যে এটি আর / ডাব্লু নিবন্ধগুলিতে লেখা সমর্থন করে, এর অর্থ কি আমি সরাসরি আরটিসি রেজিস্টারগুলিতে অ্যাক্সেস করতে এবং সেগুলি সেট করতে পারি? আমি চেষ্টা করেছি, কিন্তু এই নিবন্ধগুলিতে আমি লেখার মতো বলে মনে হচ্ছে না।
আমি যদি এই পদ্ধতিটি ব্যবহার করে তবে এটি ব্যবহার করতে পছন্দ করব, কারণ এটি আর মাইক্রোকন্ট্রোলারে হ্যান্ডেল করার জন্য আমার নির্দিষ্ট ফাংশন লেখার দরকার নেই। এর অর্থ হ'ল আমি বর্তমানে ব্যবহার করা কোনও মাইক্রোকন্ট্রোলারের আরটিসি সময়টি তাদের কোড আপডেট করার প্রয়োজনের পরিবর্তে সেট করতে পারি।
আমি যা করতে চেয়েছিলাম
আরটিসি রেজিস্টারগুলি সেট করতে, আমি এসটিএম রেফারেন্স ম্যানুয়ালটিতে বর্ণিত হিসাবে নিম্নলিখিত পদক্ষেপগুলি করার চেষ্টা করেছি :
- পিডাব্লুআর_সিআর রেজিস্ট্রারে ডিপিবি বিট সেট করুন
- আরটিসি_ডব্লিউপিআর রেজিস্ট্রারে 0xCA লিখুন
- আরটিসি_ডাব্লুপিআর রেজিস্ট্রারে 0x53 লিখুন
- আরটিসি_আইএসআর রেজিস্ট্রারে আইএনআইটি বিট সেট করে আরটিসি বন্ধ করুন
- আরটিসি_PRER রেজিস্ট্রারে লিখে 1Hz ঘড়িটি নির্বাচন করুন
- আরটিসি_টিআর রেজিস্ট্রারে লিখে বর্তমান সময়টি লোড করুন
- আরটিসি_ডিআর রেজিস্ট্রারে লিখে বর্তমান তারিখটি লোড করুন
- আরটিসি_আইএসআর রেজিস্ট্রারে আইএনআইটি বিটটি পুনরায় সেট করে আরটিসি শুরু করুন
নিবন্ধগুলি অ্যাক্সেস করতে, আমি নিম্নলিখিত ঠিকানাগুলি ব্যবহার করেছি:
- পিডব্লিউআর_সিআর: 0x4000 7000
- আরটিসি_ডব্লিউপিআর: 0x4000 2824
- আরটিসি_আইএসআর: 0x4000 280 সি
- আরটিসি_PRER: 0x4000 2810
- আরটিসি_টিআর: 0x4000 2800
- আরটিসি_ডিআর: 0x4000 2804
কি ভুল ছিল
আমি এই নিবন্ধগুলির কোনওটিতেই লিখতে পারছি না। এসটি-লিংক ইউটিলিটি সহ, আমি নিম্নলিখিত বার্তাটি পেয়েছি:
স্মৃতি লেখার সময় ত্রুটি ঘটেছে!
এসটি-লিঙ্ক_সিএলআই ব্যবহার করে:
0x40007000 এ 0x00000100 লেখা হচ্ছে ... ত্রুটি!
এই রেজিস্টারগুলি পড়া কোনও সমস্যা নয় তবে আমি এসটি-লিংক ইউটিলিটি বা এর কমান্ড লাইন ইন্টারফেস ব্যবহার করে সেগুলিতে লিখতে পারি না।
প্রশ্নটি
আমি কীভাবে এসটি-লিংক ইউটিলিটি ব্যবহার করে আর / ডাব্লু নিবন্ধগুলিতে লিখতে পারি?
আরটিসি রেজিস্টারগুলিতে যা আমি উপেক্ষা করেছি তাতে লেখার অনুমতি দেওয়ার জন্য কি কোনও ধরনের রক্ষা সুরক্ষিত আছে?