اطلاعیه

Collapse
No announcement yet.

at91sam7x راه اندازی twi

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

    at91sam7x راه اندازی twi

    سلام
    کسی twi رو راه اندازی کرده؟
    دیتاشیت رو میخونم سر درنمیارم! نسبت به atmega پیچیده تره !!

    اولین کاری که باید بکنم طبق دیتاشیت اینه:

    To enable the TWI, the programmer
    must perform the following steps:
    • Program the PIO controller to:
    – Dedicate TWD and TWCK as peripheral lines.
    – Define TWD and TWCK as open-drain.

    • Enable the peripheral clock.
    The TWI interface may be clocked through the Power Management Controller (PMC), thus the
    programmer must first configure the PMC to enable the TWI clock.


    تعریف کردن peripheral به چه شکل انجام میشه؟

    منظور از open-drain مقداردهی رجیستر multi drive هست؟ (PIOx_MDER)

    فعال کردن PMC با رجیستر PMC_PCER انجام میشه؟
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    #2
    پاسخ : at91sam7x راه اندازی twi

    peripheral رو فهمیدم! رجیسترهای PIO_ASR و PIO_BSR ....

    کاش چند نفر همراهی کنن یه تاپیک باز کنیم در مورد این مفاهیم کامل بحث بشه...
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : at91sam7x راه اندازی twi

      تو رو خدا یکی منو راهنمایی کنه !!

      ببینید طبق دیتا شیت :

      میخوام مثل این تصویر ارتباط یه read پیاده سازی کنم.

      تو دیتاشیت این فلوچارت رو واسه read کشیده :

      بیت MREAD رو صفر گذاشته. (یعنی write) اگه طبق اون تصویر اول فرض کنیم که منظورش همون W بعد از DADR هست، پس چرا در ادامه این بیت یک (یعنی READ) نشده؟! (همون R بعد از DADR دوم). اصلا این فلوچارت فرق اساسی با فوچارت write نمیکنه!!

      چیکار کنم؟! فقط یه نمونه کد واسه خوندن یه سنسور دما تو سایت atmel پیدا کردم که فوق العاده عجیب بود!! اصلا آدرس دهی رجیسترهاش مشکل داشت!!
      https://www.linkedin.com/in/mohammadhosseini69

      http://zakhar.blog.ir

      دیدگاه


        #4
        پاسخ : at91sam7x راه اندازی twi

        سلام
        یکمی دیره اما ...
        وقتی به دیتاشیت نگاه کردم کمی(خیلی) گیج شدم اما PDF زیر امیدوارم کرد. هنوز میخونمش . به اون حد نرسیدم تا جواب بدم،شما هم بخونید شاید چیزی عایدتون شد.
        http://www.atmel.com/dyn/resources/p...ts/doc6327.pdf
        به لینک زیر هم سری بزنید شاید کمک کرد.
        http://www.embeddedrelated.com/group...M/show/730.php

        دیدگاه


          #5
          پاسخ : at91sam7x راه اندازی twi

          نوشته اصلی توسط salehjg
          سلام
          یکمی دیره اما ...
          وقتی به دیتاشیت نگاه کردم کمی(خیلی) گیج شدم اما PDF زیر امیدوارم کرد. هنوز میخونمش . به اون حد نرسیدم تا جواب بدم،شما هم بخونید شاید چیزی عایدتون شد.
          http://www.atmel.com/dyn/resources/p...ts/doc6327.pdf
          به لینک زیر هم سری بزنید شاید کمک کرد.
          http://www.embeddedrelated.com/group...M/show/730.php
          چقدر آشناست...! :mrgreen: (دوم دبیرستان؟!)

          من همه اینا رو خوندم! هرچی تو اینترنت یود ...

          الان مشکل اینه که من هرچی میفرستم نمیتونم دقیقا بفهمم ack میشه یا نه! آدرس رو اشتباه هم میفرستم بازم nack نمیشه !!
          نمیدونم شاید سنسور سوخته ... اصلا بیخیال راه اندازی سنسور شدم! فقط میخوام یه جواب ACK ازش بگیرم! (الان یادم افتاد فکرکنم یه آی سی eeprom دارم. برم امتحانش کنم...البته اگه بازم مشکل سطح ولتاژ نداشته باشم)
          https://www.linkedin.com/in/mohammadhosseini69

          http://zakhar.blog.ir

          دیدگاه


            #6
            پاسخ : at91sam7x راه اندازی twi

            سلام منم دارم رو این قضییه کار میکنم اگه به نتیجه ای رسیدید به منم کمک کنید. من تنهام :angry:
            hrgz rah pymode shodaro naro chon b hamun jai miresi k baqie residan

            دیدگاه


              #7
              پاسخ : at91sam7x راه اندازی twi

              سلام
              پیشنهاد می کنم که اول کتاب "مرجع کامل میکروکنترلرهای arm سری at91" انتشارات نص را بخوانید تا با رجیسترهای PMC و IO و ... آشنا بشوید در این کتاب اکثر قسمت های میکرو راه اندازی شده اما برای 7S توضیح داده که رجیسترها با 7X فرقی نداره آن قسمتهای مهمی که فرق داره را در پیوست آورده شده است. اما باید بگم TWI را توضیح نداده هنوز اما من TWI را راه اندازی کردم و کار خاصی نداره البته با EEPROM تستش کردم که بدون مشکل کار می کرد.
              به طور مثال برنامه زیر اطلاعات را از آدرس 5H دستگاه SLAVE با نرخ انتقال 400KHZ می خواند.
              کد:
              #include <Atmel/ioat91sam7s64.h>
              void main ()
              {
              //--------------------start up--------------------------
              AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15)
              AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
              //--------------------speed up--------------------------
              AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
              AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC; 
              AT91C_BASE_PMC->PMC_MCKR = 0x3;
              AT91C_BASE_PMC->PMC_SCER = 0x1;
              //-----------------------------------------------------
              AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_TWI); // AT91C_ID_TWI=9
              //-----------------------------------------------------
              unsigned char datain;
              AT91C_BASE_PIOA->PIO_PDR = (1<<3|1<<4);
              AT91C_BASE_PIOA->PIO_MDER = (1<<3|1<<4);
              AT91C_BASE_PIOA->PIO_ASR = (1<<3|1<<4);
              AT91C_BASE_TWI->TWI_CWGR = 0x03C3C;
              AT91C_BASE_TWI->TWI_CR = 0x4;
              AT91C_BASE_TWI->TWI_MMR = 0x051000;
              AT91C_BASE_TWI->TWI_CR = 0x3;
              while ((AT91C_BASE_TWI->TWI_SR&0x2)!=0x2);
              datain = AT91C_BASE_TWI->TWI_RHR;
              while ((AT91C_BASE_TWI->TWI_SR&0x1)!=0x1);
              while (1);
              }

              دیدگاه

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