S3C6410中斷系統

来源:http://www.cnblogs.com/chd-zhangbo/archive/2016/01/28/5166083.html
-Advertisement-
Play Games

S3C6410的中斷主要改進是. 增加中斷向量控制器,這樣在S3C2440里需要用軟體來跳轉的中斷處理機制,在S3C6410完全由硬體來跳轉。你只要把ISR地址是存在連續向量寄存器空間,而不是象S3C2440自行分配空間自行管理。 換句話說,在S3C2440下是由CPU觸發IRQ/FIQ異常,由異常


S3C6410的中斷主要改進是.

 增加中斷向量控制器,這樣在S3C2440里需要用軟體來跳轉的中斷處理機制,在S3C6410完全由硬體來跳轉。你只要把ISR地址是存在連續向量寄存器空間,而不是象S3C2440自行分配空間自行管理。

 

  換句話說,在S3C2440下是由CPU觸發IRQ/FIQ異常,由異常處理函數里再查找相關中斷寄存器來跳到指定的ISR,而可以全部由S3C6410的VIC硬體來自動處理。 這個大大簡化中斷處理編程。

 

 另一個是外部中斷加入濾波電路,這樣原來需要軟體去毛刺的地方均可以採用硬體來進行濾波了,這樣大大簡化外部中斷處理。

 

 

 

 

S3C6410 中斷號

 

64個中斷按硬體分組分成VIC0, VIC1兩個組,各組由一個相應寄存器來處理。

中斷號為0-31是VIC0組

中斷號為32-63是VIC1組

 

S3C6410中斷操作很簡單。

 

打開中斷 VICxINTENABLE

  x為0,1,0-31中斷使用VIC0INTENABLE,32-63中斷使用VIC1INTENABLE.以下各寄存器均同,不再重覆.

 

對應位為1表示這個中斷可用,如0號中斷有效,是VIC0INTENABLE的第0位為1

 

 

 

關閉一個中斷

    向VICxINTENCLEAR對應位置1表示關閉這個中斷.

 這個是三星比較明智的改進,不會讓開發感到比較迷惑的地方

 

設置中斷類型

  設置某一個中斷是IRQ還是FIQ,註意只有一個中斷才能FIQ.設置對應位1表示設為FIQ模式。

 

 

 

設置S3C6410的向量地址(ISR地址)

   註意在S3C6410自已從了各用32個地址連續的寄存器然成兩個寄存器數組。首地址分別是0x71200100和0x71300100.你可以象指針數組一樣來操作它們,數組的下標就是中斷號。

   這樣設置讓開發者大大簡單化ISR的向量組織。

 

 

設置中斷優先順序

   這個也採用用32*2寄存器形成兩個優先順序數組。每一個寄存器對應優先順序別,取值範圍在0-15之間.

 

 

 

 

中斷運行後指示

   這個因為了用VIC,現在省掉了S3C2440一大堆的SRCPND,INTPND,INTOFFSET,SUBSRCPND等寄存器。直接由VICxADDRESS來指示當前的ISR地址。 

 

  註意這個VICxADDRESS的寄存器,在S3C6410里稱為在System BUS.調用。這種方式不建議調用,因為這種模式相當於S3C2440的用軟體進行ISR跳轉.

   這三星的給的參考流程。

 

 

 更為簡單的調用方式.是VIC port 模式,是我強烈推薦的模式,它是系統產生中斷後,將由VIC直接去執行相應的ISR。這不僅上編程變成簡單,而且效率上更快,因為它沒有訪問VICxADDRESS和在System BUS執行的時間

使用這種模式,只需要在啟動加上特定的代碼

 

 

 

 

外部中斷編程

----------------------------------------------------------

  

   除INT_EINT0-INT_EINT4以外,全部中斷是由S3C6410內部的模塊觸發的。稱為內部中斷

 

  INT_EINT0-INT_EINT4是外部中斷,是由CPU外的外設來觸發的,它的觸發哪一個中斷取決外設聯接哪一個GPIO中斷腳。

   象開發板的網路控制器,按鈕等都是掛在某一些GPIO腳上。它們都是使用典形外部中斷.

 

外部中斷腳

S3C6410 分9組GPIO腳來充當外部中斷腳

  第0組,共28腳.GPN0-GPN15 (16腳),GPL8-GPL14(7腳),GPM0-GPM4 (5腳)

  第1組,由GPA0-GPA7,共8個中斷腳

  第2組,由GPC0-GPC0,共8個中斷腳…

     …

  第8組,由GPP0-GPP14,共15個中斷腳

  第9組,由GPQ0-GPQ8,共9個中斷腳

 

外部中斷號

 

第0組的第0腳到第3腳的設備將觸INT_EINT0=0中斷

