اطلاعیه

Collapse
No announcement yet.

pio+at91sam7s64

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

    pio+at91sam7s64

    سلام.کسی هدر pio.hواسه at91sam7$64نداره؟خواهشن یکی ج بده.هر گشتم .پیدا نکردم

    #2
    پاسخ : pio+at91sam7s64

    حداقل یکی بگه با رجیستر چطوری میشه یه ورودی(به عنوان شستی) رو تعریف کرد؟ میخوام تو شرط if قرارش بدم.

    دیدگاه


      #3
      پاسخ : pio+at91sam7s64

      من دو سال میشه با 7tdmi کار نکردم بصورت راهنمایی و نه عملی کمکت میکنم . تو معماری آرم برای کار با هر پری فریال کارهای زیر رو باید انجام بدید

      1- مالتی پلکس پین سلکت . یعنی اگر به یک پین چندتا پریفریال نصب بشه مشخص میکنی که کدوم فعال بشه .
      2- فعال کردن تغذیه پریفریال . که با کلاک دادن در حقیقت اون پریفریال رو فعال میکنی .
      3- اپن درین و مقاومت پول پ و پول دان داخلی رو مشخص کنید .
      4- اینتراپت
      5- تنظیمات مد dma

      دو مورد آخر فعلا برای شما نیاز نیست .

      حال برای pio علاوه بر کار های فوق باید جهت مشخص کنید . بعد اگر جهت پورت خروجی بود بهش مقدار بدهید . می تونید فیلتر ورودی و خروجی هم برای هر پین تایین کنید .




      این هم مثال اگر PORTC.PIN12 رو صفر کنی led متصل به PORTB.PIN27 روشن میشه


      کد:
       
      
      void InitPIO()
      {
      	//We need to associate clock with Port C so we can read input
        //A list of Peripheral ID's can be found on Page 47 in the datasheet.
      	PMC->PMC_PCER0 = _BV(ID_PIOC);
      
      	//Enable PB27 and PC12 (Peripheral Enable Register)
      	PIOB->PIO_PER = PIO_PB27;
      	PIOC->PIO_PER = PIO_PC12; 
      	
      	//Set B27 as output (Output Enable Register)
      	PIOB->PIO_OER = PIO_PB27;
      	
      	//Set C12 as input (Ouput Disable Register)
      	PIOC->PIO_ODR = PIO_PC12;
      	
      	//Disable pull-up on both pins (Pull Up Disable Register)
      	PIOB->PIO_PUDR = PIO_PB27;
      	PIOC->PIO_PUDR = PIO_PC12;
      }
        
      
      Very simple polling routine that checks the Pin Data Status Register's status every delay period and sets the state of the LED accordingly.
      
      while (1) 
      {
      	//Read the PORTC Pin Data Status Register checking Pin 12 for a change of state
      	// and set on board LED appropriately.
      	if ((PIOC->PIO_PDSR & PIO_PC12) == PIO_PC12)
      		PIOB->PIO_SODR = PIO_PB27; //Set Ouput Data Register
      	else
      		PIOB->PIO_CODR = PIO_PB27; //Clear Output Data Register
      			
      	delay();
      }


      تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
      داشتن عقله زيادتر از دیگر آدم ها است

      دیدگاه


        #4
        پاسخ : pio+at91sam7s64

        سلام من برنامه ی زیر رو نوشتم بدون هیچ ارور یا وایرنینگ کمپابل میشه.روی هدر برد هم ربختم ولی با زدن شستی هیچ اکشنی انجام نمیده
        #include "AT91SAM7S64.h"
        #include "delay.h"
        int main (void) {
        *AT91C_PIOA_PER=0X40000000;
        *AT91C_PIOA_OER=0X40000000;
        *AT91C_PIOA_OWER=0X40000000;
        *AT91C_PIOA_PER=0X20000000;
        *AT91C_PIOA_OWER=0X20000000;
        while(1){
        if ((*AT91C_PIOA_PDSR&0X20000000)==1){
        *AT91C_PIOA_SODR=0X40000000;
        }
        }
        }

        دیدگاه

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