সিরিয়াল নবাগত: আমি কেন কেবল তারগুলি হুক করতে পারি না?


14

আমি খুব বেশি কিছু না বুঝে একটি ইউএসবি-সিরিয়াল কনভার্টারের মাধ্যমে আরডিনো-এসকো কোড ব্যবহার করে এটিটিইনি 85 থেকে একটি পিসিতে ট্রান্সমিশন করার চেষ্টা করছি। আমি হতবাক হয়ে গিয়েছিলাম এবং হতাশ হয়ে পড়েছিলাম যে এটি কার্যকর হয়নি।

আমি নিশ্চিত করেছি যে ক্ষুদ্রটি তার পিনগুলির মধ্যে একটিতে ভোল্টেজ ঝাঁকুনি দিচ্ছে, তবে আমি যখন ইউএসবি-সিরিয়াল কেবলটি প্রেরণ করতে বা গ্রহণ করতে সেই পিনটি সংযুক্ত করি এবং টার্মিনাল প্রোগ্রামটি ব্যবহার করার চেষ্টা করি, তখন আমি কিছুই পাই না।

কোন অংশটি নষ্ট হয়েছে তা কীভাবে বলতে হবে তা আমি নিশ্চিত নই।

সিরিয়াল প্রেরণের জন্য আমার কি ভিসিসি, জিএনডি, এবং টিএক্সডি এর চেয়ে বেশি প্রয়োজন?


বিবরণ:

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

#include <SoftwareSerial.h>

SoftwareSerial s(0,1); //receive on "0", and transmit on "1" aka "PB1" aka pin 6

void setup() { s.begin(4800); } // assuming 1Mhz, 4800 baud
void loop() { s.println(millis()); } // transmit something at every opportunity

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

সুতরাং আমি FTDI ইউএসবি-সিরিয়াল রূপান্তরকারী "ftdi" প্রান্তটি ক্ষুদ্রের সাথে সংযুক্ত করতে ছোট তারগুলি ব্যবহার করি : কালো থেকে জিএনডি, ভিসিসি থেকে লাল, কমলা থেকে 6 I আমি পিসিতে প্রোগ্রাম "মিনিকোম" খুলি, বাউড সেট করি 4800 এ রেট করুন এবং কিছুই অপেক্ষা করুন। আমার বোর্ডুহিনোর সাথে কথা বলার সময় , কোনও ঝামেলা নেই।

এফটিডিআই রূপান্তরকারী কেবলটির নীচের পিনআউট রয়েছে: কালোটি জিএনডি, বাদামীটি "সিটিএস", লাল রঙের ভিসিসি (+ 4.98 ভি), কমলা "টিএক্সডি", হলুদ "আরএক্সডি", সবুজ "আরটিএস" রয়েছে।

আমি যদি ছোট থেকে পিসিতে ট্রান্সমিশন করতে চাই তবে আমার কি "টিএক্সডি" বা "আরএক্সডি" তে ভোল্টেজ জ্বলজ্বল করা উচিত? অন্য কথায় দাস থেকে হোস্টে বা সংস্থার কাছে দাসে সংক্রমণ করার জন্য কি সংক্রমণ তারের?

আমি আসলে দু'জনেই চেষ্টা করেছি, কাজও করিনি। আমি এ পর্যন্ত এক ডলারের মূল্যবান সরঞ্জামের চেয়ে কম ভাজা করেছি, এবং আমি কৌতুকপূর্ণ হয়ে যাচ্ছি, তাই কেবল কেবল তারে লাগিয়েছি plug সম্ভবত আমার "সিটিএস" এবং "আরটিএস" তারগুলি উপেক্ষা করার কথা নয়?

আমার কি অন্য কোন তারের ব্যবহার করা দরকার? আরটিএস এবং সিটিএস কি কিছু করে?

হার্ডওয়্যারটি একটি এটিটিইনি 85-পিইউ (ডিআইপি -8 প্যাকেজ, 1MHz চলমান, 20MHz রেটযুক্ত) 4.98V এ ইউএসবি দ্বারা চালিত। হোস্ট পিসি হ'ল একটি ম্যাকবুক এবং এটি অ্যাটুইনিকে তার ছোট্ট হৃদয়টি ঝলসানোর জন্য প্রোগ্রাম করার জন্য আরডুইনোআইএসপি ব্যবহার সহ সমস্ত কিছু সফলভাবে করে।

