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





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









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









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





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

نمایش نتایج: از 1 به 6 از 6
  1. #1
    2015/09/06
    67
    10

    دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    سلام دوستان
    آیا کسی هست که بتونه کمکم کنه
    من میخام از طریق وقفه ی یوزارت کاراکتر به کاراکتر دریافت کنم
    و اون رو با وقفه ی spi ارسال کنم
    .
    خیلی ساده س ولی انقدر بالاپایین ش گردم گیج شدم
    الان دارم تو وقفه ی یوزارت با کتابخانه spi.h ارسال ش میکنم اما غلطه چون در سمت گیرنده دارم تو وقفه spi میگیرمش
    لطفا کمک کنید
    :rolleyes:
    یا اینکه تو گیرنده هم با spi.h بگیرمش
    .
    این طوری درسته آیا ؟

    [code=cpp]
    #include <mega8.h>
    #include <delay.h>
    #include <stdio.h>
    #include <spi.h>

    /*
    /// global vars
    */

    unsigned char buffer_usart , buffer_spi ;

    /*
    //// usart rx isr
    */

    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    buffer_usart = UDR ;
    }

    /*
    //// spi isr
    */

    interrupt [SPI_STC] void spi_isr(void)
    {
    buffer_spi = SPDR ;
    spi(buffer_usart) ;
    }
    [/code]

    در حال حاظر این طوری ارسال میکنم ( تو گیرنده در وقفه اس پی آی میگیرم ) :

    [code=cpp]
    #include <mega8.h>
    #include <delay.h>
    #include <stdio.h>
    #include <spi.h>

    /*
    /// global vars
    */

    unsigned char buffer_usart , buffer_spi ;

    /*
    //// usart rx isr
    */

    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    buffer_usart = UDR ;
    spi(buffer_usart) ;
    }

    [/code]
  2. #2
    2009/09/27
    1,128
    34

    پاسخ : دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    دوست عزیز ، ارتباط SPI در AVR وقفه دریافت نداره، بلکه وقفه اتمام ارسال داره.
    ---------
    .
    .
    ...........
  3. #3
    2015/09/06
    67
    10

    پاسخ : دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    ممنون
    ولی من الان دارم در سمت گیرنده این طوری دریافت میکنم
    [code=cpp]
    interrupt [SPI_STC] void spi_isr(void)
    {
    buffer_spi = SPDR ;
    switch(buffer_spi)
    {
    case 0x01 : k='a' ; break ;
    case 0x02 : k='b' ; break ;
    case 0x03 : k='c' ; break ;
    case 0x04 : k='d' ; break ;
    .
    .
    .
    }
    lcd_gotoxy(0,0) ;
    lcd_putchar(k) ;
    }
    [/code]l
    حالا سوالم در واقع اینه در سمت ارسال چطوری باید بنویسم ؟
    همون spi(buffer_usart) در روتین وقفه یوزارت درسته یا نه ؟
  4. #4
    2015/09/06
    67
    10

    پاسخ : دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    الان چون در سمت ارسال با دستور spi(x) ارسال میکنم
    گاراکترها درست دریافت نمیشن
  5. #5
    2014/06/22
    مشهد
    502
    69

    پاسخ : دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    من برنامه ات نمی رسم کامل بخونم با دقت اما حدس می زنم در دریافت مشکل داری توصیه می کنم تو شبیه سازی مثلا پروتوس بیای با ابزار ها دیباگ ای که داره خروجی میکرو اول ات رو چک کنی ترجیحا اول فقط uart بعد spi رو چک کن بعد به هم متصل کن اگه مشکلی وجود داشت در اتصال اول به همین صورت در خروجی

    در مورد دریافت از spi هم الان دقیقا در خاطرم نیست که اینتراپت واسه درسافت می تونه بده توابع اش یا نه اما چون بسیار بسیار پروتکل ساده ای هست می تونید پایه دریافت رو به اینتراپت بدید و خودتون بخونین اطلاعات رو اینجوری اینتراپت هم می ده

    موفق باشید
    التماس دعا
  6. #6
    2015/09/06
    67
    10

    پاسخ : دریافت کاراکتر از وقفه usart و ارسال ش با وقفه spi

    ممنون
    با یک تست متوجه شدم که ارسال با دستور spi(x) هم درسته
    تنها ایراد پروژه م خوندن کد کیبرد با یوزارت میکروست
    همین
    .
    الان در سمت دریافت دارم :
    [code=cpp] interrupt [SPI_STC] void spi_isr(void)
    {
    buffer_spi = SPDR ;
    switch(buffer_spi)
    {
    case 0x01 : k='a' ; break ;
    case 0x02 : k='b' ; break ;
    case 0x03 : k='c' ; break ;
    case 0x04 : k='d' ; break ;
    .
    .
    .
    }
    lcd_gotoxy(0,0) ;
    lcd_putchar(k) ;
    }
    [/code]
    در سمت ارسال هم بصورت زیر :
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    buffer_usart = UDR ;
    spi(buffer_usart) ;
    }
نمایش نتایج: از 1 به 6 از 6

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

  1. ارسال و دريافت ديتا با استفاده از وقفه USART
    توسط jimiweber در انجمن میکروکنترلرهای AVR
    پاسخ: 6
    آخرين نوشته: 2016/03/02, 09:54
  2. دریافت کاراکتر از وقفه SPi
    توسط davoud.arabee در انجمن برنامه نويسي و اينترفيس
    پاسخ: 3
    آخرين نوشته: 2016/02/13, 10:53
  3. چطور چند کاراکتر از وقفه uart دریافت کنم ؟
    توسط mehrdad3264 در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2014/09/05, 22:23
  4. کار با وقفه USART
    توسط ahmp در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2014/03/24, 12:24
  5. مشکل ارسال يک کاراکتر اضافه (دات) در USART
    توسط SAJAD-G در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2013/11/05, 16:22

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

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

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

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

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