اطلاعیه

Collapse
No announcement yet.

اتصال mouse/keyboard ps2 به AT91SAM7x256

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

    اتصال mouse/keyboard ps2 به AT91SAM7x256

    سلام به همه دوستان. من یه پروژه دارم انجام می دم که واقعا تنها مطلبی که من رو خیلی نگران کرده اتصال mouse ps2 و keyboard ps2 به میکرو آرم هست و از اونجایی که من قبلا این پروژه رو انجام ندادم اطلاعاتی ندارم. فقط قراره در این پروژه موس اگر به بالا رفت led بالا، یا چپ رفت سمت چپ یا راست رفت راست روشن شود. در مورد کیبورد فقط باید کراکتر های موجود روی کیبرد رو بخواند و روی یک نمایشگر کاراکتری یا هر نمایشگر دیگه نمایش دهد. با تشکر.
    {امضاء خلاف قوانین}

    #2
    پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

    سلام
    من تا حالا با PS2 کار نکردم ولی میدونم خیلی راحته کار کردن باهاش
    برای شروع این مثال که با AVR هست رو شروع کن توش توضیح داده چه جوری میشه اطلاعات رو از موس خوند و کار ساده ای هم هست
    فایل رو برات پیوست کردم
    ببین اگه مشکلی بود بگو تا برسیش کنیم
    موس که حل شد میریم سراغ کیبورد
    موفق باشی
    فایل های پیوست شده
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


      #3
      پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

      خب
      برای نحوه ی کار کردن با PS2 برو
      http://www.computer-engineering.org/ps2protocol/
      برای کار با PS2 برای راه اندازی موس برو
      http://www.computer-engineering.org/ps2mouse/
      برای کار با PS2 برای راه اندازی کیبورد هم برو
      http://www.computer-engineering.org/ps2keyboard/

      بقیش دیگه برنامه نویسی هست
      موفق باشی
      زندگی یعنی امید و حرکت
      کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
      سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
      برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
      به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

      دیدگاه


        #4
        پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

        با سلام، ازتون بابت پاسخ خوبتون متشکرم. فقط یک مشکل هست اینکه چطور +5 موس رو به ارم که +3.3 هست. البته شندیم تقسیم مقاومتی میشه. لطفا بفرماید چگونه اتصال بدم. ممنون
        {امضاء خلاف قوانین}

        دیدگاه


          #5
          پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

          نوشته اصلی توسط black-scorpion
          با سلام، ازتون بابت پاسخ خوبتون متشکرم. فقط یک مشکل هست اینکه چطور +5 موس رو به ارم که +3.3 هست. البته شندیم تقسیم مقاومتی میشه. لطفا بفرماید چگونه اتصال بدم. ممنون
          سلام
          تقسیم مقاومتی یکی از راه های ممکن است ولی به نظر من ممکنه مشکلاتی بوجود بیاره چون احتمال داره بار گذاری رخ بده و به مشکل بر بخورید
          میتونید از دیود زنر استفاده کنید که ولتاژ بالای 3.3 رو برش دهد
          یا از بعضی از آی سی های بافر TTL استفاده کنید( باید تغذیش رو 3.3 بدهید تا خروجی 3.3 بشه)
          فعلا همینا به ذهنم میرسه بررسی می کنم اگه راه بهتری بود خبر میدم
          زندگی یعنی امید و حرکت
          کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
          سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
          برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
          به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

          دیدگاه


            #6
            پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

            با سلام خدمت دوستان و جناب اقای ایمان فر. من مدار PS2 رو بستم اما نتونستم جواب بگیرم. کد کامل رو برای دوستان میزارم اگر امکانش هست لطفا کمک کنید من تمام کنم این مدار رو.

            unsigned char mouse_r (void)
            {
            unsigned char c, a=0, i;
            unsigned char pin,clk,data;

            pin = AT91C_BASE_PIOB->PIO_PDSR;
            data = AT91C_BASE_PIOB->PIO_PDSR & 0x01;
            clk = AT91C_BASE_PIOB->PIO_PDSR & 0x02;
            i = 0;
            //DDRB = 0x00;
            AT91C_BASE_PIOB->PIO_PER =((1<<0)|(1<<1));
            AT91C_BASE_PIOB->PIO_ODR =(1<<0)|(1<<1);
            //printfx("read mousue in first while"
            while(clk == 0 & data == 0);
            while(clk == 1 & data == 1);
            while(clk == 0);
            while(clk == 1);
            for(i=0; i<8; i++){
            c = pin;
            c = c << 6;
            c = c & 0x80;
            a = a >> 1;
            a = a ^ c;
            //printfx("read mousue in second while"
            while(clk == 0);
            while(clk == 1); }
            /*while (PINB.0 == 0);
            while (PINB.0 == 1);*/
            //printfx("read mousue in third while"
            while(clk == 0 & data == 0);
            //while (PINB.0 == 0 & PINB.1 == 0);
            //printfx("read mouse"
            return a;
            }
            void mouse_w (unsigned char x)
            {
            unsigned char i, c, p = 0;
            unsigned char clk,data;
            unsigned char out = 0;
            out = AT91C_BASE_PIOB->PIO_SODR & 0x02;
            data = AT91C_BASE_PIOB->PIO_PDSR & 0x01;
            clk = AT91C_BASE_PIOB->PIO_PDSR & 0x02;

            AT91C_BASE_PIOB->PIO_PER =((1<<0)|(1<<1));
            AT91C_BASE_PIOB->PIO_OER =((1<<0)|(1<<1));
            AT91C_BASE_PIOB->PIO_CODR =((1<<0)|(1<<1));
            //PORTB = 0x03;
            //DDRB = 0x03;
            while(clk == 0 & data == 0);
            //while (PINB.0 == 0 & PINB.1 == 0);
            AT91C_BASE_PIOB->PIO_CODR =(1<<0);
            delay_us(100);
            AT91C_BASE_PIOB->PIO_CODR =(1<<0);
            AT91C_BASE_PIOB->PIO_SODR =(1<<1);
            AT91C_BASE_PIOB->PIO_ODR = (1<<1);
            while(clk == 0);

            /*
            PORTB.0 = 0;
            delay_us(100);
            PORTB.1 = 0;
            PORTB.0 = 1;
            DDRB = 0x02;
            while (PINB.0 == 1);
            */
            for (i=0; i<8; i++) {
            c = x;
            c = c & 0x01;
            x = x >> 1;
            out = c;
            //PORTB.1 = c;
            if (c == 1) p += 1;
            while(clk == 0);
            while(clk == 1);
            //while (PINB.0 == 0);
            //while (PINB.0 == 1);
            }
            p = p%2;
            if (p == 0)
            AT91C_BASE_PIOB->PIO_SODR = (1 << 1);
            //PORTB.1 = 1;
            else AT91C_BASE_PIOB->PIO_CODR = (1 << 1);
            //PORTB.1 = 0;
            while(clk == 0);
            while(clk == 1);
            //while (PINB.0 == 0);
            //while (PINB.0 == 1);
            AT91C_BASE_PIOB->PIO_CODR = (1 << 1);
            AT91C_BASE_PIOB->PIO_SODR = (1 << 1);
            AT91C_BASE_PIOB->PIO_ODR = (1<<0) | (1 << 1);
            //PORTB.1 = 1;
            //DDRB = 0x00;

            while(clk == 1 & data == 1);
            while(clk == 0 & data == 0);
            //while (PINB.0 == 1 & PINB.1 == 1);
            //while (PINB.0 == 0 & PINB.1 == 0);
            printfx("write mouse"
            }

            void mouse_on ( )
            {
            unsigned char y;
            y = 0;
            mouse_w(0xFF);
            y = mouse_r( );
            y = mouse_r( );
            mouse_w(0xEA);
            y = mouse_r( );
            mouse_w(0xE8);
            y = mouse_r( );
            mouse_w(0x01);
            y = mouse_r( );
            mouse_w(0xF3);
            y = mouse_r( );
            mouse_w(0x0A);
            y = mouse_r( );
            mouse_w(0xF4);
            y = mouse_r( );
            y = y;
            printfx("mouse on"
            }
            {امضاء خلاف قوانین}

            دیدگاه


              #7
              پاسخ : اتصال mouse/keyboard ps2 به AT91SAM7x256

              نوشته اصلی توسط black-scorpion
              با سلام خدمت دوستان و جناب اقای ایمان فر. من مدار PS2 رو بستم اما نتونستم جواب بگیرم. کد کامل رو برای دوستان میزارم اگر امکانش هست لطفا کمک کنید من تمام کنم این مدار رو.
              سلام
              شرمنده دو سه روزی مسافرت بودم
              در اولین فرصت برنامه رو چک میکنم
              زندگی یعنی امید و حرکت
              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
              سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

              دیدگاه

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