PDA

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



mohamad0
18-10-2016, 09:47
سلام
تو یه برنامه که نوشتم وقتی میخوام وقفه تایمر 0 رو فعال کنم میکرو به دستور فعال کردن وقفه تایمر 0 ( NVIC_EnableIRQ(TIMER0_IRQn)که میرسه انگار هنگ کرده و دیگه کاری انجام نمیده / برنامه رو این خط وای میسته /
کد:
void timer0_capture_init()
{
LPC_TIM0->TCR = TCR_RESET; /* Counter Reset */
LPC_TIM0->PR = 0x00; /* count frequency:Fpclk Fpclk = 25M Hz = Fcpu/4 */

LPC_TIM0->CCR = (1<<3)|(1<<5) ;

LPC_TIM0->TCR = TCR_CNT_EN; /* counter enable */

LPC_IOCON->P1_27=3;// P1_27 >>> CAP0.1

NVIC_EnableIRQ(TIMER0_IRQn);
//VICIntEnable = 0x00000010;
}

لطفا راهنمایی بفرمایید مشکل چی هست؟
کامپایلر هم keil هست هم با ورژن 5 و هم 4 تست کردم /
نشد که نشد

mstkmn
18-10-2016, 10:45
سلام
احتمالا به محض فعال کردن اینتراپت، وارد تابع اینتراپت میشه که اگه تابع رو ننوشته باشی میکرو هنگ میکنه یا اگه فلگش رو توی تابع اینتراپت پاک نکنی از اون تابع بیرون نمیاد.

mohamad0
01-11-2016, 11:29
#include "LPC177x_8x.h"

unsigned int counter;
void timer_counter_init(void);
//void TIMER1_IRQHandeler(void);
//void TIMER0_IRQHandeler(void);


void timer_counter_init(void)
{
LPC_SC->PCONP|=3;// timer0,1 =on
LPC_TIM1->CTCR=0;// timer mod
LPC_TIM1->PR=120;
LPC_TIM1->MR0=1000;
LPC_TIM1->TCR=2;
LPC_TIM1->MCR=3;

//NVIC_SetPriority(TIMER1_IRQn,0);
NVIC_EnableIRQ(TIMER1_IRQn);
LPC_TIM1->TCR=1;//start timer1
//---------- counter init --------------------------------------
LPC_TIM0->CTCR=0x05; // counter mod - rising edge on cap0.1
LPC_TIM0->PR=0;
LPC_TIM0->MR0=65000;
LPC_TIM0->TCR=2;
LPC_TIM0->MCR=3;
// NVIC_SetPriority(TIMER0_IRQn,0);
// NVIC_EnableIRQ(TIMER0_IRQn);
LPC_TIM0->TCR=1;//start counter0

LPC_IOCON->P1_27=3;//counter_pulse p1.27
}

//************************************************** ****
void TIMER1_IRQHandeler(void)
{
unsigned int regVal;

regVal = LPC_PWM1->IR;
counter=LPC_TIM1->TC;
LPC_TIM1->TC=0;

//LPC_TIM1->IR=(1UL<<0);
LPC_PWM1->IR |= regVal; /* clear interrupt flag on match 0 */
return;
}
//************************************************** ****
void TIMER0_IRQHandeler(void)
{
LPC_TIM1->TC=0;


LPC_TIM0->IR=(1UL<<0);
}

تنظیمات بشکل بالا هست /
نمیدونم که ایراد از کجا هست .
وقتی وقفه رو (چه تایمر و چه کانتر0 و 1 فعال میکنم اصلا تو روتین وقفه نمیره . (انگار هنگ کرده )
امتحان کردم .وقتی وقفه اتفاق می افته احتمالا برنامه به یه جای نا معلوم پرش میکنه و دیگه بر نمیگرده .
تو فیلما مهندس زرکوب هم همینجور نوشته .
لطفا راهنمایی کنید .

- - - Updated - - -


سلام
احتمالا به محض فعال کردن اینتراپت، وارد تابع اینتراپت میشه که اگه تابع رو ننوشته باشی میکرو هنگ میکنه یا اگه فلگش رو توی تابع اینتراپت پاک نکنی از اون تابع بیرون نمیاد.

سلام
ممنون بابت پاسخ گویی تون
تابع رو نوشتم و فلگ وقفه رو هم پاک میکنم .
اصلا وارد زیر برنامه وقفه نمیشه . (امتحان کردم )

mzarkoob
01-11-2016, 16:49
سلام
تمام پرچم های وقفه را پاک کنید.

mohamad0
01-11-2016, 18:12
سلام
مهندس جان دستور خاصی داره ؟
یا باید یکی کی این کارو کنم ؟
(با دستورات cmsis ) هم همین مشکل هست
ممنون

abaspoor
02-11-2016, 14:03
به نظرم برنامت شروع میشه اجرا بعد میاد تنظیمات اولیه رو انجام میده تایمر 1 شروع میشه هنوز داری تنظیمات اولیه انجام میده بعد میپری میره تابع وقفه اونجا هم که وقفه پاک نمیشه اونجا گیر میکنه. اول همه تنظیمات و انجام بده بعد تنظیمات وقفه بعد تایمر 1 رو فعال کن. یکم به نظرم بهره ( خودم با ای وی آر همچین مشکلی داشتم) اما تو آرم با cmsis همچی هلو برو تو گلو شده :o

mohamad0
04-11-2016, 20:02
سلام
ببینید برنامه اصلی شروع میشه / به مخض اینکه اولین وقفه تایمر اتفاق افتاد برنامه به جای نا معلومی میره و بر نمیگرده.
ممنون بابت پاسخگویی تون

mstkmn
05-11-2016, 16:58
سلام
ببینید برنامه اصلی شروع میشه / به مخض اینکه اولین وقفه تایمر اتفاق افتاد برنامه به جای نا معلومی میره و بر نمیگرده.
ممنون بابت پاسخگویی تون

سلام
احتمالا اسم تابع اینتراپت رو اشتباه نوشتید.
توی دیباگر نگاه کن ببین تابع اینتراپت فعاله یا نه مثلا ببین میشه روی یکی از دستوراش breakpoint گذاشت یانه.

mohamad0
08-11-2016, 11:06
سلام
مشکل حل شد .
Handler را به اشتباهHandeler نوشته بودم .
:mrgreen:


:mrgreen::mrgreen::mrgreen:

دوستان بابت راهنمایی تون متشکرم .
موفق باشید
یا علی