আমি বর্তমানে এসডিএ এবং এসসিএল লাইনগুলি চালনার জন্য বিট-ব্যাং ব্যবহার করে একটি আই 2 সি ইপ্রোম প্রকল্পে কাজ করছি।
আমার পঠন ফাংশনটি দুর্দান্ত কাজ করে তবে যখনই আমি কোনও শীর্ষস্থানীয় "1" দিয়ে কোনও বাইট লিখি, আমি সর্বদা এফএফ পিছনে পড়ে থাকি; এমনকি বাইটের আগে অন্য কিছু দিয়ে প্রোগ্রাম করা হয়েছিল। শীর্ষস্থানীয় "0" নিখুঁত। এটা আমার পড়ার রুটিন নয়; যেহেতু আমি এফএফটি ফেরার সুযোগটি দেখতে পাচ্ছি।
কেন এটি হতে পারে সে সম্পর্কে আমি পরামর্শ চাইছি। এমন কোনও স্পষ্টতা কি আমি মিস করতে পারি যা সমস্যার কারণ হতে পারে? [আমি কোডটি পোস্ট করতে পারি না - সংস্থাটি গোপনীয় ... :(]
আমি যে তরঙ্গরূপটি দেখি সেগুলি নির্দিষ্টভাবে মিলিত হয়। আমি ইপ্রোমকে ডিকপল করছি। আমার টান আপগুলি 2.2 কে তাই অনুমানের মধ্যে। আমি এই প্রোটোটাইপে প্রায় 500 হার্জেড এ ক্লক করছি। চিপটি আমার প্রতিটি বাইটে ACKs প্রেরণ করছে যাতে এটি তাদের চিনতে পারে। তবে এটি ঠিক কাজ করে না ...
আমি একটি মাইক্রোচিপ 24LC256 ব্যবহার করছি ।
এক বাইটের জন্য সরলীকৃত লেখার অ্যালগরিদম:
wait
SDA low
SCL low
wait
for each bit
if bit is set: SDA high
if bit is unset: SDA low
wait
SCL high
wait
wait
SCL low
wait
wait
SDA high
SCL high
wait
wait
check ACK status
SDA low
SCL low
wait
return ACK status
এক বাইট জন্য সরল পাঠ্য অ্যালগরিদম:
wait
SCL low
SDA high
for each bit (8 bits)
SCL high
wait
wait
SCL low
wait
check and store received bit
wait
do a NACK or ACK depending on if it is the last byte