PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : وقفه gpio در lpc1313



mehdi-samani
27-06-2013, 03:27
سلام به همگی.
من میخوام در lpc1313 از وقفه PIO0_1 در لبه بالا رونده وپایین رونده استفاده کنم.
طبق توضیحات دیتاشیت تنظیمات رو انجام دادم.
فقط الان نمیدونم اسم زیر روال وقفه چیه؟
و چه وقفه ای رو باید Enable کنم؟
من با کیل کار میکنم.
ممنون میشم کمکم کنید.
با تشکر.

mehdi-samani
27-06-2013, 15:06
دوستان اگه ممکنه کمک کنید.
این برنامه ایه که من نوشتم:

#include <LPC13xx.h>


void PIOINT0_IRQHandler(void) {
LPC_GPIO2->DATA=0xaaa;
LPC_GPIO0->IC = (1<<1);
}

int main(void){

LPC_GPIO0->DIR = 0x000;
LPC_GPIO2->DIR = 0xfff;

LPC_GPIO0->IS = 0x0;
LPC_GPIO0->IBE = 0x2;
LPC_GPIO0->IEV = 0x0;
LPC_GPIO0->IE = 0x2;


NVIC_SetPriority(EINT0_IRQn,0);
NVIC_EnableIRQ(EINT0_IRQn);

while(1){
LPC_GPIO2->DATA=0xf0f;
LPC_GPIO2->DATA=0x0f0;
}

}
توی سیمولاتور وقفه زده میشه.روی هر دو لبه.
ولی وارد زیر روال وقفه نمیشه.
از دوستان کسی میدونه مشکل چیه؟

mzarkoob
27-06-2013, 22:40
سلام
من به جزییات 1313 اشراف ندارم ولی در کل شما مشخص کن می خواهی از وقفه gpio استفاده کنی یا وقفه خارجی؟
اگر وقفه gpio باشه که وارد یک زیر روال خاص میشه و البته باید رجیسترش را فعال کنید(چیزی که در این برنامه من ندیدم)
اگر وقفه خارجی باشه که به غیر فعال کردن با یک رجیستر خودش باید pinsell هم تنظیم کنید.
این همه مواردی است که در فیلم های آموزشی(البته برای 1768) مو به مو ذکر شده

mehdi-samani
27-06-2013, 22:53
سلام و ممنون از پاسختون.
من وقفه GPIO رو میخام راه بندازم.
من فیلم آموزشی شما رو دارم.
طبق گفته های خودتون برای 1768 مثلا اگه بخواهیم اینتراپت یه پینی رو روی هر دو لبه فعال کنیم اینجوری مینویسیم:

LPC_GPIOINT->IO0IntEnF = (1 <<28);
LPC_GPIOINT->IO0IntEnR = (1 <<28);
خوب منم واسه 1313 همین کار رو کردم:

LPC_GPIO0->IS = 0x0;
LPC_GPIO0->IBE = 0x2;
LPC_GPIO0->IEV = 0x0;
LPC_GPIO0->IE = 0x2;
دستور اول میگه حساس به لبه.
دستور دوم میگه حساس به هر دو لبه.
دستور سوم که در اینجا کاری نمیکنه و زیادیه :mrgreen:
دستور سوم هم فعالش میکنه.

تو سیمولینک کیل وقفه زده میشه و پرچم وقفه یک میشه.
ولی فکر میکنم چون اسم زیر روال وقفه درست نیست وارد زیر روال وقفه نمیشه.
حالا چه کار کنم؟

mzarkoob
28-06-2013, 00:03
آیا در این مدل تعریف شده که برای وقفه gpio برود در زیر روال وقفه0؟ (در 1768 باید می رفت در زیرروال وقفه 3 )

mehdi-samani
28-06-2013, 02:17
من همین تیکه کدی هم که نوشتم با ARMwizard نوشتم.:mrgreen:
armwizard که دیگه الکی نمیگه.

شاید مشکل از جای دیگه باشه؟
من با سیمولینک کیل تست میکنم از این بابت مشکلی یا قلق خاصی نداره؟فوت کوزه گری چیزی؟
میشه شما خودتون این برنامه رو یا برنامه ای که armwizard میده تو کیل تست کنید؟
ممنون میشم.:roll:

mehdi-samani
29-06-2013, 17:09
سلام.
از دوستان و اساتید محترم اگه کسی مشکل ما رو میدونه دیغ نکنه.:(
با تشکر.

Aghaeifar
29-06-2013, 21:00
من همین تیکه کدی هم که نوشتم با armwizard نوشتم.:mrgreen:
Armwizard که دیگه الکی نمیگه.



چیزی که من می دونم همینی است که آقای زرکوب ذکر کردند.

mehdi-samani
04-07-2013, 17:52
سلام مجدد.
من به نتیجه ای رسیدم.
وقتی که با lpc1768 کار می کردم وقتی که به عنوان مثال لبه بالا رونده به پین داده میشه چک باکس pending در NVIC فعال میشد.

اما در lpc1313 این اتفاق نمی افتد.ولی اگه به طور دستی چک باکس pending رو فعال کنم وارد زیر روال وقفه میشود.


You can see links before reply

حالا به نظر شما مشکل از کجاست؟؟

mehdi-samani
05-07-2013, 20:56
سلام
سرانجام مشکل رو فهمیدم.
مشکل از سیمولاتور کیل بود.
امروز lpc1313 که سفارش داده بودم به دستم رسید و در عمل تست کردم و دیدم که همه چیز درسته.
و همون برنامه که تو پست اول گذاشتم به راحتی جواب میده.

اصلا فکرش رو هم نمیکردم که مشکل از کیل باشه.

از همگی ممنونم.