NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4131 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 5 از 5

موضوع: تبدیل یک کد c از avr به arm

  1. #1
    کاربر فعال beroz آواتار ها
    تاریخ عضویت
    May 2009
    نام
    بهروز
    نوشته ها
    285
    تشکر
    204
    تشکر شده 299 بار در 116 پست

    پیش فرض تبدیل یک کد c از avr به arm

    سلام

    من میخوام کد سی زیر رو از AVR به کد سی واسه آرم اتمل Keil تبدیل کنم میخواستم ببینم تبدیلی که انجام دادم درست هست یا نه؟

    [PHP]
    CSN=0;
    spi(reg);
    data=spi(0xFF);
    CSN=1;[/PHP]تبدیلش کردم به

    [PHP]
    SPI_Write(AT91C_BASE_SPI0,0,reg);
    data = SPI_Read(AT91C_BASE_SPI0);[/PHP]میخواستم بدونم الان درست تبدیل کردم؟ تو AVR قبل و بعد استفاده از تابع spi() باید CSN و اول صفر و بعد یک کنیم تو آرم اتمل هم این کار لازمه؟

    دستور Read رو درست به کار بردم؟

    کانفیگی که برای راه اندازی SPI تو آرم اتمل به کار بردم تا شبیه AVR بشه
    کد:
        SPI_Configure_PIO_MAKS(SPI0_PORT,SPI0_PIO_MASK); // Enable the SPI pins required by the application
    
        SPI_Configure(AT91C_BASE_SPI0,    // SPI0 TO USE
                        AT91C_ID_SPI0,    // SPI0 PMC ID TO Active Power
                        SPI_MASTER|        // SPI SET TO MASTER MODE
                        SPI_ONE_DEVIDE| // SPI Connct TO 1Device {NO MOLTI DEVICE}
                        SPI_MOD_FDIS);    // Disable Mode Fault Detection
        
    
        SPI_ConfigureNPCS(AT91C_BASE_SPI0,
                            0,                // Config Chanal 0 SPI0_NPCS0
                            SPI_MODE_0|        // L ACRIVE CLOCK & POS EDGE
                            SPI_8_BIT|        // 8 Bit Data strim
                            SPI_SCBR(1000000,BORD_CLK)|    // Clock Of SPI SET To 1 MHZ
                            SPI_DLYBCT(1000,BORD_CLK));    // Delay In Send Strim 1us
        
        SPI_Enable(AT91C_BASE_SPI0); // Enable SPI0
    ویرایش توسط beroz : 06-01-2013 در ساعت 13:51

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    کاربر فعال beroz آواتار ها
    تاریخ عضویت
    May 2009
    نام
    بهروز
    نوشته ها
    285
    تشکر
    204
    تشکر شده 299 بار در 116 پست

    پیش فرض

    لطفا یکی کمک کنه بدجوری لنگ این تغییر کد هستم ولی با تغییری که در بالا نوشتم نتونستم به جواب برسم

  4. #3
    کاربر فعال
    تاریخ عضویت
    Sep 2010
    نوشته ها
    158
    تشکر
    102
    تشکر شده 72 بار در 47 پست

    پیش فرض

    سلام.
    [PHP]تو AVR قبل و بعد استفاده از تابع spi() باید CSN و اول صفر و بعد یک کنیم تو آرم اتمل هم این کار لازمه؟[/PHP]
    قاعده کار با spi همین هست.یعنی باید قبل از شروع ارسال یا دریافت دیتا از طریق این پروتکل،دستگاه جانبی مورد نظر از طریق صفر شدن پایه CS اون انتخاب بشه. و البته این یک از ویژگی های spi هست که به ما امکان میده از طریق یکسری پایه مشخص (منظورم پایه های spi هست)تعداد زیادی دستگاه را کنترل کنیم و با اونا ارتباط برقرار کنیم.
    بنابراین فرقی نمیکنه که شما با آرم اتمل کار میکنین و یا با avr و یا هر میکرو دیگه،باید قبل از ارسال و دریافت ابتدا پایه cs صفر بشه و پس از اتمام تبادل دیتا پایه مذکور یک بشه.

    البته به شرطی که در تعریف تابع SPI_Write پایه cs بطور مناسب مقدار دهی نشده باشه اونوقت اگه بخایم اون کد را برای آرم اتمل تبدیل کنیم دستوراتی که بکار می برین اینجوری میشه :
    [PHP] CSN=0;
    SPI_Write(AT91C_BASE_SPI0,0,reg);;
    data= SPI_Write(AT91C_BASE_SPI0,0,0xff);;
    CSN=1; [/PHP]

    و البته باید اول برنامه csn=0 و csn=1 را define کنین :

    [PHP]#define csn=0 AT91F_PIO_ClearOutput( AT91C_BASE_PIO?, شماره پایه مورد نظر);

    #define csn=1 AT91F_PIO_SetOutput( AT91C_BASE_PIO?, شماره پایه مورد نظر);

    [/PHP]

    که منظور از ؟ در بالا نام پورت هست مثلا AیاB

    البته اینو بگم که من نمیدونم آرگومان دوم تابع SPI_Write مربوط به چی میشه که الان صفر هست.

    امیدوارم که عرایضم به دردتون بخوره.

  5. کاربران : 2 تشکر کرده اند از شما msmut7020 برای ارسال این پست سودمند:


  6. #4
    کاربر فعال beroz آواتار ها
    تاریخ عضویت
    May 2009
    نام
    بهروز
    نوشته ها
    285
    تشکر
    204
    تشکر شده 299 بار در 116 پست

    پیش فرض

    سلام

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

    تو مثالی که آقای مزارعی برای هدر spi.h گذاشته بودن پایه ی csn و دستی صفر و یک نکردن بلکه با استفاده از آرگومان دوم تابع spi_write میشه مشخص کرد که کدوم یک از ۴ تا NPCS و داریم استفاده میکنیم
    در لینک زیر توضیحات این هدر هست

    ایـــــــــران میـــــــکرو ™ - مشاهده یک موضوع - کلیه آموزش ها و نکات مهم برد eke2sam7x v2.0 کویرالکترونیک

  7. #5
    کاربر فعال beroz آواتار ها
    تاریخ عضویت
    May 2009
    نام
    بهروز
    نوشته ها
    285
    تشکر
    204
    تشکر شده 299 بار در 116 پست

    پیش فرض

    آقا یکی کمک کنه بدجوری کارم لنگه

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

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