اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه

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

    مشکل در برنامه

    با سلام خدمت تمامی دوستان
    من یه مداری طراحی کردم که میخوام با میکرو بتونم یه استپ موتور را راه اندازی کنم.بنابراین با استفاده از دو کلید که بتونه استپ موتور به چپ یا راست چرخش کنه.بستم .برنامه اون هم مطابق زیر نوشتم.فقط برای تست اینکه کلیدی فشارداده شده یا خیر با توجه به اینکه هنوز با کدویژن و وقفه های خارجی زیاد بلد نبودم .نیومدم با وقفه خارجی این کار را انجام بدم.مدار بعد از تست نهایی خوب عمل میکرد(البته این نکته هم بگم که مدار مذکور
    ور تو صنعت کاربرد داره).ولی در عمل بعدا به دو تا مشکل زیر برخورد کردم به مطرح میکنم
    1- بعضی مواقع با اینکه فرمان داده بودیم اما میکرو پالس برای راه اندازی تولید نمیکرد که این مشکل مربوط به هنگ نمودن میکرو بود که با توجه به راهنمایی دوستان و جناب اقای مهندس اوژن نژاد و اون مدار منبع تغذیه پیشنهادی این مشکلم حل شد
    2- مشکل دومی که یک دفعه پیدا شد این بود که بعضی مواقع وقتی مثلا فرمان میدادیم که موتور به سمت چپ چرخش کنه .اما با برداشتن فرمان موتور قطع نمیشد و همچنان فرمان روی اون بود(این مشکل هم برای چرخش موتور به سمت چپ و هم برای چرخش به سمت راست میباشد.البته بعضی مواقع)
    میشه دوستان راهنماییم کنند
    لازم به ذکر است که از مقاومتهای پش پول خارجی و کریستال خارجی هم استفاده نموده ام
    این هم از کد برنامه:
    #include <tiny26.h>
    #include <delay.h>


    void main(void)
    {
    char i=1;
    unsigned char a[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
    PORTA=0x00;
    DDRA=0x00;


    PORTB=0x00;
    DDRB=0x0F;


    while (1){
    //Shift Right
    if (PINA.0==0){
    PORTB=a[i++];
    delay_ms(300);
    if (i==8)
    i=0;
    if(PINA.0==1){
    delay_ms(50);
    if(PINA.0==1)
    PORTB=0x00;
    }
    }


    //Shift Left
    if (PINA.1==0){
    PORTB=a[--i];
    delay_ms(300);
    if (i==0)
    i=8;
    if(PINA.1==1){
    delay_ms(50);
    if(PINA.1==1)
    PORTB=0x00;
    }
    }


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