QC

AVR Timer Interrupts

 Basics

   Chúng ta đã trình bày những kiến thức cơ bản về Lập trình bộ định thời AVR, trong ví dụ về Timer 1, chúng ta đã thấy rằng chúng ta phải theo dõi các Flags để kiểm tra xem Timer có bị tràn xuống hay không, điều này làm cho chương trình chính phụ thuộc vào trạng thái của các cờ. Bộ hẹn giờ là đơn vị độc lập bên trong bộ điều khiển vi mô và để sử dụng đầy đủ chúng, chúng tôi sẽ cấu hình và sử dụng chúng với Ngắt. Điều này làm cho CPU không bị bỏ qua các cờ và bộ hẹn giờ có thể tự hoạt động. Khi tác vụ định thời kết thúc, nó sẽ ngắt và thông báo cho CPU.

Đối với bộ đếm thời gian TIMER 0, số đếm đi từ 0 đến 255 và cuộn qua. Cùng với đó cờ hẹn giờ vượt dòng được thiết lập và nó có thể được sử dụng để kích hoạt ngắt.



Chúng ta hãy lặp lại cùng một ví dụ về nhấp nháy đèn LED được kết nối với PD4 ở độ trễ 100ms với Bộ hẹn giờ 1 (timer 1)  sử dụng Ngắt.

chúng ta đang sử dụng cờ Timer OverFlow, giá trị 65536 - 1562 = 63974 được tải trong TCNT1.

Các bước để định cấu hình Ngắt bộ hẹn giờ (TIMER).

-Load the TCNT1 register with the value calculated above.

-Set CS10 and CS12 bits to configure pre-scalar of 1024

-Enable timer1 overflow interrupt(TOIE1), the register is shown below

-Enable global interrupts by setting global interrupt enable bit in SREG

-Toggle the LED in the ISR and reload the TCNT value.

Timer/Counter Interrupt Mask Register
D7D6D5D4D3D2D1D0
--TICIE1OCIE1AOCIE1BTOIE1--

Code

#include<avr/io.h>
#include<avr/interrupt.h>

#define LED PD4

ISR (TIMER1_OVF_vect)    // Timer1 ISR
{
	PORTD ^= (1 << LED);	
	TCNT1 = 63974;   // for 1 sec at 16 MHz
}

int main()
{
	DDRD = (0x01 << LED);     //Configure the PORTD4 as output
	
	TCNT1 = 63974;   // for 1 sec at 16 MHz	

	TCCR1A = 0x00;
	TCCR1B = (1<<CS10) | (1<<CS12);;  // Timer mode with 1024 prescler
	TIMSK = (1 << TOIE1) ;   // Enable timer1 overflow interrupt(TOIE1)
	sei();        // Enable global interrupts by setting global interrupt enable bit in SREG
	
	while(1)
	{
		
	}
}


Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...