اطلاعیه

Collapse
No announcement yet.

کار نکردن کی پد بصورت واقعی

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

    کار نکردن کی پد بصورت واقعی

    سلام
    من یه کد نوشتم ، تو پروتئوس جواب داد
    ولی وقتی مدار رو بستم ، هیچی درست کار نمی کرد ! تو اینجا با فشار دادن هر کلیدی باید lcd یه متنی نشون بده ( واسه چک کردن اینکه کی پد سالمه )
    ولی اصلا کار نمی کنه !
    کی پد هم سالمه و چکش کردم ، فقط موقعی عمل می کنه که دستم رو به یکی از پایه ها بزنم !
    میشه بگین مشکل کدم چیه ؟


    int key=0;

    int keypad(){

    DDRF=0b11110000;
    PORTF=0b00001111;

    PORTF=0b11101111;
    _delay_ms(10);
    if (avr(PINF).P0==0){ _delay_ms(10); return 0;}
    if (avr(PINF).P1==0){ _delay_ms(10); return 1;}
    if (avr(PINF).P2==0){ _delay_ms(10); return 2;}
    if (avr(PINF).P3==0){ _delay_ms(10); return 3;}
    PORTF=0b11011111;
    _delay_ms(10);
    if (avr(PINF).P0==0){ _delay_ms(10); return 4;}
    if (avr(PINF).P1==0){ _delay_ms(10); return 5;}
    if (avr(PINF).P2==0){ _delay_ms(10); return 6;}
    if (avr(PINF).P3==0){ _delay_ms(10); return 7;}
    PORTF=0b10111111;
    _delay_ms(10);
    if (avr(PINF).P0==0){ _delay_ms(10); return 8;}
    if (avr(PINF).P1==0){ _delay_ms(10); return 9;}
    if (avr(PINF).P2==0){ _delay_ms(10); return 10;}
    if (avr(PINF).P3==0){ _delay_ms(10); return 11;}
    PORTF=0b01111111;
    _delay_ms(10);
    if (avr(PINF).P0==0){ _delay_ms(10); return 12;}
    if (avr(PINF).P1==0){ _delay_ms(10); return 13;}
    if (avr(PINF).P2==0){ _delay_ms(10); return 14;}
    if (avr(PINF).P3==0){ _delay_ms(10); return 15;}

    return -1;
    }


    int main()
    {

    DDRB=0b11111111;
    PORTB=0b00000000;
    DDRF=0b11110000;
    PORTF=0b00001111;
    PORTD=0b10000000;
    DDRD=0b01111111;
    lcdInit();
    int x;
    lcdClear();
    while(1){
    if ((avr(PINF).P0==0)||(avr(PINF).P1==0)||(avr(PINF). P2==0)||(avr(PINF).P3==0)){
    x=keypad();
    x=x*10;
    lcdGotoXY(0,1);
    lcdPrintData("avrlololo", 7);
    }
    }
    }


    ممنون از شمایی که کمک می کنین @};-

    #2
    پاسخ : کار نکردن کی پد بصورت واقعی

    سلام دوست عزیز
    فکر نکنم برنامت ایرادی داشته باشه اگر شماتیکیم درست باشه احتمالا مشکل فیوزبیتاس
    دقت کن برای اینکه مدارت درست کار کنه حتما فیوزبیتهای jtag وwatchdogباید غیر فعال باشه.
    به احتمال زیاد مشکل همین باشه :nerd:
    انقدر احمق نیستم که فکر کنم کارم تموم شده

    دیدگاه


      #3
      پاسخ : کار نکردن کی پد بصورت واقعی

      من اتمگا 64 استفاده می کنم
      چجور باید اینارو غیر فعال کنم ؟
      منظور کدوم فیوز بیت هاست ؟

      دیدگاه


        #4
        پاسخ : کار نکردن کی پد بصورت واقعی

        نوشته اصلی توسط SILVER MAN
        سلام دوست عزیز
        فکر نکنم برنامت ایرادی داشته باشه اگر شماتیکیم درست باشه احتمالا مشکل فیوزبیتاس
        دقت کن برای اینکه مدارت درست کار کنه حتما فیوزبیتهای jtag وwatchdogباید غیر فعال باشه.
        به احتمال زیاد مشکل همین باشه :nerd:
        یک دنیا ممنون @};-@};-@};-@};-@};-
        میشه علتشم توضیح بدین
        که این 2 تا چرا باعث مختل شدن کار میشند ؟
        ممنون

        دیدگاه


          #5
          پاسخ : کار نکردن کی پد بصورت واقعی

          JTAG وقتی مشکل ساز میشه که شما کی پد رو روی پورتی بسته باشید که پایه های JTAG روی اون پورت باشند، در این حالت اگر JTAG فعال باشد پایه های اون پورت از پورت جدا شده و به JTAG اختصاص داده میشوند در مگا 64و128 پورت F در مگا32و16 پورت C و مگا 8 هم JTAG نداره
          در پروتئوس این فیوز بیت وجود نداره
          فیوز بیت واچ داگ هم اگه فعال باشه و شما در برنامه واچ داگ رو ریست نکنین میکرو مدام ریست میشه و کار خودش رو نمیتونه درست انجام بده

          پروردگارا: به من زيستني عطا کن که در لحظه مرگ بر بي ثمري لحظه اي که براي زيستن گذشته است حسرت نخورم، و مردني عطا کن که بر بيهودگيش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست ميداري

          دیدگاه

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