Hệthống ngắt F2812

Một phần của tài liệu Ứng dụng vi xử lý tín hiệu số TMS320 trong điều khiển, phục vụ công tác đào tạo tại trung tâm thí nghiệm trường đại học kĩ thuật công nghiệp thái nguyên (Trang 33)

a) Giới thiệu

Hệ thống ngắt của C28x gồm có 16 đƣờng ngắt, 2 trong số này là ngắt không che đƣợc “Non-Maskable” (Reset, NMI), 14 dƣờng ngắt che đƣợc “Maskable” có nghĩa là ngƣời lập trình có thể cho phép hoặc không cho phép các đƣờng ngắt này.

Ở ngắt che đƣợc thì có 2 trạng thái “0” và “1”. “1” có nhĩa là cho phép ngắt và “0” là không cho phép ngắt.

Bằng cách đánh dấu vào thanh ghi “IER” ngƣời lập trình có thể yêu cầu một ngắt. Ở ngắt không che đƣợc ngƣời lập trình không thể từ chối các yêu cầu ngắt. Một tín hiệu đƣợc tích cực, chƣơng trình sẽ ngừng lại và nhảy đến chƣơng trình con phục vụ ngắt.

Hình 1. 26 Lines Interrupt

Tất cả 16 đƣờng ngắt đƣợc kết nối với bảng véc tơ ngắt, bao gồm 32 bit bộ nhớ trên một ngắt. Trách nhiệm của ngƣời lập trình là điền vào bảng này địa chỉ bắt đầu của chƣơng trình con phục vụ ngắt.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

b) C28x RESET

Một sƣờn xuống của tín hiệu trên chân “RS” sẽ reset DSP. Sự kiện này sẽ đƣa DSP bắt đầu lại từ địa chỉ reset (địa chỉ 0x3FFFC0 bộ nhớ chƣơng trình ) chứ không phải là một ngắt theo nghĩa là chƣơng trình cũ sẽ đƣợc tiếp tục sau khi phục vụ ngắt.

Hình 1. 27 Các nguồn reset hệ thống

Tín hiệu reset có thể bắt nguồn từ bộ watchdog hoặc từ chân RS phía ngoài. Reset không chỉ đƣa DSP về địa chỉ 0x3FFFC0 nó còn xóa tất cả các thanh ghi, reset cờ CPU về trạng thái ban đầu và disable 16 ngắt.

c) Nguồn ngắt

DSP C28x có số lƣợng nguồn ngắt rất lớn (hiện tại là 96 ngắt) nhƣng chỉ có 14 ngắt che đƣợc. Ngƣời lập trình phải sử dụng 1 INT_Line cho nhiều nguồn ngắt. Mỗi đƣờng ngắt này kết nối đến một bảng véc tơ ngắt của nó. Một vùng nhớ 32 bít bên trong bảng véc tơ ngắt lƣu giữ địa chỉ ngắt của các chƣơng trình con phục vụ ngắt. Trong trƣờng hợp nhiều ngắt đƣợc kích hoạt thì chƣơng trình chƣơng trình phục vụ ngắt phải đƣợc sử dụng cho tất cả các yêu cầu ngắt. Tổng kỹ thuật lập trình có thể sử dụng phần mềm để xác định các nguồn ngắt này.

Tuy nhiên phƣơng pháp này sẽ tốn nhiều thời gian và không phù hợp với các ứng dụng thời gian thực. Để giải quyết vần đề này ngƣời lập trình có thể sử dụng bộ mở rộng ngắt ngoại vi PIE (Peripheral Interrupt Expansion).

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Bộ mở rộng ngắt ngoại vi mở rộng địa chỉ véc tơ ngắt rộng hơn, đặt mỗi nhóm 32 bit cho một trong số 96 nguồn ngắt. Tốc độ phản ứng ngắt khi có sự trợ giúp của bộ phận này là nhanh hơn khi không có nó. Để sử dụng PIE ngƣời lập trình phải thay đổi bản đồ bộ nhớ (re-map) vị trí bảng véc tơ ngắt đến địa chỉ 0x00D00. Nó nằm trong vùng bộ nhớ động. Trƣớc khi sử dụng bộ nhớ này thì cần phải khởi tạo nó.

d) Các thanh ghi làm việc với ngắt che đƣợc

Hình 1. 29 Thanh ghi cờ ngắt

Hình 1. 30 Thanh ghi cho phép ngắt

e) Mở rộng ngắt ngoại vi

Tất cả 96 nguồn ngắt đƣợc nhóm vào 12 PIE_Line, 8 nguồn trên 1 line. Để enable, disable từng nguồn ngắt riêng lẻ cần phải lập trình cho nhóm thanh ghi “PIEIFRx” và “PIEIRx”.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 1. 31 Mở rộng ngắt ngoại vi Tất cả các nguồn ngắt đƣợc kết nối với các line theo bảng sau

Hình 1. 32 Bảng phân bổ ngắt

Vị trí tại bảng véc tơ ngắt lúc thiết lập lại là

Hình 1. 33 Véc tơ ngắt lúc thiết lập lại PIE thay đổi bản đồ bộ nhớ nhƣ thế này

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 1. 34 Bản đồ véc tơ PIE sau khi thiết lập lại

Nhƣ đã thấy trên hình, vùng địa chỉ 0x000D40 đến 0x000DFF đƣợc sử dụng nhƣ là một vùng mở rộng. Bây giờ có 32 bit cho mỗi véc tơ ngắt PIEINT1.1 đến PIEI12.8.

f) C28xCPU timer

C28x có ba bộ timer 32 bít , sơ đồ khối của bộ timer ở hình phía dƣới (adsbygoogle = window.adsbygoogle || []).push({});

Hình 1. 35 Sơ đồ khối của bộ timer

Nguồn xung clock cho bộ timer là nguồn xung clock bên trong “SYSCLKOUT”. Nó là 150MHZ nếu sử dụng tần số dao động bên ngoài là 30MHZ và sử dụng hệ số nhân PLL là 10/2. Khi một timer đƣợc cho phép (TCR-Bit4) xung clock đi vào bộ đếm xuống 16 bít (prescaler PSCH:PSC). Khi tràn dƣới nó tạo ra một tín hiệu cho bộ đếm 32 bít (TIMH:TIM). Một ngắt có thể đƣợc yêu cầu khi timer đếm tràn.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Thanh ghi chia 16 bít (divide down register) “THDDRH:TDDR” đƣợc sử dụng để nạp lại cho thanh ghi prescaler. Mỗi lần prescaler đếm tràn dƣới giá trị từ thanh ghi divide down đƣợc nạp vào prescaler. Tƣơng tự nhƣ vậy thanh ghi 32bit period PRDH:PRD đƣợc sử dụng để nạp lại cho bộ đếm 32 bít.

Timer 1 và timer 2 thì thƣờng xuyên dƣợc sử dụng bởi Texas Intruments cho hệ điều hành thời gian thực “DSP BIOS” trong khi timer 0 chỉ sử dụng cho mục đích chung. Điều này không chỉ giữ cho timer 1 và timer 2 sử dụng cùng với “DSP/BIOS” mà còn giúp chúng ta hiểu hơn về bộ PIE bởi vì timer 0 là bộ đếm thời gian duy nhất của CPU mà đi qua PIE.

Một phần của tài liệu Ứng dụng vi xử lý tín hiệu số TMS320 trong điều khiển, phục vụ công tác đào tạo tại trung tâm thí nghiệm trường đại học kĩ thuật công nghiệp thái nguyên (Trang 33)