PDA

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



sajjad_AD
27-11-2014, 00:49
سلام من به وسیله کد زیر از PC8 به صورت وقفه خارجی استفاده می کنم کار می کنه اما مشکلی که داره نویز راحت روش اثر میذاره در صورتی که اگه همین پایه رو بدون وقفه و داخل حلقه به صورتی شرطی استفاده کنم اصلا نویز نداره
کدم در رابطه با اعدادی که به ریجیستر ها دادم کم و کثری و اشکالی نداره؟



sbit Buzzer at GPIOB_ODR.B9;

void ExtInt() iv IVT_INT_EXTI9_5 {
EXTI_PR.B8 = 1;

Flash_Update();
Buzzer = 1;
Delay_ms(1000);

}

void main() {

GPIO_Config(&GPIOC_BASE,
_GPIO_PINMASK_8 ,
_GPIO_CFG_DIGITAL_INPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_PULL_NO);

RCC_APB2ENR.AFIOEN = 1;
AFIO_EXTICR3 = 0x0002;
EXTI_FTSR = 0x00000100;
EXTI_IMR = 0x00000100;
NVIC_IntEnable(IVT_INT_EXTI9_5);

EnableInterrupts();

while(1);

}

wantedboy
27-11-2014, 00:56
سلام
برای کاهش نویز یه مقاومت با توجه به لبه ای که تنظیم کردی پول آپ یا پول دان کن.
درست میشه.

sajjad_AD
27-11-2014, 10:23
سلام
برای کاهش نویز یه مقاومت با توجه به لبه ای که تنظیم کردی پول آپ یا پول دان کن.
درست میشه.

سلام ممنون از پاسخ از نظر سخت افزاری هیچ مشکلی وجود نداره رعایت کردم
آیا کلاک Alternate function IO رو میشه کم کرد؟؟ حداقل کلاک GPIO هم فکنم 2MHz باشه آیا از این کمتر میشه؟؟؟

mzarkoob
27-11-2014, 11:56
سلام
در کاری که من انجام دادم این طور نبود نویز نمی گرفت. قبلش که مشکل داشت از سخت افزار بود
در زیر روال وقفه هم یک تاخیر بذارید که یک لبه اومد و نویز داشت دو تا حساب نکنه

alish11
03-12-2014, 01:12
برای نویزت وقتی وارد بردار وقفه میشی وقفه رو غیرفعال کن و بعد یه تایم مشخصی که بستگی به وقفه ات داره دوباره اون پایه رو بخون
اگه از اومدن وقفه مطمئن شدی کار مورد نظرت رو انجام بده
با اصلاح کدت به راحتی مشکل نویزت حل میشه
یه فیلتر rc هم میتونه کار رو بهتر کنه

sajjad_AD
03-12-2014, 02:31
برای نویزت وقتی وارد بردار وقفه میشی وقفه رو غیرفعال کن و بعد یه تایم مشخصی که بستگی به وقفه ات داره دوباره اون پایه رو بخون


بله این کار رو کردم و جواب هم میده اما می خوام بدونم چرا بدون اینکه به پایه وقفه پالس بدم و فقط با یه لمس کوچیک دیگر پایه های میکرو یا حتی زمین وقفه میزنه
این مشکل منه از نویز متنفرم حتی اگه با کد رفع شه باز شب خوابم نمیبره



یه فیلتر rc هم میتونه کار رو بهتر کنه


قبلا امتحان کردم هیچ تاثیری نداشت

bascom2
03-12-2014, 20:17
void EXTI9_5_IRQHandler (void)
{
//Check if EXTI_Line0 is asserted
if(EXTI_GetITStatus(EXTI_Line7) != RESET)
{

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // Enables TIM interrupts 1ms


}
//we need to clear line pending bit manually
EXTI_ClearITPendingBit(EXTI_Line7);
}

sajjad_AD
03-12-2014, 22:53
void EXTI9_5_IRQHandler (void)
{
//Check if EXTI_Line0 is asserted
if(EXTI_GetITStatus(EXTI_Line7) != RESET)
{

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // Enables TIM interrupts 1ms


}
//we need to clear line pending bit manually
EXTI_ClearITPendingBit(EXTI_Line7);
}

ممنون ولی من mikroc کار می کنم , می تونی هدری رو که keil برای فعال سازی وفقه های خارجی ازش استفاده می کنه آپلود کنی؟ تشکر

NoBoko
04-12-2014, 00:16
اینجا چندتا مثال برای وقفه f4 هست:
lin (You can see links before reply)

برای فرکانس های بالا برای تشخیص درست وقفه بهتره از Debouncing time استفاده بشه ، یا خازن و مقاومت موازی با سیگنال وقفه که از تغییرات ناگهانی جلوگیری کنه.
فکر کنم یه چیزی هم هست به اسم DMA IRQ Handler که چون از بافر DMA اینتراپت رو می گیره خطا رو کم میکنه ،امتحان کردنش ضرر نداره:
Link (You can see links before reply)
link2 (You can see links before reply lic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_s tm32%2fDMA%20Double%20Buffer%20IRQ&FolderCTID=0x01200200770978C69A1141439FE559EB459D7 580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=3966)

alish11
04-12-2014, 02:14
بله این کار رو کردم و جواب هم میده اما می خوام بدونم چرا بدون اینکه به پایه وقفه پالس بدم و فقط با یه لمس کوچیک دیگر پایه های میکرو یا حتی زمین وقفه میزنه
این مشکل منه از نویز متنفرم حتی اگه با کد رفع شه باز شب خوابم نمیبره



قبلا امتحان کردم هیچ تاثیری نداشت
نویزی که به وجود میاد به دلیل cross talk و موارد دیگه مربوط به این مبحث میشه که با اصلاح pcb و رعایت چندتا قانون ساده تا حد زیادی اون ها رو کاهش داد
در ضمن با کاهش ولتاژ تغدیه تو مدارها نویز خودش رو بیشتر نشون میده
برای فیلتر rc میتونی با افزایش ظرفیت خازن اثر فیلتر رو بهتر کنی