第0組的第4-11腳將觸發INT_EINT1=1中斷

第0組的第12-19腳將觸發INT_EINT2=32中斷

第0組的第20-27腳將觸發INT_EINT3=33中斷

第1組-第9組所有設備只觸發INT_EINT4=53中斷

 

我們可以看到,每一個組都是多個中斷腳共用一個中斷號的。其中第0組比較常用。占用了3個中斷.

 

 

 

在ISR中,如何判斷是哪一個中斷腳的產生中斷?

 

不同的IO腳上多個設備產生同一個中斷,軟體如何知道是哪一個腳?

由External Interrupt Pending Register 來判斷

    第0組由EINT0PEND來判斷

  第1,2組由EINT12PEND來判斷

 

依此類推,EINT34PEND,EINT56PEND, 一直到EINT9PEND 來指示

 

 

外部中斷信號類型

 

  這裡設置中斷產生何種信號才會被捕獲。主要是五種,低電平,高電平,上升沿,下降沿或者兩者均可,

第0組用 EINT0CON0/EINT0CON1兩個寄存器來設定.

 

第1,2組採用 EINT12CON ,

第3,4組採用EINT34CON,

依此類推

 

 

臨時關閉外部中斷

EINTxMask是臨時性關閉中斷

為1表示關閉某一個中斷,為表示打開0,一般只要需要使用中斷才會打開。

EINT0MASK是第0組的使用

EINT12MASK是第1,2組的中斷掩碼

 依次類推...

 

定義硬體濾波類型

  對於一些波形不規整的外部中斷信號,可以通過濾波電路讓其變成規整,這樣會簡化軟體的編寫.

 S3C6410有兩種濾波電路,一種延時濾波(如按鈕類中斷可以採用這一類型),一種是數字採樣濾波.第二種濾波電路還要設採樣寬度。

  第0組的濾波用EINT0FLTCON0,EINT0FLTCON1, EINT0FLTCON2, EINT0FLTCON3配置.

 FLTEN表示是否打開濾波功能,FLTSEL是設置濾波方式,EINTn表示數字濾波採校的寬度

 

 

第1,2組的濾波採用 EINT12FLTCON

第3,4組的濾波採用 EINT34FLTCON

 

第9組濾波 採用EINT9FLTCON

 

外部中斷編程

 

  外部中斷除了中斷編程所有流程外,

  一般額外配置相應的GPxCON配置成中斷腳。

   還要配置濾波方式和中斷信號方式。

  還要打開外部中斷掩碼

 

  在ISR中,在最後除了要把VICxADDRESS清0外,還需要清除 VICxSOFTINTCLEAR相應位。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通過phpmyadmin連接mysql成功,但是通過php連接資料庫失敗,執行如下php語句 ? 1 @mysql_connect("localhost","root","12345") or die ("資料庫伺服器連接失敗");// 連接伺服器 之後,瀏覽器輸出資料庫伺服器連接失敗,下文為解決辦
  • --時間:2016年1月27日--Author:zhenxing yu 查詢回收站 SELECT * FROM RECYCLEBIN; SELECT * FROM USER_RECYCLEBIN; --USER_RECYCLEBING與RECYCLEBIN是同義詞,欄位完全一樣 --開啟或關閉回收站
  • memcached是一個高性能的分散式記憶體緩存伺服器,memcached在Linux上可以通過yum命令安裝,這樣方便很多,在生產環境下建議用Linux系統,memcached使用libevent這個庫在Linux系統上才能發揮它的高性能。它的分散式其實在服務端是不具有分散式的特征的,是依靠客戶端的
  • 一,mysql命令行參數 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //顯示幫助信息並退出 -I, --help //顯示幫助信息並退出 --auto-rehash //自動補全功能,就像linux裡面,按Tab鍵出提示差不多,下麵有例子
  • B 樹 即二叉搜索樹: 1.所有非葉子結點至多擁有兩個兒子(Left和Right); 2.所有結點存儲一個關鍵字; 3.非葉子結點的左指針指向小於其關鍵字的子樹,右指針指向大於其關鍵字的子樹; 如: B樹的搜索,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中;否則,如果查詢關鍵字比結點
  • Windows Server 2012 (R2) 預設沒有安裝 .NET Framework 3.5,但可以通過線上安裝或指定備用源路徑方式。 之前在這個 在Win Server 2012中安裝.NET Framework 3.5的問題 中寫的方法是需要Windows Server的ISO鏡像介質的
  • 一.概述 上一篇arp請求使用的是鏈路層的原始套接字。icmp封裝在ip數據報裡面,所以icmp請求可以直接使用網路層的原始套接字,即socket()第一個參數是PF_INET。如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP); icmp報
  • 如何通過命令向遠程伺服器上傳下載文件
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...