برای راه اندازی PWM0 در AT91SAM7S64 باید از کدام پایه استفاده کنم و چگونه کد نویسی می شود
اطلاعیه
Collapse
No announcement yet.
pwm
Collapse
X
-
پاسخ : pwm
سلامنوشته اصلی توسط hadiyegبرای راه اندازی PWM0 در AT91SAM7S64 باید از کدام پایه استفاده کنم و چگونه کد نویسی می شود
پایه های PWM0 در 7S
PA0
PA11
PA23
می باشدو از هر کدام که بخواهی می توانی استفاده کنید. در مورد برنامه نویسی آن اول از همه باید فرکانس کاری میکرو و فرکانس PWM خود را مشخص کنید چون یک سری فرمول دارد برای محاسبات و مقدار دهی رجیسترها. در کتاب "مرجع کامل میکروکنترلرهای ARM سری AT91" انتشارات نص به طور کامل توضیح داده و چند تا مثال هم دارد و در قسمت پروژه های آن کنترل دور موتور هم می باشد.
-
پاسخ : pwm
سلامنوشته اصلی توسط hadiyegسلام
ممنون.تا حدودی فهمیدم باید کدوم رجیستر هارو مقدار دهی کنم ولی میشه بگی کجا تعیین میشه که حتما از PA0 ، PWM0 خارج میشه؟
این سه خط تعیین می کند که PWM0 از PA0 خارج شود.
کد:AT91C_BASE_PIOA->PIO_PDR = (1<<0); AT91C_BASE_PIOA->PIO_MDER = (1<<0); AT91C_BASE_PIOA->PIO_ASR = (1<<0);
دیدگاه
-
پاسخ : pwm
سلام
من این کدارو تونستم از DATASHeet در بیارم .میشه بگید درسته یا اشکال داره؟ اگه بخوام فرکانس PWM 500HZ بشه مقدار رجیستر PWM_CPRD0 چند باید بشه؟ کریستال 18.432 گذاشتم.یه چیزایی از PMC خوندم.لازمه اونم راه بیوفته؟
*AT91C_PWM_MR=0x00000A01
*AT91C_PWM_ENA=0x00000001
*AT91C_PWM_DIS=0x00000000
*At91C_PWM_CMR0=0x0000000A
hardware-ui
دیدگاه
-
پاسخ : pwm
در مورد PMC قبلا هم در یک تایپیک دیگه گفتم باید آنرا فعال کنید و کریستال 18.432MHZ که به میکرو وصل است دلیلی نمیشه که میکرو با این فرکانس کار کند اگر واحد PMC را فعال نکنید میکرو با 32KHZ تقریبا کار می کند. پس اول باید واحد PMC را فعال کنید و فرکانس میکرو را تعیین کنید و سپس توسط واحد PMC کلاک واحد PWM را فعال کنید.نوشته اصلی توسط hadiyegسلام
من این کدارو تونستم از DATASHeet در بیارم .میشه بگید درسته یا اشکال داره؟ اگه بخوام فرکانس PWM 500HZ بشه مقدار رجیستر PWM_CPRD0 چند باید بشه؟ کریستال 18.432 گذاشتم.یه چیزایی از PMC خوندم.لازمه اونم راه بیوفته؟
*AT91C_PWM_MR=0x00000A01
*AT91C_PWM_ENA=0x00000001
*AT91C_PWM_DIS=0x00000000
*At91C_PWM_CMR0=0x0000000A
http://www.eca.ir/forum2/index.php?topic=48607.0
مقدار رجیستر PWM_CPRD به فرکانس میکرو تون ارتباط مستقیم دارد اول باید فرکانس میکروتون مشخص کنید سپس توسط فرمول آن مقدار این رجیستر را تعیین کنید.
در مثال زیر PWM0 بر روی PA0 با فرکانس 48KHZ با D.C 10٪ را راه اندازی می کند. فرکانس میکرو هم 48MHZ می باشد.(تمامی این موارد دورن اون کتاب که گفتم هست)
کد:#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_PWMC); // AT91C_ID_PWMC=10 //----------------------------------------------------- AT91C_BASE_PIOA->PIO_PDR = (1<<0); AT91C_BASE_PIOA->PIO_MDER = (1<<0); AT91C_BASE_PIOA->PIO_ASR = (1<<0); AT91C_BASE_PWMC_CH0->PWMC_CMR = 0x202; AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 250; AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 25; AT91C_BASE_PWMC->PWMC_ENA = 1; while(1); }
دیدگاه




دیدگاه