سلام و احترام.
من یک مدار دارم که دور موتور رو کامل و دقیق میخونه و کنترل میکنه.(البته باید این کار رو بکنه).
اوپتی کانتر به پایه DDRD.3 از میکرو ATMEGA32 وصل هست(همون INT1).
الان با این کدها میتونم بشمارم و نمایش بدم.
اما من نمیخوام که بشماره. میخوام دور بر دقیقه رو محاسبه کنم.
دستگاه قراره یک موتور رو تا 5000 دور بر دقیقه بخونه. بسیار دقیق.(اون شیعی که جلوی اوپتی کانتر رد میشه هر دور، 2 بار رد میشه).
حالا من چطور میتونم در لحظه بخونم و نمایش بدم؟
ممنون میشم راهنمایی بفرمایید. (کدویژن AVR).
من یک مدار دارم که دور موتور رو کامل و دقیق میخونه و کنترل میکنه.(البته باید این کار رو بکنه).
اوپتی کانتر به پایه DDRD.3 از میکرو ATMEGA32 وصل هست(همون INT1).
الان با این کدها میتونم بشمارم و نمایش بدم.
کد:
#include <mega32a.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> #include <alcd.h> #include <stdbool.h> unsigned int count = 0; unsigned char str[16]; interrupt [EXT_INT1] void ext_int1_isr(void) { count ++; } void main(void) { DDRD.3 = 0; PORTD.3 = 1; GICR |= (1<<INT1) | (0<<INT0) | (0<<INT2); // INT1: On MCUCR = (1<<ISC11) | (1<<ISC10) | (0<<ISC01) | (0<<ISC00); // INT1 Mode: Rising Edge GIFR = (1<<INTF1) | (0<<INTF0) | (0<<INTF2); lcd_init(16); #asm("sei") while (1) { lcd_gotoxy(1,1); lcd_putsf("COUNT = "); sprintf(str,"%04d",count); lcd_puts(str); lcd_gotoxy(8,1); } }
اما من نمیخوام که بشماره. میخوام دور بر دقیقه رو محاسبه کنم.
دستگاه قراره یک موتور رو تا 5000 دور بر دقیقه بخونه. بسیار دقیق.(اون شیعی که جلوی اوپتی کانتر رد میشه هر دور، 2 بار رد میشه).
حالا من چطور میتونم در لحظه بخونم و نمایش بدم؟
ممنون میشم راهنمایی بفرمایید. (کدویژن AVR).
دیدگاه