اطلاعیه

Collapse
No announcement yet.

مشکل با پورت پارالل هنگام ارسال

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با پورت پارالل هنگام ارسال

    با سلام به دوستان
    من می خوام از طریق پورت پارالل به میکرو دیتا بفرستم. برنامه میکرو رو طوری نوشتم که با برنامه کامپیوتر خودشو هماهنگ میکنه. به این صورت که اول برنامه کامپیوتر یکی از پایه های میکرو رو صفر میکنه و میکرو متوجه میشه که باید اطلاعات رو از پورت پارالل بخونه سپس یه بایت میخونه و یکی از پایه هاش صفر میشه برنامه ی کامپیوتر هم طوری نوشته شده تا وقتی اون پایه میکرو صفر نشه بایت دوم رو نمی فرسته و الی آخر.
    حالا سوال من اینه که چرا وقتی یه فایل رو با حجم کم میفرستم همچی مرتبه ولی وقتی یه فایل رو با حجم بالا مثلا بالای 20 کیلو بایت میفرستم بایت به درستی خونده نمیشن و یه جورایی فایل دریافتی توسط میکرو به هم ریخته میشه.
    اصلا به نظر شما روش من درسته. خواهش میکنم کمکم کنید. خیلی زحمت کشیدم ولی جواب نگرفتم. :sad: :sad:

    #2
    پاسخ : مشکل با پورت پارالل هنگام ارسال

    با سلام
    به نظر من بیایید بجای این کار :
    نوشته اصلی توسط mekabizim
    با سلام به دوستان
    من می خوام از طریق پورت پارالل به میکرو دیتا بفرستم. برنامه میکرو رو طوری نوشتم که با برنامه کامپیوتر خودشو هماهنگ میکنه. به این صورت که اول برنامه کامپیوتر یکی از پایه های میکرو رو صفر میکنه و میکرو متوجه میشه که باید اطلاعات رو از پورت پارالل بخونه سپس یه بایت میخونه و یکی از پایه هاش صفر میشه
    از دو تا وقفه یکی برای اینکه به میکرو بگید میخواهید به میکرو داده ارسال کنید و یکی برای اینکه به میکرو بگید که میخواهید داده دریافت کنید و داخل همین روتین های وقفه داده رو ارسال و دریافت کنید اینجوری فکر کنم دیگه نیازی به این کار هم نباشه :
    نوشته اصلی توسط mekabizim
    برنامه ی کامپیوتر هم طوری نوشته شده تا وقتی اون پایه میکرو صفر نشه بایت دوم رو نمی فرسته و الی آخر.

    دیدگاه


      #3
      پاسخ : مشکل با پورت پارالل هنگام ارسال

      ممنون از اینکه جواب دادید ولی من منظور شما رو خوب متوجه نشدم میشه بیشتر توضیح بدید؟ :redface:

      دیدگاه


        #4
        پاسخ : مشکل با پورت پارالل هنگام ارسال

        خوب ببینید شما گفتید که برای مثلا ارسال داده از pc به میکرو یک پایه از پورت پارالل رو صفر میکنید بعد توی میکرو میایید اون پایه مربوطه رو که در روال جاری برنامه ای که نوشتید قرار گرفته چک میکنید ؛ خوب چیزی که میگم شاید به نظر به خاطر سرعت بالای اجرای روتین به حساب نیاد اما اگر شما توی برنامتون از روال های دیگه هم استفاده کرده باشید احتما داره که مثلا وقتی که پایه مورد نظر از پورت پارلل صفر میشه چون دستور مربوطه چک نمیشه میکرو متوجه نشه البته این موضوع فارق از اینه که pc منتظر بمونه تا داده هایی که روی پروت قرار گرفته توسط میکرو خونده بشه چون به نظر نمیاد مکانیزمی برای این کار در نظر گرفته باشید به خاطر همین میگم که بیایید اون پایه مورد نظر از پورت پارالل رو که صفر میشه مثلا وصل کنید به int0 و سطح تریگر اینتراپت رو حساس به لبه پایین رونده تنظیم کنید به این ترتیب با هر بار صفر شدن مجدد پایه مورد نظر از پورت پارالل وقفه فعال میشه حالا بیایید توی روتین وقفه داده ها رو که مثلا روی پورت A قرار گرفته رو بخونید !

        دیدگاه


          #5
          پاسخ : مشکل با پورت پارالل هنگام ارسال

          وقتی شما از پورت خاصی برای ارتباط استفاده میکنید باید یا پروتکل سخت افزاری رو بر اساس نرم افزار پایه طراحی کنین یا اون نرم افزار پایه رو خودتون دوباره بنویسین. برای راحتی میتونین میکرو رو عین یک پرینتر به سیستم معرفی کنین (البته فقط در حد یک دریافت کننده اطلاعات). به این صورت:

          پایه INT0 میکرو رو به پایه STROBE روی پارالل وصل کنین و وقفه رو برای حالت پایین رونده تعریف کنین.
          یک پایه معمولی رو در میکرو به صورت خروجی تعریف کنین و به پایه های BUSY و PE سیستم وصل کنین.
          یک پایه دوم رو به ACK وصل کنین.

          در حالت اولیه ACK بایستی 1 باشه. به محض اینکه سیستم یک بایت برای شما میفرسته در داخل روال وقفه اول بایت رو از پارالل میگیرین و بعد اگر در حالتی بودین که بتونین بایت بعدی رو بگیرین پایه PE-BUSY رو صفر کنین. در غیر این صورت 1 اش میکنید. ولی بعد از اون ابتدا ACK رو صفر و سپس 1 اش میکنید تا به PC اطلاع بدین که بایت رو تحویل گرفتین. در ابتدای کار میکرو هم پایه PE-BUSY باید صفر باشه.
          البته برای کار بهتر هم باید پایه INIT پورت پارالل رو مرتبا نگاه کنین تا اگر صفر شده میکروی شما از ابتدا شروع به کار کنه.

          این منطق کار عادی پورت پارالل هست. جزئیات این منطق رو هم میتونین هم تو سایت beyondlogic ببینین و یا به جلد دوم کتاب سخت افزار آقای مزیدی رجوع کنین.
          برای ارسال هر روال استانداردی رو که برای ارسال اطلاعات روی پرینتر استفاده میشه میتونین استفاده کنین.

          دیدگاه

          لطفا صبر کنید...
          X