با سلام خدمت دوستان
بنده می خواستم تایمر صفر ATxmega16A4Uرو در مد compare استفاده کنم اما وقتی تنظیمات را رو انجام میدم و
میکرو رو پروگرام می کنم میکرو وقتی به مقدار رجیستر TCC0.CCA میرسه وارد وقفه مقایسه A نمیشه و در هنگام
اور فلو وارد روتین وقفه( ISR (TCC0_CCA_vect میشه در ضمن وقتی تایمر رو در برای وقفه اور فلو تنظیم می کنیم به درستی کار می کنه از دوستان خواهشم می کنم به کد زیر نگاهی کنند و اگر موردی هست اون رو تصحیح کنند.
کریستال 16مگا خارجی و رجیستر PMIC.CTRL مقدار دهی شده است.
باتشکر از لطف دوستان
بنده می خواستم تایمر صفر ATxmega16A4Uرو در مد compare استفاده کنم اما وقتی تنظیمات را رو انجام میدم و
میکرو رو پروگرام می کنم میکرو وقتی به مقدار رجیستر TCC0.CCA میرسه وارد وقفه مقایسه A نمیشه و در هنگام
اور فلو وارد روتین وقفه( ISR (TCC0_CCA_vect میشه در ضمن وقتی تایمر رو در برای وقفه اور فلو تنظیم می کنیم به درستی کار می کنه از دوستان خواهشم می کنم به کد زیر نگاهی کنند و اگر موردی هست اون رو تصحیح کنند.
کریستال 16مگا خارجی و رجیستر PMIC.CTRL مقدار دهی شده است.
کد:
void tc0_initi() { TCC0.CTRLA = (TCC0.CTRLA & (~TC0_CLKSEL_gm)) | TC_CLKSEL_OFF_gc; TCC0.CTRLB=(TCC0.CTRLB & (~(TC0_CCAEN_bm | TC0_CCBEN_bm | TC0_CCCEN_bm | TC0_CCDEN_bm | TC0_WGMODE_gm))) | TC_WGMODE_NORMAL_gc; TCC0.INTCTRLA=(TCC0.INTCTRLA & (~(TC0_ERRINTLVL_gm | TC0_OVFINTLVL_gm))) | TC_ERRINTLVL_OFF_gc | TC_OVFINTLVL_OFF_gc; TCC0.INTCTRLB=(TCC0.INTCTRLB & (~(TC0_CCDINTLVL_gm | TC0_CCCINTLVL_gm | TC0_CCBINTLVL_gm | TC0_CCAINTLVL_gm))) | TC_CCDINTLVL_OFF_gc | TC_CCCINTLVL_OFF_gc | TC_CCBINTLVL_OFF_gc | TC_CCAINTLVL_LO_gc; TCC0.CNT=0; TCC0.PER=15000; TCC0.CCA=10000; TCC0.CCB=5000; TCC0.CTRLA=(TCC0.CTRLA & (~TC0_CLKSEL_gm)) | TC_CLKSEL_DIV8_gc; }
دیدگاه