سلام.کسی هدر pio.hواسه at91sam7$64نداره؟خواهشن یکی ج بده.هر گشتم .پیدا نکردم
اطلاعیه
Collapse
No announcement yet.
pio+at91sam7s64
Collapse
X
-
پاسخ : 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(); }
تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
داشتن عقله زیادتر از دیگر آدم ها است
دیدگاه
-
پاسخ : 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;
}
}
}
دیدگاه
دیدگاه