با سلام خدمت دوستان عزیز
من کار با AVR رو یه مدتی میشه شروع کردم، تو بحث تایمر کانتر ها به مشکل برخورد کردم. از Mega8 استفاده میکنم و میخوام تایمر کانتر صفر رو استفاده کنم برای تولید تاخیر، یعنی یه Led روشن میکنم و میخوام حدود 1 ثانیه که با تایمر تولید میکنم روشن بمونه بعد حدود یک ثانیه خاموش بمونه. برنامه ای که نوشتم اینه:
ولی کار نمیکنه و Led همینطور روشن میمونه. از اسیلاتور داخلی 1 مگ استفاده میکنم که با توجه به اینکه TCCR0=0x05 گذاشتم فرکانسی کع تایمر باید با اون شمارش رو انجام بده حدود 976 هرتز میشه ، یعنی هر شمارش حدود 1 میلی ثانبه طول میکشه و تا سرریز شدن تایمر 256میلی ثانیه باید Led روشن بمونه. ولی کار نمیکنه. مشکل از کجاست، میتونین راهنماییم کنین؟
من کار با AVR رو یه مدتی میشه شروع کردم، تو بحث تایمر کانتر ها به مشکل برخورد کردم. از Mega8 استفاده میکنم و میخوام تایمر کانتر صفر رو استفاده کنم برای تولید تاخیر، یعنی یه Led روشن میکنم و میخوام حدود 1 ثانیه که با تایمر تولید میکنم روشن بمونه بعد حدود یک ثانیه خاموش بمونه. برنامه ای که نوشتم اینه:
#include <mega8.h>
#include <delay.h>
void main(void)
{
DDRB=0xFF;
PORTB=0x00;
TCCR0=0x00;
TCNT0=0x00;
while (1)
{
TCCR0=0x05;
while(!(TIFR&0x02))
{
PORTB=0x01;
}
PORTB=0x00;
TIFR|=0x02;
delay_ms(500);
}
}
#include <delay.h>
void main(void)
{
DDRB=0xFF;
PORTB=0x00;
TCCR0=0x00;
TCNT0=0x00;
while (1)
{
TCCR0=0x05;
while(!(TIFR&0x02))
{
PORTB=0x01;
}
PORTB=0x00;
TIFR|=0x02;
delay_ms(500);
}
}
ولی کار نمیکنه و Led همینطور روشن میمونه. از اسیلاتور داخلی 1 مگ استفاده میکنم که با توجه به اینکه TCCR0=0x05 گذاشتم فرکانسی کع تایمر باید با اون شمارش رو انجام بده حدود 976 هرتز میشه ، یعنی هر شمارش حدود 1 میلی ثانبه طول میکشه و تا سرریز شدن تایمر 256میلی ثانیه باید Led روشن بمونه. ولی کار نمیکنه. مشکل از کجاست، میتونین راهنماییم کنین؟
دیدگاه