ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 2 از 4 نخست 1234 آخرین
نمایش نتایج: از 11 به 20 از 34
  1. #11
    2014/07/10
    54
    1

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    ممنونم.
    من تونستم ارتباط psi مقدار عدد مورد نظرمو انتقال بدم. عددی که سمت میکروی اول وارد شده و 16 بیت داره رو با شیفت و اند کردن به دو قسمت تقسیم کردم و منتقل کردم.
    اینور هم تو میکرو دومم که سون سگمنت بهش وصله عدد رو بگیرم. نمایش بده- باتشکر از راهنمایی شما.
    اما الان عدد رو فقط یک ثانیه نشون میده و خاموش میشه تا عدد بعدی وارد بشه- مخام عدد تا ورود عدد بعدی بمونه-از صبحه اینور اونورش مکنم نمدونم چی میشه. هرچیه تو نوع نمایش عدد spi شدس.
    کد سمت سلیو یا سون سگمنته این.

    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdlib.h>
    #define F_CPU 1000000




    unsigned char state=0;
    unsigned int number=0;
    unsigned int num_h,num_l;
    int a,b,c;


    unsigned char spi(unsigned char data){ //spi is function to recived and send
    SPDR=data;
    while((SPSR&(1<<SPIF))==0);
    return SPDR;
    }


    void segment(number){ //segment is function to show int number on segment
    DDRD=0xff; //d port is output
    DDRC=0xff; // c port is output
    a=number/100;
    number=number%100;
    b=number/10; //a,b,c is digits of entered number
    number=number%10;
    c=number;

    switch(a){
    case 0:PORTD=0xfe; PORTC=0X3F;break;
    case 1:PORTD=0xfe;PORTC=0X06;break;
    case 2:PORTD=0xfe;PORTC=0X5B;break;
    case 3:PORTD=0xfe;PORTC=0X4F;break;
    case 4:PORTD=0xfe;PORTC=0X66;break;
    case 5:PORTD=0xfe;PORTC=0X6D;break;
    case 6:PORTD=0xfe;PORTC=0X7D;break;
    case 7:PORTD=0xfe;PORTC=0X07;break;
    case 8:PORTD=0xfe;PORTC=0X7F;break;
    case 9:PORTD=0xfe;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTD=0xff; PORTC=0X00;

    switch(b){
    case 0:PORTD=0xfd;PORTC=0X3F;break;
    case 1:PORTD=0xfd;PORTC=0X06;break;
    case 2:PORTD=0xfd;PORTC=0X5B;break;
    case 3:PORTD=0xfd;PORTC=0X4F;break;
    case 4:PORTD=0xfd;PORTC=0X66;break;
    case 5:PORTD=0xfd;PORTC=0X6D;break;
    case 6:PORTD=0xfd;PORTC=0X7D;break;
    case 7:PORTD=0xfd;PORTC=0X07;break;
    case 8:PORTD=0xfd;PORTC=0X7F;break;
    case 9:PORTD=0xfd;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTD=0xff; PORTC=0X00;

    switch(c){
    case 0:PORTD=0xfb;PORTC=0X3F;break;
    case 1:PORTD=0xfb;PORTC=0X06;break;
    case 2:PORTD=0xfb;PORTC=0X5B;break;
    case 3:PORTD=0xfb;PORTC=0X4F;break;
    case 4:PORTD=0xfb;PORTC=0X66;break;
    case 5:PORTD=0xfb;PORTC=0X6D;break;
    case 6:PORTD=0xfb;PORTC=0X7D;break;
    case 7:PORTD=0xfb;PORTC=0X07;break;
    case 8:PORTD=0xfb;PORTC=0X7F;break;
    case 9:PORTD=0xfb;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTA=0xff; PORTC=0X00;

    }


    int main(void)
    {
    DDRB=0X40; //config spi port
    PORTB=0X00;

    while (1)
    {
    SPCR=0X43; //control register config
    SPSR=0X00; //select register config
    num_h=spi(0x00); //take upper bits
    number=num_h;
    number=(number<<8);
    num_l=spi(0x00); //take lower bits
    number=(number|num_l); //create number by bits
    PORTB|=(1<<4); //ss port should be 1 after reciveing
    segment(number); //show number on 7segment

    }
    }
    نقل قول نوشته اصلی توسط MM320

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اطلاعی در مورد مچ بند ها توی بازارندارم ولی اگه بخوانین طراحی کنید احتمالا باید بتونید قطعات smd کوچک مثل سون سگمنت تو بازار پیدا کنید من که شهرستان هستم از بازار تهران خبری ندارم.همنطور که می دونید باید سایز مچ بندتون در حالت استاندارد مچ بندهای توی بازار طراحی کنید.موفق باشید...
    ویرایش توسط aashkanpasha : 2019/08/11 در ساعت 18:34
  2. #12
    2017/06/13
    504
    263

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نقل قول نوشته اصلی توسط aashkanpasha

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ممنونم.
    من تونستم ارتباط psi مقدار عدد مورد نظرمو انتقال بدم. عددی که سمت میکروی اول وارد شده و 16 بیت داره رو با شیفت و اند کردن به دو قسمت تقسیم کردم و منتقل کردم.
    اینور هم تو میکرو دومم که سون سگمنت بهش وصله عدد رو بگیرم. نمایش بده- باتشکر از راهنمایی شما.
    اما الان عدد رو فقط یک ثانیه نشون میده و خاموش میشه تا عدد بعدی وارد بشه- مخام عدد تا ورود عدد بعدی بمونه-از صبحه اینور اونورش مکنم نمدونم چی میشه. هرچیه تو نوع نمایش عدد spi شدس.
    کد سمت سلیو یا سون سگمنته این.

    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdlib.h>
    #define F_CPU 1000000




    unsigned char state=0;
    unsigned int number=0;
    unsigned int num_h,num_l;
    int a,b,c;


    unsigned char spi(unsigned char data){ //spi is function to recived and send
    SPDR=data;
    while((SPSR&(1<<SPIF))==0);
    return SPDR;
    }


    void segment(number){ //segment is function to show int number on segment
    DDRD=0xff; //d port is output
    DDRC=0xff; // c port is output
    a=number/100;
    number=number%100;
    b=number/10; //a,b,c is digits of entered number
    number=number%10;
    c=number;

    switch(a){
    case 0:PORTD=0xfe; PORTC=0X3F;break;
    case 1:PORTD=0xfe;PORTC=0X06;break;
    case 2:PORTD=0xfe;PORTC=0X5B;break;
    case 3:PORTD=0xfe;PORTC=0X4F;break;
    case 4:PORTD=0xfe;PORTC=0X66;break;
    case 5:PORTD=0xfe;PORTC=0X6D;break;
    case 6:PORTD=0xfe;PORTC=0X7D;break;
    case 7:PORTD=0xfe;PORTC=0X07;break;
    case 8:PORTD=0xfe;PORTC=0X7F;break;
    case 9:PORTD=0xfe;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTD=0xff; PORTC=0X00;

    switch(b){
    case 0:PORTD=0xfd;PORTC=0X3F;break;
    case 1:PORTD=0xfd;PORTC=0X06;break;
    case 2:PORTD=0xfd;PORTC=0X5B;break;
    case 3:PORTD=0xfd;PORTC=0X4F;break;
    case 4:PORTD=0xfd;PORTC=0X66;break;
    case 5:PORTD=0xfd;PORTC=0X6D;break;
    case 6:PORTD=0xfd;PORTC=0X7D;break;
    case 7:PORTD=0xfd;PORTC=0X07;break;
    case 8:PORTD=0xfd;PORTC=0X7F;break;
    case 9:PORTD=0xfd;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTD=0xff; PORTC=0X00;

    switch(c){
    case 0:PORTD=0xfb;PORTC=0X3F;break;
    case 1:PORTD=0xfb;PORTC=0X06;break;
    case 2:PORTD=0xfb;PORTC=0X5B;break;
    case 3:PORTD=0xfb;PORTC=0X4F;break;
    case 4:PORTD=0xfb;PORTC=0X66;break;
    case 5:PORTD=0xfb;PORTC=0X6D;break;
    case 6:PORTD=0xfb;PORTC=0X7D;break;
    case 7:PORTD=0xfb;PORTC=0X07;break;
    case 8:PORTD=0xfb;PORTC=0X7F;break;
    case 9:PORTD=0xfb;PORTC=0X6F;break;
    }
    _delay_ms(10); PORTA=0xff; PORTC=0X00;

    }


    int main(void)
    {
    DDRB=0X40; //config spi port
    PORTB=0X00;

    while (1)
    {
    SPCR=0X43; //control register config
    SPSR=0X00; //select register config
    num_h=spi(0x00); //take upper bits
    number=num_h;
    number=(number<<8);
    num_l=spi(0x00); //take lower bits
    number=(number|num_l); //create number by bits
    PORTB|=(1<<4); //ss port should be 1 after reciveing
    segment(number); //show number on 7segment

    }
    }
    اسکن سون سگمنت رو به عهده تایمر بذارید تا وقفه ای در کارش ایجاد نشه.
  3. #13
    2014/07/10
    54
    1

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    یعنی چکار کنم. ؟؟؟چطوری؟
    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    اسکن سون سگمنت رو به عهده تایمر بذارید تا وقفه ای در کارش ایجاد نشه.
  4. #14
    2017/06/13
    504
    263

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نقل قول نوشته اصلی توسط aashkanpasha

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    یعنی چکار کنم. ؟؟؟چطوری؟
    یعنی روشن و خاموش کردن سون سگمنت ها رو با وقفه تایمر انجام بدید. کافیه تایمر رو جوری تنظیم کنید که حدودا هر 20 میلی ثانیه وارد وقفه بشه و وضعیت سون سگمنت ها رو تغییر بده. این عدد 20 میلی ثانیه رو دقیقا یاد ندارم درسته یا نه ولی حدودا باید همین مقدار باشه.
    با اینکار وقتی برنامه در یک حلقه هم گرفتار شده باشه، تایمر کار اسکن سون سگمنت رو انجام میده و کاربر متوجه تغییر در نوع نمایش سون سگمنت نمیشه

    Sent from my LG-H870S using Tapatalk
  5. #15
    2014/07/10
    54
    1

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نه دوست عزیز.
    مشکل این نیست. سون سگمنت وقتی عدد رو نشون میده (وقتی ارتباط SPIندارم) همه چی اوکیه- و قسنگ ثابت دیده میشه. مشکل تو سون سگمنتها نیست.
    مشکل جای دیگس-
    ببینین عدد از کیپد وارد میشه و بازدن کلید مربع به میکرو دوم ومنتقل میشه و تابع سگمنت اون عدد رو نشون میده- ولی چون تابع سگمنت تو حلقه نیست یه بار نشون میده تموم میشه
    باید بذارم تو یه حلقه .
    اون حلقه باید بگه که تا عدد جدید نیومده همین عدد رو نشون بده. یعنی طرف عدد رو زد مربع رو زد باید عدد رو سگمنت بمونه تا زمانی که عدد بعدی بیاد که معلوم نیست کی بیاد.
    باید دستور تو ارتباط رو عوض کنم:
    کاری کنم که همون عدد رو تو حلقه هی نمایش بده هی نمایش بده تا زمانی که عدد بعدی رو منتق کنه.
    الان مشکل اینه که عدد منتق میشه و نمیدونم تو چه حلقه ای بزارم با چه شرطی. باید کاری کنم که میکرو دوم بگه به میکرو اول عدد اومد کارتو ادامه بعد بعد اون دوباره عدد فرستاد اونو بگیره.
    تونستم برسونم؟
    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    یعنی روشن و خاموش کردن سون سگمنت ها رو با وقفه تایمر انجام بدید. کافیه تایمر رو جوری تنظیم کنید که حدودا هر 20 میلی ثانیه وارد وقفه بشه و وضعیت سون سگمنت ها رو تغییر بده. این عدد 20 میلی ثانیه رو دقیقا یاد ندارم درسته یا نه ولی حدودا باید همین مقدار باشه.
    با اینکار وقتی برنامه در یک حلقه هم گرفتار شده باشه، تایمر کار اسکن سون سگمنت رو انجام میده و کاربر متوجه تغییر در نوع نمایش سون سگمنت نمیشه

    Sent from my LG-H870S using Tapatalk
  6. #16
    2017/06/13
    504
    263

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نقل قول نوشته اصلی توسط aashkanpasha

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    نه دوست عزیز.
    مشکل این نیست. سون سگمنت وقتی عدد رو نشون میده (وقتی ارتباط SPIندارم) همه چی اوکیه- و قسنگ ثابت دیده میشه. مشکل تو سون سگمنتها نیست.
    مشکل جای دیگس-
    ببینین عدد از کیپد وارد میشه و بازدن کلید مربع به میکرو دوم ومنتقل میشه و تابع سگمنت اون عدد رو نشون میده- ولی چون تابع سگمنت تو حلقه نیست یه بار نشون میده تموم میشه
    باید بذارم تو یه حلقه .
    اون حلقه باید بگه که تا عدد جدید نیومده همین عدد رو نشون بده. یعنی طرف عدد رو زد مربع رو زد باید عدد رو سگمنت بمونه تا زمانی که عدد بعدی بیاد که معلوم نیست کی بیاد.
    باید دستور تو ارتباط رو عوض کنم:
    کاری کنم که همون عدد رو تو حلقه هی نمایش بده هی نمایش بده تا زمانی که عدد بعدی رو منتق کنه.
    الان مشکل اینه که عدد منتق میشه و نمیدونم تو چه حلقه ای بزارم با چه شرطی. باید کاری کنم که میکرو دوم بگه به میکرو اول عدد اومد کارتو ادامه بعد بعد اون دوباره عدد فرستاد اونو بگیره.
    تونستم برسونم؟
    خوب چیزی که منم گفتم منافاتی با این قضیه نداره! شما باید هربار پرچم داده spi رو چک کنید و اگر داده ای رسید اون رو توی یه متغیر قرار بدید. تایمر هم با توجه به اون متغیر داده رو روی سون سگمنت بذاره. حتی میتونید از وقفه spi استفاده کنید که نیازی به چک گردن پرچم در برنامه اصلی نباشه.

    Sent from my LG-H870S using Tapatalk
  7. #17
    2014/07/10
    54
    1

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    متاسفانه مشكل اينه كه من درمورد تايمر و بحث پرچم اصلا اطلاعاتي ندارم. نمدونم كلا چيه.
    فكر كنم برا همين نميفهمم چه كدي بايد بنويسم.

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خوب چیزی که منم گفتم منافاتی با این قضیه نداره! شما باید هربار پرچم داده spi رو چک کنید و اگر داده ای رسید اون رو توی یه متغیر قرار بدید. تایمر هم با توجه به اون متغیر داده رو روی سون سگمنت بذاره. حتی میتونید از وقفه spi استفاده کنید که نیازی به چک گردن پرچم در برنامه اصلی نباشه.

    Sent from my LG-H870S using Tapatalk
  8. #18
    2016/06/21
    294
    81

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    شما وقتی از spi در مد اسلیو استفاده می کنید میکرو منتظر دریافت بایت از مستر میشه بعد دریافت اولین کلاک از مستر دیتا ها بیت به بیت در رجستر spi اسیلو (در هر کلاک مستر) قرار می گیره برنامه شما تازه شروع به اسکن سون سگنمت می کنه و دوباره منتظر دریافت spi میشههمین طور که در تاپیک سون سگمنت و کیپد گفتم برنامه نباید وقفه یا ایستی نداشته باشه در صورت اعداد روی نمایشکر بصورت تاخیری که چشم انسان اونو ببنه میشه یا روی یک رقم می ایسته .راه حل:یا از آیسی MAX7219 استفاده کنن که خودش سون سگمنت راه اندازی می کنه یا اینه از تایمر ها استفاده کن به این صورت که هر 1ms یک رقم نشان بده و وقتی منتظر دریافت spi هست نمایشگر متوقف نمیشه.
    ویرایش توسط MM320 : 2019/08/11 در ساعت 21:33
  9. #19
    2016/06/21
    294
    81

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نقل قول نوشته اصلی توسط aashkanpasha

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    متاسفانه مشكل اينه كه من درمورد تايمر و بحث پرچم اصلا اطلاعاتي ندارم. نمدونم كلا چيه.
    فكر كنم برا همين نميفهمم چه كدي بايد بنويسم.
    شما قبلا گفتید از اتمل استدیو استفاده می کنید یه کاری بکن بیا کدویژون نصب کن کدویژون ویزارد داره که خوش با توجه تنظیمات کاربر میاد رجیستر ها رو مقدار دهی می کنه شما این مقادیر رو توی اتمل استفاده کن
    ویرایش توسط MM320 : 2019/08/11 در ساعت 21:57
  10. #20
    2014/07/10
    54
    1

    پاسخ : پروتكل ارتباطي spi بين دو ميكرو براي انتقال محتوايي يك متغير

    نقل قول نوشته اصلی توسط MM320

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    شما وقتی از spi در مد اسلیو استفاده می کنید میکرو منتظر دریافت بایت از مستر میشه بعد دریافت اولین کلاک از مستر دیتا ها بیت به بیت در رجستر spi اسیلو (در هر کلاک مستر) قرار می گیره برنامه شما تازه شروع به اسکن سون سگنمت می کنه و دوباره منتظر دریافت spi میشههمین طور که در تاپیک سون سگمنت و کیپد گفتم برنامه نباید وقفه یا ایستی نداشته باشه در صورت اعداد روی نمایشکر بصورت تاخیری که چشم انسان اونو ببنه میشه یا روی یک رقم می ایسته .راه حل:یا از آیسی MAX7219 استفاده کنن که خودش سون سگمنت راه اندازی می کنه یا اینه از تایمر ها استفاده کن به این صورت که هر 1ms یک رقم نشان بده و وقتی منتظر دریافت spi هست نمایشگر متوقف نمیشه.
    دوست عزيز مهندس اين مشكل رو قبلا زحمت كشيديد گفتيد حل كردم. من جاي ديگه موندم. من الان تو سمت مستر عدد رو از كيپد ميگيرم و پس از زدن كليد مربع اون عدد رو ميشكونم با دوتا بايت هشت تايي ميفرستم. تا اينجا اوكيه.
    اونور طرف سليو هم دوتا بايت رو ميگيرم و تبديل به يه عددش مكنم و ميفرستم تابع سگمنت و رو سگمنت نمايش ميدم. اينا هم اوكيه. هرعدد نيفزنم تو كيپد اينور ميبينم.
    تو حلقه هم ميندازم قشنگ ثابت ميبينم چشمك نميزنه. فقط نمتونم بگم بهش دوتا بايت رو فرستاد و عددش كرد اونو تو سنمنت هي تو خلقه نشون بده تا تا تا تا اون يكي دوتا بايد بياد. همينش مونده
صفحه 2 از 4 نخست 1234 آخرین
نمایش نتایج: از 11 به 20 از 34

موضوعات مشابه

  1. پروتكل ارتباطي بين ميكروكنترلرها و ماژول در يك سيستم وايرلس
    توسط aashkanpasha در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2019/08/10, 22:00
  2. شبكه كردن ميكرو AVR توسط پروتكل RS232
    توسط mohammadcheeta در انجمن میکروکنترلرهای AVR
    پاسخ: 13
    آخرين نوشته: 2014/08/12, 11:52
  3. انتقال يک متغير بين دو فرم در #C
    توسط Mahdi.Faani در انجمن C , C++ , C#
    پاسخ: 7
    آخرين نوشته: 2014/04/29, 22:35
  4. کدام پروتکل ارتباطي براي ارتباط بين چند ميکرو بهتر است ؟
    توسط pesar.sabz.shad در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 1
    آخرين نوشته: 2011/04/11, 20:55
  5. پروتكل سريال با ميكرو كنترلر
    توسط kv_rahimi در انجمن 8051
    پاسخ: 2
    آخرين نوشته: 2011/02/03, 05:02

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •