HỌ VI ĐIỀU KHIỂN AVR
Trang 1MỤC LỤC
MỤC LỤC 2
LỜI NÓI ĐẦU 3
Chương I 4
CƠ SỞ LÝ THUYẾT 4
I.1 HỌ VI ĐIỀU KHIỂN AVR 4
I.1.1 GIỚI THIỆU CHUNG 4
I.1.1.1 Giới thiệu AT90S8535 4
I.1.1.2 Tính năng của AT90S8535 5
I.1.3 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU CỦA AVR 7
I.1.3.1 Sơ đồ chân tín hiệu: 7
I.1.3.2 Sơ đồ khối chức năng 8
I.1.4 BỘ NHỚ CỦA AVR : 13
II.1.5 CẤU TRÚC NGẮT : 14
I.1.5.1 Chức năng điều khiển ngắt : 14
I.1.5.2 Tổ chức ngăn xếp trong AVR: 15
I.1.6 GHÉP NỐI NỐI TIẾP : 15
I.1.7 MỘT SỐ LỆNH CƠ BẢN 17
I.1.8 CẤU TRÚC 1 CHƯƠNG TRÌNH ĐIỀU KHỂN AVR 18
I.2 VI MẠCH VÀO RA ĐA NĂNG PPI – 8255A 19
I.2.1 GIỚI THIỆU PPI – 8255 19
I.2.2 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU PPI-8255 19
I.2.2.1 Sơ đồ khối :( hình 3) 19
I.2.2.2 Sơ đồ chân tín hiệu :( hình 4) 20
I.2.3 NGUYÊN LÝ HOẠT ĐỘNG CỦA 8255A 21
I.2.3.1 Chức năng điều khiển ngắt : 22
I.2.3.2 Các chế độ hoạt động : 22
I.2.4 CÁC BƯỚC VIẾT CHƯƠNG TRÌNH 23
Chương II 24
THỰC NGHIỆM - GHÉP NỐI AVR VÀ 8255 24
II.1 SƠ ĐỒ KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A 24
II.2 SƠ ĐỒ CHI TIẾT KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A 25
II.3 THUẬT TOÁN ĐIỀU KHIỂN 27
KẾT LUẬN 29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 30
Trang 2
LỜI NÓI ĐẦU
Công nghệ thông tin đã phát triển một cách nhanh chóng trong những nămgần đây và có nhiều bước tiến nhảy vọt trên nhiều mặt Nghành công nghệ thôngtin ở nước ta tuy còn non trẻ nhưng tốc độ phát triển khá nhanh và đang dần đượcứng dụng trong nhiều lĩnh vực của nền kinh tế, góp phần thúc đẩy vào sự pháttriển của xã hội
Việc đưa tin học hóa vào công việc kỹ thuật giảm bớt sức lao động củacon người, tiết kiệm được thời gian, độ chính xác cao và tiện lợi hơn rất nhiều sovới việc làm thủ công trên các công cụ thông thường Việc ghép nối máy tính vớicác thiết bị ngoại vi giúp con người dễ dàng theo dõi các thông số kỹ thuật tại mọithời điểm Đưa ra các quyết định kịp thời nhất nhanh và chính xác nhất
Tìm hiểu các chip khả lập trình là đề tài của em trong lần thực tập cơ
sở này. Mục đích của đề tài này tìm hiểu các chip cho phép lập trình chẳng hạn
như các chip 8255, 8051, AVR cách thức hoạt động và việc ghép nối chúng với hệthống máy vi tính cũng như khi chúng làm việc độc lập
Do còn nhiều hạn chế về thời gian, về kiến thức và điều kiện làm việccũng như sự thử nghiện thực tế, việc tìm hiểu của em chắc chắn còn nhiều sai sót
Em rất mong nhận được sự góp ý của các thầy cô cùng các bạn để có thể hiểu hơn
về sự hoạt động của các chip và thời gian tới có thể lập trình cho các chip hoạtđộng Em xin chân thành cảm ơn
Sinh viên : Lê Văn Chung
Trang 3Chương I
CƠ SỞ LÝ THUYẾT
I.1 HỌ VI ĐIỀU KHIỂN AVR
I.1.1 GIỚI THIỆU CHUNG
Ngày nay những ứng dụng của vi điều khiển đã đi xâu vào trong đời sốngsinh hoạt và sản xuất của con người Có một thực tế là hầu hết các thiết bị điềukhiển, thiết bị tự động, thiết bị điện dân dụng bây giờ đều có sự góp mặt của các viđiều khiển và vi xử lý Ứng dụng của vi điều khiển đã làm cho các thiết bị trở lên
ổn định hơn hoạt động tốt hơn, ổn định hơn
Trên thị trường có rất nhiều họ vi điều khiển: họ 8051 của Intel, 68HC11của Motorola, Z80 của hãng Eilog, PIC của hãng Microchip, H8 của Hitachi, vv
và cuối cùng là AVR của hãng Atmel AVR là họ Vi điều khiển khá mới trên thịtrường cũng như đối với người sử dụng Ðây là họ VÐK được chế tạo theo kiếntrúc RISC ( Reduced Intruction Set Computer) có cấu trúc khá phức tạp Ngoài cáctính năng như các họ VÐK khác, nó còn tích hợp nhiều tính năng mới rất tiện lợicho người thiết kế và lập trình Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế làhầu hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữbậc cao HLL ( Hight Level Language) để lâp trình ngay cả với loại chip xử lí 8 bittrong dó ngôn ngữ C là ngôn ngữ phổ biến nhất Tuy nhiên khi biên dịch thì kíchthước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly Hãng Atmel nhậnthấy rằng cần phải phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu
sự chênh lệch kích thước mã đã nói trên Và kết quả là họ vi điều khiển AVR rađời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thựchiện lệnh đúng trong 1 chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanhhơn các họ vi điều khiển khác từ 4 đến 12 lần Vì thế nghiên cứu AVR là một đềtài khá lý thú và giúp cho sinh viên biết thêm một họ vi điều khiển vào loại mạnhnhất hiện nay
I.1.1.1 Giới thiệu AT90S8535
AT 90S8535 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựatrên kiến trúc RISC Với công nghệ này cho phép các lệnh thực thi chỉ trong mộtchu kì nhịp xung, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ởtần số 1 Mhz Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá mức độ
Trang 4tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý Phần cốt lõi của AVR kết hợptập lệnh phong phú và số lượng với 32 thanh ghi làm việc đa năng Toàn bộ 32thanh ghi đều được nối trực tiếp với ALU ( Arithmetic Logic Unit), cho phép truycập 2 thanh ghi độc lập trong một chu kì xung nhịp Kiến trúc đạt được có tốc độ
xử lý nhanh gấp 10 lần vi điều khiển dạng CISC thông thường
I.1.1.2 Tính năng của AT90S8535
Ðược chế tạo theo kiến trúc RISC, hiệu suất cao và điện năng tiêu thụ thấp
Bộ lệnh gồm 118 lệnh, hầu hết đều thực thi chỉ trong một chu kì xung nhịp
32x8 thanh ghi làm việc đa năng
Cổng Giao diện nối tiếp SPI cho phép lập trình ngay trên hệ thống
8KB Flash ROM lập trình được ngay trên hệ thống
Cho phép 1000 lần ghi/ xoá
Tốc độ xử lý lệnh đạt đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây
Bộ đếm thời gian thực ( RTC) với bộ dao động và chế độ đếm tách biệt
2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số táchbiệt và chế độ bắt mẫu
Ba kênh điều chế độ rộng xung PWM
Có đến 13 interrupt ngoài và trong
Bộ định thời Watchdog lập trình được
Tự động reset khi treo máy
Bộ so sánh tương tự
Ba chế độ ngủ : chế độ rảnh rỗi ( Idle), tiết kiệm điện ( Power save) và chế
độ Power Down
Trang 5 Sau đây là bảng so sánh những đặc tính giữa AT90S8535 với họ AT89C51một trong những chíp trong họ AVR nhưng đời cũ hơn.
Bảng 1 :
Flash ROM 8K Byte có thể lập trình trên
Bộ Timer - 2 bộ timer 8 bit
- 1 bộ timer 16 bit
- 1 bộ watchdog timer
- 2 bộ timer 16 bit
: Bộ ADC - 1 bộ ADC 8 kênh 10 bit - Không
Giao thức truyền nối
3V:
- Trạng thái tích cực :
6.4mA – Trạng thái rỗi : 1.9mA – Trạng thái Power Down :
40 Ua
Trang 6I.1.3 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU CỦA AVR
I.1.3.1 Sơ đồ chân tín hiệu:
VCC: điện áp nguồn cung cấp cho AVR hoạt động
GND: tín hiệu đất
PA0-PA7, PB0- PB7, PC0- PC7, PD0- PD7 : là các cổng vào ra 8 bit
RESET : khi chân reset ở mức thấp sẽ sinh ra tín hiệu reset Khi một xung
tín hiệu reset kéo dài hơn 50 ns sẽ sinh ra 1 reset, sự kiện này xảy ra khi
PB 5 (MOSI): đưa vào bus Master output/slave
PB 6 (MISO) đưa ra bus Master input/slave
PB 7 (SCK) SPI Bus serial clock
RXD : UART nhận dòng dữ liệu TXD: UART gửi dòng dữ liệu INT0 : Ngắt bên ngoài 0 INT1: Ngắt bên ngoài 1 OC1B: time /counter1 so sánh lối
ra OC1A: so sánh lối vào ICP: time/ counter 1 input capture thanh ghi chỉ để đọc
OC2 : Time/cuonter2 so sánh lối ra
Hình 1: Sơ đồ chân tín hiệu của AVR
Trang 7 XTAL1: đưa tín hiệu tới 1 máy tạo dao động khuếch đại và được dùng làmxung đồng hồ cho hệ thống mạch.
XTAL2: lấy tín hiệu từ 1 máy tạo dao động
AVCC : nguồn cung cấp cho bộ biến đổi A/D
AREF : chuyển tín hiệu tương tự cho đầu vào của bộ biến đổi A/D
AGND: tín hiệu đất
I.1.3.2 Sơ đồ khối chức năng
Trong AT90S8535 có thêm bộ nhớ EEPROM 512 byte Bảng vecto ngắtđược đặt ở địa chỉ đầu tiên của bộ nhớ program memory Ngoài ra còn có bộ nhớvào/ra là 32 thanh ghi đa năng được thiết kế giống như SRAM và có thể trao đổi
dữ liệu theo cả 3 kiểu giống như SRAM hoặc giống như các thanh ghi I/O 32
thanh ghi đó bao gồm: SREG thanh ghi trạng thái, SP thanh ghi con trỏ ngăn xếp, thanh ghi che ngắt GIMSK, thanh ghi cờ ngắt GIFR, thanh ghi điều khiển MCUCR, thanh ghi trạng thái bộ xử lý MCUSR, thanh ghi TIMER/COUNTER0 TCNT0, thanh ghi điều khiển TIMER/COUNTER1A TCCR1A, thanh ghi điều khiển TIMER/ COUNTER1B TCCR1B, thanh ghi TIMER/COUNTER1, các thanh ghi so sánh lối ra bộ OCR1AH, OCR1AL, các thanh ghi so sánh lối vào OCR1BH, OCR1BL, ICR1H, ICR1L, thanh ghi bộ định thời Watchdog WDTCR, thanh ghi địa chỉ bộ nhớ EEPROM EEAR, thanh ghi dữ liệu bộ nhớ EEDR, mỗi cổng A, B, C, D có 3 thanh ghi: hướng dữ liệu, dữ liệu, chân dữ liệu
PIN, thanh ghi dữ liệu, trạng thái, điều khiển cổng truyền dữ liệu nối tiếp SPI, vàcủa cổng song song UART , thanh ghi tốc độ của UART, thanh ghi trạng thái, điềukhiển của bộ so sánh tương tự ACSR
Trang 8ANALOG MUX ADC
TIME/
COUNTER 8
GENERAL PUSPOSE REGISTER
+ -
WATCH DOG TIME STACK
POINTER
SRAM
INSTRUCTION REGISTER
PROGRAM FLASH
PROGRAM COUNTER
TIMING AND CONTROL
OBCILLATOR OBCILLATOR
INTERNAL OBCILLATOR
INTERUPT UNIT EEPROM
INSTRUCTION DECODER
CONTROL LINE
X Y Z
ALUSTATUS REGISTER
G
PO RT B DA
TA RE GIS TE
R
PO RT B
G D RT PODA
TA RE GIS TE
R D RT PO
PDO-PD7
XTAL2 XTAL1
8 BIT DATA BUS
Trang 9 Các thanh ghi X, Y, Z là các thanh ghi được thêm vào các chức năng cho cácmục đích thông thường Chúng thường được dùng như các thanh ghi controltrong việc truy cập bộ nhớ.
Khối ALU (Arithmetic Logic Unit) : Đây là khối thực thi việc điều hành AVR
nó được kết nối trực tiếp cả với 32 thanh ghi trong cùng xung nhịp Khối ALU
có 3 chức năng chính là thực thi các toán hạng, các phép toán logic, các phéptoán trên bit
Bộ định thời Watchdog timer: đây là 1 định thời riêng biệt từ một chip tạo
dao động Với 8 chu kỳ đồng hồ khác nhau có thể được lựa chọn để quyết địnhthời điểm reset Nếu thời điểm reset không có hiệu lực bởi 1 bộ định thời nàothì việc reset của At90s8535 được thực hiện từ vecto reset Việc reset hệ thốngnhằm tránh các sai lệch dữ liệu trong AVR vì 1 lý do nào đó chẳng hạn như sụt
áp với 1 thời gian quá 1 mức nào đó
EEPROM bộ nhớ truy cập đọc/ ghi: tốc độ ghi khoảng chừng 2,5 đến 4 ms và
nó được quyết định bởi điện áp Vcc Khi muốn ghi dữ liệu tới thanh ghiEEPROM ta thực hiện ghi dữ liệu tới thanh ghi dữ liệu EEDR Khi muốn đọc
dữ liệu trong EEPROM ta phải chờ sau khi quá trình ghi thực hiện xong.EEPROM có các ngắt đặc biệt được thiết lập khởi tạo nhận dữ liệu mới khi nósẵn sàng Khi EEPROM đọc hoặc ghi thì cpu tạm nghỉ trong 2 chu kỳ đồng hồtrước khi lệnh tiếp theo được thực hiện EEPROM có 2 thanh ghi địa chỉEEARH , EEARL, 1 thanh ghi dữ liệu EEDR, và 1 thanh ghi điều khiểnEECR
o Bit 1: EEPROM Write Enable: là tín hiệu EEPROM cho phép ghi vàoEEPROM khi địa chỉ và dữ liệu được thiết lập chính xác Bit EEWE cầnthiết lập để viết giá trị tới EEPROM Bit EEMWE cần phải đặt ở mức logic
1 khi viết tới EEWE, nếu không sẽ không viết được tới EEPROM Thủ tụckhi viết tới EEPROM qua các bước sau:
1 Đợi đến khi EEWE có giá trị 0
2 Viết địa chỉ mới tới EEPROM tại thanh ghi EEARL và EEARH(theo tuỳ chọn)
3 Viết dữ liệu mới vào thanh ghi EEDR cho EEPROM
4 Đặt mức logic 1 tại bit EEMWE trong thanh ghi control EECR
5 Trong 4 chu kỳ đồng hồ sau khi thiết đặt EEMWE, nó viết mức logic
1 tới EEWE
Trang 10Nếu có 1 ngắt giữa bước 4 và 5 sẽ làm thất bại quá trình viết tới EEPROM
do vậy nên làm sạch các cờ ngắt trong thời gian 4 bước cuối để tránh cácvấn đề này Thời gian truy cập khi viết tiêu biểu là 2.5 ms tại VCC = 5vhoặc 4ms tại VCC = 2.77 V
o Bit 0: EERE: EEPROM Read Enable: EEPROM báo cho phép đọc khi địachỉ được thiết lập đúng bên trong thanh ghi địa chỉ EEAR
Time/Couter: AT90S8535 cung cấp 3 bộ Time 2 bộ 8 bit và 1 bộ 16 bit Có
thể tuỳ chọn đồng hồ không đồng bộ từ bộ tạo dao động ở bên ngoài Bộ tạodao động đó có thể dễ dàng tạo dao động ở tần số 32768 Khz Bộ Time/counter0: là 1 bộ định thời đơn gian dùng để đếm tiến từ giá trị đếm đã được nạp vào
Bộ đếm được tăng thêm 1 giá trị mỗi khi có thêm 1 tín hiệu đồng hồ ở lối vàocủa nó
UART: AT90S8535 có thể truyền song công thu phát không đồng bộ với
UART Các tính năng của chúng gồm có:
o Truyền dữ liệu với tốc độ cao
o Tốc độ cao tại tần số thấp của XTAL
o 8 hoặc 9 bit dữ liệu
o Lọc nhiễu
o Phát hiện tràn
o Phát hiện khung truyền lỗi
o Phát hiện bit start sai
o 3 ngắt riêng biệt thanh ghi data rỗng, TX hoàn thành, RX hoàn thành
o Đệm truyền và nhận
Việc truyền dữ liệu qua UART được khởi tạo bằng cách ghi dữ liệu vàothanh ghi dữ liệu I/O (UDR) Sau đó dữ liệu được truyền từ UDR đến thanhghi dịch truyền khi :
Khi có 1 ký tự mới được ghi tới UDR sau khi bit stop của ký tự trước đãđược dịch chuyển ra Thanh ghi dịch chuyển ra sẽ được nạp ngay tiếpđó
Ký tự mới được ghi tới UDR trước khi bit stop của ký tự trước đã đượcdịch đi Thanh ghi dịch chuyển ra sẽ được nạp khi bit stop của ký tựtrước đang được dịch chuyển ra
Thanh ghi dữ liệu vào/ra UART: trên thực tế chúng là 2 thanh ghinhưng có chung 1 địa chỉ vật lý Khi ghi dữ liệu vào địa chỉ này nó ghivào thanh ghi truyền dữ liệu Khi đọc từ địa chỉ này nó đọc từ thanh ghinhận dữ liệu
Thanh ghi trạng thái UART: dùng để giám sát trạng thái của của UART
o Bit 7: (Receive Complete)mức giá trị 1 cho biết UART đã nhận 1 byte
dữ liệu từ thanh ghi dịch bộ nhận
o Bit 6: (Transmit Complete) mức 1 cho biết 1 byte đã được dịchchuyển ra từ thanh ghi dịch và không có dữ liệu mới được ghi vào
o Bit 5: (Data Register Empty) UART sẵn sành nhận dữ liệu mới
o Bit 4: (Framing Error) báo lỗi khung truyền bằng cách kiểm tra parity
Trang 11o Bit 3: (Overrun Error) báo tràn dữ liệu khi 1 byte chưa được đọc trướckhi 1 byte mới được ghi tới.
Thanh ghi điều khiển UART:
o Bit 7: Mức 1 sinh ra 1 ngắt Receive Complete Interupt Khi bit RxC trongUSR là 1 thì cho phép các ngắt toàn cục
o Bit 6: Mức 1 sinh ra ngắt Transmint Complete Interupt Khi bit TxC trongUSR là 1 thì cho phép các ngắt toàn cục
o Bit 5: Khi bit này là 1 và bit UDRE trong USR là 1 thì cho phép các ngắttoàn cục
o Bit 4: Mức 1 cho phép bộ nhận của UART nhận dữ liệu
o Bit 3: Mức 1 cho phép bộ truyền dữ liệu được truyền dữ liệu
o Bit 2: Mức 1 thông báo ký tụe truyền sẽ có 9 bit
o Bit 1: Mức 1 thông báo bit thứ 9 đã được nhận
o Bit 0: Mức 1 thông báo bit thứ 9 đã được truyền
Các cổng I/O: có 4 cổng I/O là các cổng 8 bit.
Port A: có 3 vùng nhớ địa chỉ được cấp phát cho port A một cho thanh ghi dữ
liệu từ $ 1B -$3B, một cho thanh ghi hướng dữ liệu DDRA ($1A- $3A.) vàchân pin input của cổng A PINA ($19-$39) Có thể đặt giá trị riêng biệt cho tất
cả các chân của Port A Mức điện áp 20mA cho output và thấp hơn cho input.Port A có chức năng tuần tự giống như tín hiệu tương tự nhập cho bộ biến đổiADC
o Thanh ghi dữ liệu: Port A7- Port A0
o Thanh ghi hướng dữ liệu DDA7 – DDA0
o Thanh ghi chân pin input Pin A7- Pin A0
o Các chân của cổng A sẽ có chức năng in hoặc out khi các chân trên thangghi hướng dữ liệu và thanh ghi dữ liệu được thiết đặt khác nhau
Tất cả các cổng vào/ra đều có 3 địa chỉ vào ra đi kèm với chúng Ba địa chỉ cần đểđặt cấu hình cho các bit riêng biệt là lối vào hay ra ; địa chỉ khác được cần đến đểxuất ra dữ liệu tới các bit đó, địa chỉ thứ 3 được cần đến để đọc dữ liệu từ các chânđó( hoặc tất cả) được cấu hình thành lối vào
Bảng thiết đặt các bit DDAn và PortAn để có thể thiết đặt từng châncủacổng A là các cổng vào hặc ra:
I.1.4 BỘ NHỚ CỦA AVR :
Trang 12Bộ nhớ của AT90S8535 được chia làm 3 phần gồm có bộ nhớ cho chươngtrình program flash memory có độ lớn 4k x 16 có địa chỉ $000 đến $FFF Trongquá trình xử lý gọi các ngắt và trở về thì địa chỉ ngắt được đưa vào trong Stack,vùng địa chỉ này được tạo ra trên SRAM của AVR AT90S8535 có 512 byteSRAM có thể truy cập dễ dàng thông qua 5 mode chuyển đổi mà AVR này hỗ trợ.
Sơ đồ bộ nhớ của AVR:
Bộ nhớ chương trình: là loại bộ nhớ Flash dung lượng của bộ nhớ này phụ
thuộc vào bộ vi xử lý cụ thể trong cùng 1 họ Bộ nhớ chương trình truy cậptheo từng chu kỳ của đồng hồ, mỗi chu kỳ có thể nạp 1 lệnh để xử lý Bộ nhớchương trình cũng chứa các vecto ngắt bắt đầu ở địa chỉ $0000 Còn chươngtrình được lưu trữ từ địa chỉ ngay sau địa chỉ cuối dành cho ngắt
Bộ nhớ dữ liệu: Bộ nhớ này được chia làm các phần khác nhau:
Tập 32 thanh ghi có trong tất cả các lọai AVR
64 thanh ghi I/O, một số AVR có thể có nhiều hơn Thực chất là 1 phần
bộ nhớ SRAM có thể truy cập theo kiểu thanh ghi I/O hoặc như SRAM
Nó được dùng làm trung gian đến tất cả các bộ phận ngoại vi của AVR
Bộ nhớ SRAM bên trong AVR, có trong hầu hết các loại AVR Ngănxếp của chương trình cũng được lưu trữ ở đây
Bộ nhớ SRAM bên ngoài, có hay không là tùy vào người thiết kế
Bộ nhớ EEPROM: các loại AVR khác nhau có từ 64 byte đến 4kb bộ nhớ
EEPROM
Bộ nhớ EEPROM 8bit
8bit
$0000 $1F
Trang 13II.1.5 CẤU TRÚC NGẮT :
Thiết bị ngoại vi sẽ ngắt sự thực hiện của chương trình chính, bộ xử lýdừng việc thực hiện chương trình đang chạy để kiểm tra nguồn ngắt và thực hiệncác thao tác đáp ứng cần thiết : các bước để thực thi 1 ngắt là :
1 Thiết bị ngoại vi ngắt bộ vi xử lý
2 Bộ xử lý hoàn thành việc thực hiện lệnh hiện tại
3 Địa chỉ lệnh tiếp theo được đưa vào ngăn xếp
4 Địa chỉ đoạn lệnh chương trình ngắt được đưa vào bộ đệm
5 Bộ xử lý thực thi các lệnh của đoạn chương trình ngắt
6 Hoàn thành các lệnh ngắt và thông báo bằng lệnh RETI
7 Bộ xử lý nạp lệnh được lưu trữ trên ngăn xếp vào và tiếp tục chương trình.Các bước này cũng giống như quá trình thực hiện ngắt của các bộ xử lý khác.I.1.5.1 Chức năng điều khiển ngắt :
Khi muốn đặt 1 ngắt tới bộ vi xử lý ta đặt cờ ngắt bằng lệnh SEI khi đó cờngắt toàn cục trong thanh ghi trạng thái SREG được đưa lên mức logic 1 Và trướckhi chuyển sang phục vụ chương trình ngắt ta cần phải lưu trữ trạng thái của hệthống hiện tại Trạng thái của bộ vi xử lý được ghi lại trong thanh ghi SREG Do
đó ta cần phải lưu lại thanh ghi ghi này vào 1 thanh ghi khác và thanh ghi đókhông được dùng cho bất kỳ 1 mục đích nào khác Và trước khi lệnh RETI thanhghi này cần phải được khôi phục lại
Một cách khác để có thể lưu trữ thanh ghi này là dùng ngăn xếp (ta sẽ tìmhiểu kỹ hơn trong phần sau) Bằng các lệnh PUSH SREG và POP SREG ta sẽ cất
và khôi phục lại thanh ghi này một cách dễ dàng Trong khi 1 ngắt đang được phục
vụ bởi thanh ghi SIR thì việc các ngắt toàn cục khác bị cấm (giống như khi ta chothực thi lệnh CLI) Tuy nhiên ta vẫn có thể có khả năng cho phép 1 ngắt khác thựcthi bằng cách đặt lệnh SEI trong SIR Và nó được phục vụ bằng cách ngắt đoạnchương trình đang phục vụ cho ngắt trước đó Sau khi trở lại nó tiếp tục phục vụcho ngắt đang bị bỏ dở Việc cho phép các ngắt chen ngang hay không còn phụthuộc vào độ ưu tiên của ngắt đó trong bảng vecto ngắt, đó chính là thứ tự địa chỉcủa vecto ngắt đã được xắp xếp trong bộ nhớ Mức ưu tiên này cũng quyết địnhxem ngắt nào sẽ được phục vụ trước nếu có nhiều ngắt tại 1 thời điểm Tình huốngnày xuất hiện khi ngắt toàn cục bị cấm để cho phép 1 số phần cấp thiết của chươngtrình được thực thi Sau tình huống này chương trình cho phép các ngắt toàn cục.Bây giờ 2 ngắt Interupt0 và ngắt UART đều đã xuất hiện thì ngắt Interupt0 ngoài
Trang 14có độ ưu tiên cao hơn sẽ được thực thi trước sau đó thanh ghi ISR dùng cho ngắtUART sẽ được thực thi.
I.1.5.2 Tổ chức ngăn xếp trong AVR:
Để trở về sau ngắt hoặc chương trình con thì địa chỉ của lệnh tiếp theotrong chương trình phải được lưu trữ trước khi địa chỉ ngắt hoặc chương trình conđược đưa vào Thực chất ngăn xếp là phần trong bộ nhớ Sram nhưng nếu AVRkhông có Sram chẳng hạn như AVR AT90S1200 thì chúng có 1 ngăn xếp phầncứng Để có 1 ngăn xếp bằng phần mềm trên Sram thì cần phải khởi tạo 1 vùngnhớ bất kỳ trong Sram dùng làm ngăn xếp Để khởi tạo thì con trỏ ngăn xếp đượcnạp cùng với địa chỉ của bộ nhớ Sram Ngăn xếp được sử dụng khi một thủ tục(subroutine) được gọi hoặc 1 ngắt xuất hiện Ngăn xếp được từ địa chỉ bộ nhớ lớnhơn đến địa chỉ bộ nhớ nhỏ hơn Do đó khi 1 số dữ liệu được đẩy vào thì dữ liệuđược ghi tại địa chỉ con trỏ ngăn xếp hiện thời và con trỏ ngăn xếp giảm đi 1.Tương tự khi lấy dữ liệu thì con trỏ ngăn xếp trước tiên được giảm đi 1 sau đó dữliệu được lấy ra
I.1.6 GHÉP NỐI NỐI TIẾP :
Giao diện ghép nối nối tiếp SPI ( cho phép trao đổi dữ liệu tốc độ cao giữa
AVR AT90S8535 với thiết bị bên ngoài hoặc giữa các AVR với nhau Các đặctính của SPI bao gồm:
Song công di chuyển dữ liệu đồng bộ với 3 dây
Có điều khiển Master Slave
4 chế độ truyền theo bit có thể lập trình
Kết thúc của cờ ngắt truyền
Viết cờ tránh va chạm
Đánh thức từ chế độ rảnh rỗi
• LSB First or MSB First Data Transfer
o Bit 7 SPIE: SPI Interupt Enable : cho phép SPI thực thi ngắt nếu SPIF ởthanh ghi SPSR được thiết lập và cho phép ngắt
o Bit 6 SPE: SPI Enable: cho phép giao tiếp SPI khi bit này đặt là 1
o Bit 5 DORD: Data Order: khi bit có giá trị 1 thì LSB của từ dữ liệuđựợc truyền, là 0 thì MSB được truyền