Em đang tìm hiểu về Input Capture của con AVR. Em thử cái hàm để đếm cạnh xung lên, xuống của ngõ vào, nhưng không hiểu sao em nhận được cái biến dem chỉ tăng đến 1A là ngưng. Nhưngi nếu ở chương trình chính em xét cái biến dem đó thì nó lại luôn = 0. Mấy bác xem lỗi dùm em, em cám ơn.
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
TCNT1 = 0; //
dorong = ICR1/4 ; // Xung clock atmega 4MHz
dem ++
truyenfile (dem); // truyen ve may tinh
if (PINB.0==1) TCCR1B = 0x41;// Chon xung ke tiep input ngat canh len
else TCCR1B = 0x01; // Chon xung ke tiep input ngat canh xuong
}
Cái hình này là em nhận trên máy tính
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
TCNT1 = 0; //
dorong = ICR1/4 ; // Xung clock atmega 4MHz
dem ++
truyenfile (dem); // truyen ve may tinh
if (PINB.0==1) TCCR1B = 0x41;// Chon xung ke tiep input ngat canh len
else TCCR1B = 0x01; // Chon xung ke tiep input ngat canh xuong
}
Cái hình này là em nhận trên máy tính
Trở lại đề tài cũ. Em có ý định phát lại tín hiệu hồng ngoại đó. Em cho lưu lại ICR1 khi có ngắt lên, xuống tức thu được duty của xung. Nếu muốn phát ra led hồng ngoại các tín hiệu đó thì dùng Timer phát ra sóng mang 38Khz dựa vào duty mà delay ON,OFF Timer. Như vậy thì có được không ?
Comment