উত্তর:


9

আপনি কেবলমাত্র টিএক্স এবং জিএনডি ব্যবহার করে ডেটা প্রেরণ করতে পারবেন।

প্রথমত, আপনি এটিটিইজি 85 টিএক্স লাইনটি এফটিডিআই আরএক্স লাইনে (টিটিএল-232 আর এর গায়ে হলুদ) পেতে চান। ইউএসবি অ্যাডাপ্টার 5 ভি পরিচালনা করতে পারে তা নিশ্চিত করুন - আমি মোটামুটি নিশ্চিত যে এমনকি 3.3V টিটিএল-232 আর 5 ভি সহনশীল।

সফ্টওয়্যারসিরিয়ালের উদাহরণ পৃষ্ঠা অনুসারে আপনাকে আপনার সেটআপ ফাংশনে টিএক্স এবং আরএক্স লাইনের দিক নির্ধারণ করতে হবে:

// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>

#define rxPin 2
#define txPin 3
#define ledPin 13

// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
byte pinState = 0;

void setup()  {
  // define pin modes for tx, rx, led pins:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

বাউড্রেট আপনার ক্ষেত্রে 4800 হবে। সফ্টওয়্যারসিরাল গ্রন্থাগারটি সিটিএস এবং আরটিএস সমর্থন করে বলে মনে হচ্ছে না, তাই কেবল নিশ্চিত হয়ে নিন যে আপনি সেগুলি হোস্ট সফ্টওয়্যারটিতে ব্যবহার করছেন না।

পরীক্ষা করে দেখুন রেফারেন্স অধিক বিবরণের জন্য, যেখানে তারা কিছু সম্ভাব্য সময়জ্ঞান বিষয় যা আপনি ছোট উপর অভ্যন্তরীণ অসিলেটর ব্যবহার 1MHz এ চালাচ্ছেন ঘটায় হতে পারে সম্পর্কে কথা বলতে জন্য পাতা।


ধন্যবাদ! রেফারেন্স পৃষ্ঠাটি স্পষ্ট করেছে যে 4800 খুব দ্রুত ছিল, তাই আমি 300 বাউডে নেমে এসেছি এবং জিনিসগুলি "আরও ভাল"। পিনমোড সংক্রমণকে প্রভাবিত করে না, তবে জিনিসগুলি পরিষ্কার করার জন্য আমি যাইহোক এটি যুক্ত করেছি। আমি এখন কিছু না পাওয়া পর্যন্ত বিটের মধ্যে বিলম্বকে ধীর করার চেষ্টা করছি। মিনিকোম ঠিক দেখাচ্ছে? চিহ্ন এখনই। সবচেয়ে খারাপ ঘটনা, আমার 16mhz এবং 20mhz দোলক শুক্রবার পৌঁছেছে।
জ্যাক শ্মিড্ট

আপনার কি মনে হয় এটি ভোল্টেজের সমস্যা হতে পারে? সময় সামঞ্জস্য করা এখনও কাজ করে না, এবং আমি অনেক প্রশ্ন চিহ্ন পাচ্ছি, তাই কিছু সংক্রমণ হচ্ছে। আমি কি ভিসিটিকে কেবল ক্ষুদ্র থেকে 3V তে কমিয়ে দিয়ে এটি ঠিক করতে পারি, অর্থাৎ, আমি কি কেবল এটি ইউএসবির পরিবর্তে কিছু ব্যাটারিতে ঝুঁকতে পারি? আমি কি ইউএসবি গ্রাউন্ড এবং ব্যাটারি গ্রাউন্ড উভয়ের সাথে গ্রাউন্ডকে সংযুক্ত করব?
জ্যাক শ্মিড্ট

ওহ, হলুদ তারের দিকে ইঙ্গিত করার জন্য ধন্যবাদ আমার সংক্রমণের জন্য ক্ষুদ্র। কমলার তারে প্রচুর ঝাঁকুনির মতো মনে হচ্ছে (পিসি থেকে একটি এলইডি তে জড়িত)। পিসি কি সংক্রমণ করছে, বা বেশিরভাগ সময় এটি "চালু" থাকে?
জ্যাক শ্মিড্ট

হ্যাঁ, প্রেরণকালে অলস ও ঝলকানো অবস্থায় এইচআই থাকা উচিত - আমি নিশ্চিত না যে এফটিডিআই কোনও এলইডি চালানোর জন্য পর্যাপ্ত প্রবাহ সরবরাহ করতে সক্ষম কিনা। এভিআর ঠিক হয়ে যাবে, তবে আমি এফটিডিআই-টিএক্স লাইন থেকে এলইডি সরিয়ে ফেলব। ক্রিস্টালের সময় সংক্রান্ত সমস্যাগুলি ঠিক করা উচিত (তবে আপনাকে অভ্যন্তরীণ অসিলেটর থেকে স্যুইচ করার জন্য ফিউজগুলি সেট করতে হবে)।
পিটার গিবসন

এটি এখনও কাজ করে চলেছে, তবে আমি নিশ্চিত যে এটি একটি সময়সীমার সমস্যা বা একটি ভয়ঙ্কর আরডুইনো-অন-এটিটিইন সফ্টওয়্যার সমস্যা। কয়েকটি মাঝারি 2-3 বাইট প্রাপ্ত হচ্ছে (তবে প্রদর্শিত হবে না) এবং বাকিগুলি 0x80 হিসাবে আচ্ছাদিত। আমি স্ফটিকটির জন্য অপেক্ষা করার সময় আমার নিজের (তুচ্ছ) এভিআর নরম সিরিয়াল প্রেরণ ফাংশন লিখছি। কী পাঠানো হচ্ছে তা দেখার কোনও সহজ / সস্তা উপায় আছে? 300 বাউড এখনও আমার পুরানো চোখের জন্য বেশ দ্রুত।
জ্যাক শ্মিড্ট

7

সুতরাং উত্তরটি মনে হয়: আপনি কেবল তারগুলি হুক করতে পারেন , প্রকৃতপক্ষে কেবল জিএনডি (কালো) এবং আরএক্সডি (হলুদ), এবং যতক্ষণ সফ্টওয়্যারটি ভাল ততক্ষণ সবকিছু কাজ করে।

যে বিষয়গুলি গুরুত্বপূর্ণ নয়:

  • অভ্যন্তরীণ দোলক ঠিক কাজ করে। এটি আমার সীমাবদ্ধ পরীক্ষার তুলনায় তুলনামূলকভাবে স্থিতিশীল বলে মনে হচ্ছে। 9600 বাউড এ যা কিছু সমস্যা তা নগণ্য।

  • সিগন্যালগুলিতে ইউএসবি শক্তি ব্যবহার করা ঠিক কাজ করে। আপনি একটি পৃথক ভোল্টেজ উত্স (একটি সাধারণ স্থল ভাগ করে নেওয়া) ব্যবহার করতে পারেন তবে এফটিডিআই কেবলটি 3V এবং 5V উভয়ই সিগন্যাল পুরোপুরি পড়তে পারে। আমি একটি ব্যাটারি প্যাকটি সংযুক্ত করেছি, - এফটিডিআই এবং ক্ষুদ্র উভয়েরই জিএনডি-তে, ক্ষুদ্রের ভিসিসির সাথে, এবং এটি ঠিক কাজ করেছিল। তবে কেবল এফটিডিআই (ইউএসবি পাওয়ার 5 ভি) এর ভিসিসি (লাল) ব্যবহার করা অনেক সহজ এবং ঠিক তত কার্যকর।

যে কাজগুলি আমি ভুল করেছি:

  • হলুদ এফটিডিআই "আরএক্সডি" লাইনটি মাইক্রোকন্ট্রোলারের কাছ থেকে বিট গ্রহণ করে, তাই এটি মাইক্রোকন্ট্রোলারের মধ্যে সংক্রমণে সংযোগ স্থাপন করে। আমি এই সংক্রমণটি সংযুক্ত করে এবং লাইনগুলি (কমলা এবং হলুদ) এলইডি বা একটি আরডুইনোর সাথে সংযুক্ত করে এবং পিসি থেকে সংক্রামিত হওয়ার সময় কোন ভোল্টেজ ফ্লিক হয়ে গিয়েছিলাম তা পরীক্ষা করে নিজেই বের করে আনতে পারি।

  • সফটওয়্যারশিয়াল বা নিউসফটশেরিয়াল উভয়ই এটিটিইনির সাহায্যে বাক্সটির বাইরে কাজ করে না। এটিমেগা ৩৩৮ পি এবং এটিটিইনিজ ৮৫ এর মধ্যে অনেক মিল রয়েছে, তবে যথেষ্ট পার্থক্য রয়েছে যে কেবলমাত্র নতুন চিপের জন্য সংকলন করতে পুরানো সফ্টওয়্যার পাওয়া যথেষ্ট নয়।

  • ধীরে ধীরে বাড রেট জিনিসগুলি নিরাময় করে না। 300 টি বাউডকে আরও জটিল বিলম্বের রুটিনগুলি প্রয়োজন কারণ বিটগুলির মধ্যে চক্রের সংখ্যা 8 বিট কাউন্টারের তুলনায় উল্লেখযোগ্যভাবে বেশি। 9600 বাউড ঠিক কাজ করে, এবং উচ্চতর বাডের হার করণীয়।

  • সি তে টাইমিং সমালোচনা কোড লিখতে সাবধান হন, বিশেষত ইনলাইন ফাংশনে। এটি কার্যকর করতে যে সময় লাগে তা নির্ভর করে সংকলক কীভাবে এটি অনুকূল করে। বিশেষত, কেবলমাত্র এটিকে উপরে এবং নীচে পরিবর্তনের মাধ্যমে বিলম্বটি ক্যালিব্রাইট করার সময়, আপনি (সংকলন করার সময় সনাক্তকরণযোগ্য) ধ্রুবক বিলম্ব ব্যবহার করার চেয়ে আলাদা উত্তর পাবেন কারণ উত্পন্ন সমাবেশটি মোটামুটি আলাদা হতে পারে। এটি সি "ধীর" নয়, বরং এটি খুব দ্রুত ছিল। এক পর্যায়ে আমি 0s এর চেয়ে দ্রুত 1s পাঠাচ্ছিলাম (সম্ভবত তারা আরও বায়ুসংক্রান্ত)।

  • ট্রান্সমিশন শুরু করতে, আপনি নীচে লাইনটি (প্রারম্ভ বিট) আনবেন এবং তারপরে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে পরবর্তী 8 টি নমুনা পয়েন্টের প্রতিটি লাইনটি সঠিক ভোল্টেজে রয়েছে এবং তারপরে 9 তম নমুনায় ভোল্টেজটি উচ্চ । নিউসফটশেরিয়াল স্টার্ট বিটটিতে অর্ধ-দৈর্ঘ্যের বিলম্বের কথা উল্লেখ করেছে, তবে এটি আমার পক্ষে ভালভাবে কাজ করে নি। আমি শুরুতে 75% বিলম্ব এবং শেষে 125% বিলম্ব ব্যবহার করেছি।

  • ভোল্টেজ সম্পর্কে আসল উদ্বেগ হতে পারে যে কিছু "সিরিয়াল" (বিশেষত আরএস 232) 0 ভি / 5 ভি নয়, 12 ডলার। আমি কীভাবে 5V থেকে 3.3V তে ভোল্টেজ সামঞ্জস্য করতে পারি তা বোঝার চেষ্টা করে আমি অনেক সময় ব্যয় করেছি তবে আমি মনে করি এটি সম্পূর্ণ অপ্রাসঙ্গিক।

যে কোনও হারে, সিরিয়াল প্রেরণ করা সহজ, তবে সময় "নিখুঁত" পাওয়া বেশ গুরুত্বপূর্ণ মনে হয়। আমার জন্য, এটি কেবল সমাবেশে ট্রান্সমিট কোডিংয়ের বিষয় ছিল যাতে আমি চক্রটি গণনা করতে পারি।


2
আরও 1 এরোডায়েনামিক হওয়ার জন্য +1 :) এফটিডিআই টিটিএল 232 আর লজিক লেভেল ইউআর্ট সিগন্যালগুলি (0-5V) আউটপুট দেয়, আপনি যদি কোনও স্ট্যান্ডার্ড সিরিয়াল পোর্টের সাথে সরাসরি ইন্টারফেস করে থাকেন তবে আপনাকে MAX232 এর মতো ইন্টারফেস আইসি দরকার যা ভোল্টেজকে রূপান্তরিত করে ts উভয় উপায়ে স্তর।
পিটার গিবসন

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