اطلاعیه

Collapse
No announcement yet.

اتصال کیبورد کامپیوتر به میکروکنترلر avr

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

    اتصال کیبورد کامپیوتر به میکروکنترلر avr

    میدونم این موضوع چند جا توی سایت بحث شده ولی مشکل من رو کسی تا حالا نداشته :cry:

    من می خوام با وقفه با کیبورد ارتباط برقرار کنم ولی نمیشه
    وقتی تاخیر طولانی یعنی 100میلی ثانیه استفاده میکنم وقفه درست کار میکنه ولی وقتی تاخیر رو کم میکنم یعنی حدود 20 میکرو ثانیه وقفه دائم اجرا میشه
    با توجه به اینکه مقاومت pull up رو هم توی مدار گذاشتم.

    لطفا به دادم برسید :angry:

    لطفا :nerd:
    خردمند به کار خويش تکيه ميکند و نادان به آرزوي خويش . « حضرت علي (ع) »
    اگر هميشه همان کاري را که انجام داده ايد تکرار کنيد ، چيزي بيش از آنچه تا کنون به دست آورده ايد، به دست نخواهيد آورد
    مارک تواين مي گويد: بهتر است دهان خود را ببنديد و ابله به نظر برسيد تا اينکه آن را باز کنيد و همه ترديدها را از ميان ببريد !!!

    #2
    پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

    آقا نقشه رو بزار اگه میشه
    من از پایان می ترسیدم و آغاز کردم . . .

    دیدگاه


      #3
      پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

      سلام
      من نمیدونم که چگونه وقفه رو گرفتی ولی به شما توصیه میکنم یه خازن رو به پایه وقفه طوری وصل کن که اگه با مثلا وقفه پایین رونده کار میکنی اون خازن توی اون 20 us در حال دشارژ شدن باشه (موازی با مقاومت pullup ) البته اندازه ظرفیت خازن مهم هست یعنی R*C<5us . این خازن شاید راه گشا باشه!
      دلا تا کی در این زندان فریب این و آن بینی
      یکی زین چاه ظلمانی برون شو تا جهان بینی

      دیدگاه


        #4
        پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

        البته باید یه دیود تو مسیر وقفه بزاری
        من از پایان می ترسیدم و آغاز کردم . . .

        دیدگاه


          #5
          پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

          سلام
          دوست عزیز به لینک زیر مراجعه کنید این پروژه رو میتونی دانلود کنید:
          http://www.eca.ir/forum2/index.php?topic=14408.0
          http://www.eca.ir/forum2/index.php/topic,4607.0.html

          موفق باشید

          دیدگاه


            #6
            پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

            نوشته اصلی توسط simorgh
            سلام
            من نمیدونم که چگونه وقفه رو گرفتی ولی به شما توصیه میکنم یه خازن رو به پایه وقفه طوری وصل کن که اگه با مثلا وقفه پایین رونده کار میکنی اون خازن توی اون 20 us در حال دشارژ شدن باشه (موازی با مقاومت pullup ) البته اندازه ظرفیت خازن مهم هست یعنی R*C<5us . این خازن شاید راه گشا باشه!
            اگه یک نفر لطف کنه این مطلب رو برام توضیح بده ممنون میشم.
            اینکه چطور زمان محاسبه میشه؟
            خازن چه نوعیه؟
            خازن چطور توی مدار قرار می گیره؟
            خردمند به کار خويش تکيه ميکند و نادان به آرزوي خويش . « حضرت علي (ع) »
            اگر هميشه همان کاري را که انجام داده ايد تکرار کنيد ، چيزي بيش از آنچه تا کنون به دست آورده ايد، به دست نخواهيد آورد
            مارک تواين مي گويد: بهتر است دهان خود را ببنديد و ابله به نظر برسيد تا اينکه آن را باز کنيد و همه ترديدها را از ميان ببريد !!!

            دیدگاه


              #7
              پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

              سلام دوست عزیز من این بر نامه رو با ATMEGA 8 نوشتم
              شما باید پایه کلاک AVR را به وقفه خارجی وصل کنید و وقفه را طوری تنظیم کنید که در لبه پایین رونده اینتراپت دهد و شما باید 12 تا اینتراپت را بشمارید بعد بیتهای استارت و پریتی را دور بریزید بعد اطلاعات اصلی را بر دارید یعنی به محض دریافت هر اینتراپت شما باید پایه ای از AVR را که به دیتای کیبرد وصله خونده و اطلاعات قبلی را یکی شیفت دهید و با اطلاعات جدید OR کنید
              من بر نامه را بزودی براتون میزارم
              gli

              دیدگاه


                #8
                پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

                نوشته اصلی توسط gholinezhad_h
                سلام دوست عزیز من این بر نامه رو با ATMEGA 8 نوشتم
                شما باید پایه کلاک AVR را به وقفه خارجی وصل کنید و وقفه را طوری تنظیم کنید که در لبه پایین رونده اینتراپت دهد و شما باید 12 تا اینتراپت را بشمارید بعد بیتهای استارت و پریتی را دور بریزید بعد اطلاعات اصلی را بر دارید یعنی به محض دریافت هر اینتراپت شما باید پایه ای از AVR را که به دیتای کیبرد وصله خونده و اطلاعات قبلی را یکی شیفت دهید و با اطلاعات جدید OR کنید
                من بر نامه را بزودی براتون میزارم
                ببخشید
                میشه بیشتر توضیح بدین
                مثلا چرا باید پایه کلاک AVR را به وقفه خارجی وصل کنیم
                منظورتون از کلاک خارجی clk هست یا xtal1
                اگر هم برنامه رو با توضیحات بذارین لطف کردین
                با تشکر
                موفق باشید :job:
                خردمند به کار خويش تکيه ميکند و نادان به آرزوي خويش . « حضرت علي (ع) »
                اگر هميشه همان کاري را که انجام داده ايد تکرار کنيد ، چيزي بيش از آنچه تا کنون به دست آورده ايد، به دست نخواهيد آورد
                مارک تواين مي گويد: بهتر است دهان خود را ببنديد و ابله به نظر برسيد تا اينکه آن را باز کنيد و همه ترديدها را از ميان ببريد !!!

                دیدگاه


                  #9
                  پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

                  احتمالا منظورش از کلاک خارجی ، همون استفاده از وقفه خارجی هست.

                  دیدگاه


                    #10
                    پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

                    دوست عزیز
                    شما به این نکته توجه کردید؟
                    پالسهای تولید کننده وقفه باید بیش از 50ns طول بکشد و در پالشهای کوتاه تر از آن ضمانتی برای تولید وقفه وجود ندارد.

                    دیدگاه


                      #11
                      پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

                      ببینید دوست عزیز
                      اول من در مورد کیبرد توضیح میدم
                      کانکتور PS/2 دارای6 پین می باشد که به صورت زیره:
                      پین 1 : کلاک
                      پین 2 : GND
                      پین 3 : data
                      پین 4 : N/C
                      ین 5 : VCC
                      پین 6 : N/C
                      عملکردش هم اینجوریه
                      وقتی دست رویه یک کلید میذاری کیبرد 11 بیت ارسال میکنه که ترتیب ارسالش هم اینجوریه
                      1- صفررا روی پین data میزاره و پین کلاک رو از hi به Low عوض می کنه یعنی لبه پایین رونده
                      2- هشت بیت دیتا رو ارسال می کنه برای هربیت پایه کلاک رو از hi به Lo عوض می کنه
                      3-1 بیت پریتی را ارسال میکنه
                      4- یک را به عنوان stop بیت ارسال می کنه
                      شکل زیر


                      پس مجموعا شد 11 بیت
                      پس شما باید پایه دیتا کیبرد را به یک پایه AVR وصل کنید و آن پایه AVR را به عنوان ورودی تعریف کنید و پایه کلاک کیبرد را به یکی از اینتراپتهای خارجی AVR وصل کنید و آن را روی لبه پایین رونده تنظیم کنید
                      هر وقت اینتراپت خارجی رخ داد شما باید پایه AVR را که دیتای کیبرد بهش وصله بخونید و در یک متغیر بریزید و به سمت چپ شیفت دهید وقتی 11 تا وقفه رخ داد بیتهای اضافه را حذف کنید



                      کد:
                      //External Interrupt 1 service routine
                      interrupt [EXT_INT1] void ext_int1_isr(void)
                      {
                      
                      Interval=0; 
                      KyBoardTemp=(PIND.2); 
                      KyBoarddata|=(KyBoardTemp<<KyBoardCounter);
                      KyBoardCounter++;
                      if(KyBoardCounter==11)
                      { 
                       KyBoarddata=KyBoarddata>>1; 
                       f=KyBoarddata; //Remove Parity bit and Stop bit 
                       KyBoarddata=0; 
                       KyBoardCounter=0; 
                       Process=1;
                       } 
                      }

                      در while اصلی برنامه شما باید متغییر Process را چک کنید وقتی یک شد یعنی کلید فشار داده شده و مقدار دریافتی از کیبرد در متغیر f قرار گرفته است

                      این هم سورس کامل برنامه
                      http://www.4shared.com/file/97738254.../keyboard.html


                      [tt][/tt]
                      gli

                      دیدگاه


                        #12
                        پاسخ : اتصال کیبورد کامپیوتر به میکروکنترلر avr

                        میشه مدارش رو اینجا بذارین
                        ترتیبی که شما برای پایه ها گفتین طبق اون چیزی که من توی اینترنت دیدم نیست
                        با تشکر
                        خردمند به کار خويش تکيه ميکند و نادان به آرزوي خويش . « حضرت علي (ع) »
                        اگر هميشه همان کاري را که انجام داده ايد تکرار کنيد ، چيزي بيش از آنچه تا کنون به دست آورده ايد، به دست نخواهيد آورد
                        مارک تواين مي گويد: بهتر است دهان خود را ببنديد و ابله به نظر برسيد تا اينکه آن را باز کنيد و همه ترديدها را از ميان ببريد !!!

                        دیدگاه

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