اطلاعیه

Collapse
No announcement yet.

مشکل عجیب تاخیر در i2c

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

    مشکل عجیب تاخیر در i2c

    سلام دوستان من به یه مشکل عجیبی برخورد کردم در مورد i2c
    اولش تو حلقه while یه پین رو تاگل کردم به اسکوپ وصل کردم دیدم فرکانس خروجی خیلی زیاده یعنی فاصله هر روشن خاموش شدن حدود 1 میکرو ثانیه یا حتی کمتر
    کد:
    while (1)
       {
       PORTD.0=~PORTD.0;
       }
    بعدش اومدم یه دستور i2c نوشتم به این شکل
    کد:
    while (1)
       {
       i2c_start();
       b=3; 
       i2c_write(b); 
       a=i2c_read(23);
       i2c_stop(); 
       PORTD.0=~PORTD.0;
       }
    دیدم همون پینه اینبار تو اوسکوپ هر 500 میکروثانیه خاموش و روشن میشه یعنی انگار تو هر سیکل این دستورات i2c یه تاخیر میندازه هر چی تعداد دستوراتی که با i2c سرو کار داره زیادتر میشه تاخیر هم بیشتر میشه مثلا این دستور تاخیرمو به 2 میلی ثانیه رسوند
    کد:
    while (1)
       {
       i2c_start();
       b=3; 
       i2c_write(b); 
       i2c_write(b);
       i2c_write(b);
       i2c_write(b);
       i2c_write(b);
       i2c_write(b);
       i2c_write(b);
       a=i2c_read(23);
       i2c_stop(); 
       PORTD.0=~PORTD.0;
       }
    دستور i2c رو تو تایمر نوشتم دیدم کلا قاطی کرد دو تا شکل موج 1 میکرو ثانیه و 500 میکرو ثانیه با هم کانوالو شد oo:
    دوستان کسی به این مشکل برنخورده ؟ راه حل چیه؟

    #2
    پاسخ : مشکل عجیب تاخیر در i2c

    یعنی کسی تا بحال به این مشکل بر نخورده؟

    دیدگاه

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