من میخواهم طوری تایمر را برنامه ریزی کنم که هر 15.3میکرو ثانیه یک اینتراپت بدهد ،محاسبات مربوط به آن را انجام دادم ،وقتی برنامه را اجرا می کنم تنها یکبار پس از 15میکروثانیه اینتراپت می دهد.من به این صورت چک کردم که باید یکی از پین های پورت B پس از هز 15.3میکروثانیه تغییر وضعیت بدهد که تنها یک مرتبه تغییر وضعیت داد.؟؟؟!!
محاسبات:فرکانس مورد استفاده در تایمر 16مگاهرتز و بدون استفاده از ضریب تقسیم.
بنابراین مدت زمان لازم برای یک شمارش:1/16000000=62.5ns
تعداد پالس لازم برای تولید مدت زمان 15.3میکروثانیه:15.3ms/62.5ns=245
مقدار لازم در TCNT0=256-245=11=0X0B
برنامه توسط کدویزارد:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xb0;
PORTB.0=~PORTB.0;
}
محاسبات:فرکانس مورد استفاده در تایمر 16مگاهرتز و بدون استفاده از ضریب تقسیم.
بنابراین مدت زمان لازم برای یک شمارش:1/16000000=62.5ns
تعداد پالس لازم برای تولید مدت زمان 15.3میکروثانیه:15.3ms/62.5ns=245
مقدار لازم در TCNT0=256-245=11=0X0B
برنامه توسط کدویزارد:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xb0;
PORTB.0=~PORTB.0;
}
دیدگاه