سلام
من در برنامه ای نیاز به شمارش تعداد پالس ها دارم. به این صورت که هر ثانیه یکبار تعداد پالسهای شمرده شده را از طریق ارتباط سریال به pc ارسال میکنه. برای تولید 1 ثانیه هم از کریستال ساعتی و RTC میکرو atmega16 استفاده کردم. ولی وقتی که پالس هایی با فرکانس 10KHz به پایه شمارنده اعمال میکنم، تعداد پالس های شمرده شده در هر ثانیه به جای 10000، عددهایی با اختلاف تقریبا 300 تا نشون میده (مثلا 10370، 10377، 10350، ...).
برای تست اینکه آیا RTC واقعا یک ثانیه را اندازه میگیرد، برنامه ای نوشتم که تایمر 1 و تایمر 2 (همون RTC) با هم راه اندازی میکنم بعد هر وقت تایمر 2 سرریز شد مقدار موجود در تایمر 1 را میخوانم. در این جا به جای اینکه تایمر 1 عدد 1000000 (معادل 1 ثانیه) را نشان بدهد عددهای 1035519، 1036040، 1035800 و... را نشان میدهد.
آیا باید کریستال ساعتی ضریب کالبراسیون تعریف کرد؟؟ در دیتاشیت نوشته شده که تایمر 2 دارای ریجستر بافر میباشد. آیا مشکل از این هست؟
من در برنامه ای نیاز به شمارش تعداد پالس ها دارم. به این صورت که هر ثانیه یکبار تعداد پالسهای شمرده شده را از طریق ارتباط سریال به pc ارسال میکنه. برای تولید 1 ثانیه هم از کریستال ساعتی و RTC میکرو atmega16 استفاده کردم. ولی وقتی که پالس هایی با فرکانس 10KHz به پایه شمارنده اعمال میکنم، تعداد پالس های شمرده شده در هر ثانیه به جای 10000، عددهایی با اختلاف تقریبا 300 تا نشون میده (مثلا 10370، 10377، 10350، ...).
برای تست اینکه آیا RTC واقعا یک ثانیه را اندازه میگیرد، برنامه ای نوشتم که تایمر 1 و تایمر 2 (همون RTC) با هم راه اندازی میکنم بعد هر وقت تایمر 2 سرریز شد مقدار موجود در تایمر 1 را میخوانم. در این جا به جای اینکه تایمر 1 عدد 1000000 (معادل 1 ثانیه) را نشان بدهد عددهای 1035519، 1036040، 1035800 و... را نشان میدهد.
آیا باید کریستال ساعتی ضریب کالبراسیون تعریف کرد؟؟ در دیتاشیت نوشته شده که تایمر 2 دارای ریجستر بافر میباشد. آیا مشکل از این هست؟
کد:
interrupt [TIM1_OVF] void timer1_ovf_isr(void) { T1OVF++; } interrupt [TIM2_OVF] void timer2_ovf_isr(void) { #asm("cli") count=TCNT1; mult=T1OVF; TCNT1=0; T1OVF=0; #asm("sei") printf("%5u",count); putchar('c'); printf("%1u",mult); } void main(void) { while (1) { if(start==1) { TCCR2=0x05; delay_us(60); TCCR1B=0x02; start=0; } }
دیدگاه