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





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









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





  1. #1
    تاریخ عضویت
    2014/06/03
    808
    57

    مشکل با twi سخت افزاری

    سلام دوستان
    همونطور که میدونید برای استفاده کردن از i2c در کدویژن دو راه داریم.یکی استفاده از i2c نرم افزاریه که از پایه های I/O استفاده میشه و توابع
    کد:
    i2c_start()
    i2C_stop()
    i2c_read()
    i2c_write()
    به صورت آماده نوشته شدند.یه راه دیگه هم استفاده از twi سخت افزاریه که باید با رجیستر ها کار کرد.
    حالا من میخوام این توابع را برای twi سخت افزاری ایجاد کنم.و هم زمان هم تستش هم میکنم.یعنی دارم رو یه ماژولی کار میکم که با i2c نرم افزاری راه اندازی شده و از همون توابع آماده استفاده کرده.
    حالا همون توابع را به این صورت نوشتم ولی دیگه کار نکرد.برای اینکه بفهمم کجا کار اشتباه شده در هر مرحله یه کلمه روی ال سی دی میاد که میفهمم الان کجای کاره.
    ولی نتیجه این شده که در همون مرحله ی start میمونه.
    کد:
      TWBR=4;
      TWCR=(1<<TWEA)|(1<<TWEN);
      TWSR|=(1<<TWPS0)|(1<<TWPS1);
    void i2c_Start()
    {
          lcd_clear();
          lcd_putsf("start");
          delay_ms(2000);
          TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
          while(!(TWCR & (1<<TWINT)));
    }
    void i2c_Stop()
    {
          lcd_clear();
          lcd_putsf("stop");
          delay_ms(2000);
          TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
          while(!(TWCR & (1<<TWINT)));
    }
    void i2c_Write(unsigned char data)
    {
          lcd_clear();
          sprintf(strr,"write%u",data);
          lcd_puts(strr);
          delay_ms(2000);
          TWDR=data;
          TWCR=(1<<TWINT)|(1<<TWEN);
          while(!(TWCR & (1<<TWINT)));
    }
    unsigned char i2c_Read()
    {
          lcd_clear();
          sprintf(strr,"read%u",TWDR);
          lcd_puts(strr);
        return TWDR;
          TWCR=(1<<TWINT)|(1<<TWEN);
    }
    میکرو قراره توی حالات master receiver و master transmeter کار کنه.
    یه نکته جالب اینکه وقتی پایه sda را از بیرون به زمین وصل میکنم میکرو به وضعیت بدی میره.یعنی میره تابع i2c_Write() را اجرا میکنه.
    لطفا راهنمایی کنید
    آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟
    • تبلیغات
      .

  2. #2
    تاریخ عضویت
    2014/06/03
    808
    57

    پاسخ : مشکل با twi سخت افزاری

    مشکل اینجا بود
    کد:
    void i2c_Stop()
    {
          lcd_clear();
          lcd_putsf("stop");
          delay_ms(2000);
          TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
          while(!(TWCR & (1<<TWINT)));///باید حذف بشه
    }
    آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟
نمایش نتایج: از 1 به 2 از 2

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

  1. مشکل نرم افزاری
    توسط alitorabzadeh72 در انجمن مدار چاپی (PCB)
    پاسخ: 2
    آخرين نوشته: 2015/09/28, 02:13
  2. مشکل i2c نرم افزاری
    توسط par3eh در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/03/30, 22:40
  3. مشکل سخت افزاری در راه اندازی ADC
    توسط vahidabedi در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2014/11/14, 17:01
  4. مشکل با وقفه سخت افزاری
    توسط محمد نحوی در انجمن XMEGA
    پاسخ: 1
    آخرين نوشته: 2011/08/17, 17:44
  5. پاسخ: 2
    آخرين نوشته: 2008/10/01, 00:41

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

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

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

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