ATmega128 cĩ 8 ngắt ngồi từ INT0 đến INT7 ( ở đây chưa kể tới ngắt reset ). Tám ngắt này tương ứng với 8 chân của MCU là INT0 ,INT1, …, INT7. Để ý là ngay cả khi các chân INT0, INT1, …, INT7 của MCU được cấu hình như là chân lối ra, thì các ngắt ngồi vẫn cĩ tác dụng nếu được cho phép.
Các ngắt ngồi cĩ thể bắt mẫu theo kiểu cạnh lên ( Rising ), cạnh xuống ( Falling ) hay mức thấp ( Low level ). Điều này được qui định trong hai thanh ghi EICRA và EICRB. Dưới đây là mơ tả chi tiết 2 thanh ghi EICRA và EICRB và các thanh ghi liên quan tới các ngắt ngồi.
1. Thanh ghi External Interrupt Control Register A – EICRA
• Bits 7..0 – ISC31, ISC30 – ISC00, ISC00: External Interrupt 3 - 0 Sense Control Bits
Tám bit của thanh ghi EICRA sẽ điều khiển kiểu bắt mẫu cho 4 ngắt INT3, INT2, INT1, INT0. Qui định cụ thể được thể hiện trong Bảng 48 .
ISCn1 ISCn0 Kiểu bắt mẫu
0 0 Mức thấp sẽ tạo yêu cầu ngắt
0 1 Dự trữ
1 0 Cạnh xuống ( Falling ) sẽ tạo yêu cầu ngắt 1 1 Cạnh lên ( Rising ) sẽ tạo yêu cầu ngắt
n = 3, 2, 1, 0
Bảng 48 . Điều khiển kiểu bắt mẫu ngắt
•Bits 7..0 – ISC71, ISC70 - ISC41, ISC40: External Interrupt 7 - 4 Sense Control Bits.
Tám bit của thanh ghi EICRA sẽ điều khiển kiểu bắt mẫu cho 4 ngắt INT7, INT6, INT5, INT4. . Qui định cụ thể được thể hiện trong Bảng 50 .
ISCn1 ISCn0 Kiểu bắt mẫu
0 0 Mức thấp sẽ tạo yêu cầu ngắt
0 1 Bất cứ sự thay đổi mức logic nào ở chân INTn sẽ tao ra một yêu cầu ngắt
1 0 Cạnh xuống ( Falling ) giữa hai mẫu sẽ tạo yêu cầu ngắt
1 1 Cạnh lên ( Rising ) giữa hai mẫu sẽ tạo yêu cầu ngắt
n = 7,6, 5, 4
Bảng 50 . Điều khiển kiểu bắt mẫu ngắt
3. Thanh Ghi External Interrupt Mask Register – EIMSK
•Bits 7..0 – INT7 – INT0: External Interrupt Request 7 - 0 Enable : Khi cho phép ngắt tồn cục ( set bit I trong thanh ghi SREG thành 1 ) thì các ngắt vẫn chưa thể thực thi, để ngắt cĩ thể thực thi ta cần phải cho phép nĩ, 8 bit trong thanh ghi EIMSK sẽ quyết định 8 ngắt ngồi tương ứng ( từ INT7 ...INT0 ) cĩ được cho phép hay khơng. Khi một trong số 8 bit ( từ INT7 ...INT0 ) được set thành 1 và ngắt tồn cục được cho phép thì ngắt ngồi tương ứng được cho phép. Cịn tín hiệu ngắt là mức hay cạnh sẽ do các thanh ghi
EICRA và EICRB ( nêu ở trên ) qui định. Kích hoạt bất cứ chân ( Pin ) nào trong 8 chân của ngắt ngồi cũng tạo ra yêu cầu ngắt ngay cả khi chân được thiết lập thành ngõ ra.
4. Thanh Ghi External Interrupt Flag Register – EIFR
•Bits 7..0 – INTF7 - INTF0: External Interrupt Flags 7 – 0 : Đây là tám cờ ngắt tương
ứng với tám ngắt ngồi INT7..INT0. Khi cĩ tín hiệu u cầu ngắt ngồi thì cờ ngắt tương ứng sẽ được set thành 1, nếu ngắt tương ứng được cho phép thì MCU sẽ nhảy tới bảng véc tơ ngắt, cờ ngắt sẽ được xĩa khi chương trình phục vụ ngắt ( ISR ) được thực thi. Ngồi ra ta cũng cĩ set hay xĩa cờ ngắt bằng cách ghi trực tiếp một giá trị logic vào nĩ.
5. Thanh Ghi MCU Control Register – MCUCR
Trong phần này ta chỉ quan tâm tới hai bit là: IVCE (Interrupt Vector Select ) và bit IVSEL (Interrupt Vector Change Enable ) của thanh ghi MCUCR. Bit này liên quan đến việc thiết lập vị trí bảng véc tơ ngắt.
•Bit 1 – IVSEL: Interrupt Vector Select: Khi bit này là 0 vị trí của bảng véc tơ ngắt được đặt ở phần đầu bộ nhớ chương trình. Khi bit này là 1 bảng véc tơ ngắt được di chuyển tới phần đầu của vùng nhớ Boot Loader.
•Bit 0 – IVCE: Interrupt Vector Change Enable : Bit này phải được ghi thành 1 để cho phép thay đổi bit IVSEL. Bit IVCE được xĩa sau 4 chu kì máy sau khi nĩ được set hay bit IVSEL được ghi. Trong lúc bit ICVE đang set các ngắt sẽ bị cấm cho tới khi bit IVSEL được ghi, nếu bit IVSEL khơng được ghi thì các ngắt vẫn bị cấm trong 4 cho kì máy liên tiếp ( sau 4 chu kì máy thì bit IVCE sẽ tự động bị xĩa nên các ngắt được cho phép trở lại ).
Chương
V CÁC BỘ PHẬN NGOẠI VI KHÁC
Ngồi các bộ phận ngoại vi đã được giới thiệu ở các chương trước như : Bộ định thời, các cổng vào ra, EEPROM … Vi điều khiển ATmega128 cĩ cĩ nhiều bộ phận ngoại vi khác, các bộ ngoại vi này rất tiện lợi trong các ứng dụng điều khiển ( bộ PWM ), xử lí số liệu ( bộ ADC, bộ so sánh Analog ), giao tiếp ( bộ USART, SPI, I2C )… Việc tích hợp các bộ ngoại vi này vào trong chip giúp cho các thiết kế trở nên thuận tiện hơn, kích thước bo mạch cũng gọn gàng hơn ...