دوستان سلام.
پروژه ای هست که نیاز دارم عرض پالس رو درش اندازه بگیرم در حقیقت میخوام میزان توانی که به دستگاه منتقل میشه رو اندازه بگیرم(عرض پالس مثبت)
میکروکنترلر ATXmega32A4AU هست.
کدهایی که در اینترنت در این زمینه هست رو اغلبش رو بررسی کردم. کد رو به صورت زیر نوشتم:
کد سه قسمت داره، یکی تنظیمات پورت و تظیمات event system، تنظیمات تایمر و آخری هم که تابع وقفه هست.
مشکل اینه که بدون اینکه سیگنالی اعمال بشه (حالت بدون سیگنال سطح ولتاژ 1 هست(3.3V) ) برنامه دائم میره داخل وقفه.
پورت رو به صورت جداگانه بررسی کردم و وقفه خارجی اون رو فعال کردم به درستی کار میکنه.
حتی زمانی که قسمت زیر از کد رو هم غیر فعال میکنم باز زیر روال وقفه اجرا میشه:
ممنون میشم اگه کسی از دوستان تجربه ای در این زمینه داره به اشتراک بذاره.
سپاس فراوان
پروژه ای هست که نیاز دارم عرض پالس رو درش اندازه بگیرم در حقیقت میخوام میزان توانی که به دستگاه منتقل میشه رو اندازه بگیرم(عرض پالس مثبت)
میکروکنترلر ATXmega32A4AU هست.
کدهایی که در اینترنت در این زمینه هست رو اغلبش رو بررسی کردم. کد رو به صورت زیر نوشتم:
کد:
//------------ Pulse width capture pin config PORT_SetPinAsInput(&PORTC,PIN0_bp); PORT_ConfigurePins(&PORTC,PIN0_bm, false, false, PORT_OPC_TOTEM_gc, PORT_ISC_BOTHEDGES_gc); EVSYS_SetEventSource(0,EVSYS_CHMUX_PORTC_PIN0_gc); //-------- Pulse width capture TC_SetPeriod(&TCC0,0xffff);// 0x04e2 => 10 ms TC0_ConfigInputCapture(&TCC0,TC_EVACT_PW_gc | TC_EVSEL_CH0_gc); TC0_EnableCCChannels(&TCC0,TC0_CCAEN_bm); TC0_SetCCAIntLevel(&TCC0,TC_CCAINTLVL_MED_gc); TC0_ConfigClockSource( &TCC0, TC_CLKSEL_DIV1_gc); ISR(TCC0_CCA_vect) { PWMWidth=0; PWMWidth =TC_GetCaptureA( &TCC0 ); // read position Flags.LCDSHW=1; // TCD0.CNT=0; // reset count }
کد سه قسمت داره، یکی تنظیمات پورت و تظیمات event system، تنظیمات تایمر و آخری هم که تابع وقفه هست.
مشکل اینه که بدون اینکه سیگنالی اعمال بشه (حالت بدون سیگنال سطح ولتاژ 1 هست(3.3V) ) برنامه دائم میره داخل وقفه.
پورت رو به صورت جداگانه بررسی کردم و وقفه خارجی اون رو فعال کردم به درستی کار میکنه.
حتی زمانی که قسمت زیر از کد رو هم غیر فعال میکنم باز زیر روال وقفه اجرا میشه:
کد:
EVSYS_SetEventSource(0,EVSYS_CHMUX_PORTC_PIN0_gc);
سپاس فراوان
دیدگاه