Internal Interrupts are used to respond to asynchronous requests from a certain part of themicrocontroller that needs to be serviced. Each peripheral in the TriCore as well as theBus Control Unit, the Debug Unit, the Peripheral Control Processor (PCP) and the CPUitself can generate an Interrupt Request.So what is an external Interrupt?An external Interrupt is something alike as the internal Interrupt. The difference is that anexternal Interrupt request is caused by an external event. Normally this would be a pulseon Port0 or Port1, but it can be even a signal from the input buffer of the SSC, indicatingthat a service is requested.The User’s Manual does not explain this aspect in detail so this ApNote will explain themost common form of an external Interrupt request. This ApNote will show that there is aneasy way to react on a pulse on Port0 or Port1 and to create with this impulse an InterruptService Request. Later in the second part of the document, you can find hints on how todebounce impulses to enable the use of a simple switch as the input device.Note: You will find additional information on how to setup the Interrupt System in theApNote “First steps through the TriCore Interrupt System” (AP3222xx)1. It would gobeyond the scope of this document to explain this here, but you will find selfexplanatoryexamples later on.
上傳時間: 2013-10-27
上傳用戶:zhangyigenius
有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_bufferED_IO標志,設備對象分別通過KIrp::bufferedReadDest或 KIrp::bufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_bufferED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的Userbuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::Userbuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_bufferED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method Input buffer Parameter Output buffer Parameter METHOD_bufferED KIrp::Ioctlbuffer KIrp::Ioctlbuffer METHOD_IN_DIRECT KIrp::Ioctlbuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::Ioctlbuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3Inputbuffer KIrp::Userbuffer 如果控制代碼指明METHOD_bufferED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::Ioctlbuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數Inputbuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::Ioctlbuffer。參數Outputbuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_bufferED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_bufferED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputbufferSize() >= fwLength) { strcpy((PCHAR)I.Ioctlbuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
上傳時間: 2013-10-17
上傳用戶:gai928943
16 16點陣顯示漢字原理及顯示程序 #include "config.h" #define DOTLED_LINE_PORT PORTB #define DOTLED_LINE_DDR DDRB #define DOTLED_LINE_PIN PINB #define DOTLED_LINE_SCKT PB1 #define DOTLED_LINE_SCKH PB5 #define DOTLED_LINE_SDA PB3 #define DOTLED_ROW_PORT PORTC #define DOTLED_ROW_DDR DDRC #define DOTLED_ROW_PIN PINC #define DOTLED_ROW_A0 PC0 #define DOTLED_ROW_A1 PC1 #define DOTLED_ROW_A2 PC2 #define DOTLED_ROW_A3 PC3 #define DOTLED_ROW_E PC4 uint8 font[] = { /*-- 調入了一幅圖像:這是您新建的圖像 --*/ /*-- 寬度x高度=16x16 --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 byte) { uint8 i; for(i = 0 ; i < 8 ; i ++) { if(byte & (1 << i)) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); } else { DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA); } //__delay_cycles(100); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH); //__delay_cycles(100); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH); //__delay_cycles(100); } } static void SelectRow(uint8 row) { //row -= 1; row |= DOTLED_ROW_PIN & 0xe0; DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) { DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT); DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) { DOTLED_LINE_PORT &= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH)); DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA); DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA); DOTLED_ROW_PORT |= 0x1f; DOTLED_ROW_PORT &= 0xf0; DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) { if(IsEnable) { DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E); } else { DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E); } } void PrintDotLed(uint8 * buffer) { uint8 i , tmp; for(i = 0 ; i < 16 ; i ++) { tmp = *buffer ++; TransmitByte(~tmp); tmp = *buffer ++; TransmitByte(~tmp); SelectRow(i); FlipLatchLine(); } } void main(void) { InitDotLedPort(); EnableRow(TRUE); while(1) { PrintDotLed(font); __delay_cycles(5000); } } //---------------------------------------------------- config.h文件 #ifndef _CONFIG_H #define _CONFIG_H //#define GCCAVR #define CPU_CYCLES 7372800L #ifndef GCCAVR #define _BV(bit) (1 << (bit)) #endif #define MSB 0x80 #define LSB 0x01 #define FALSE 0 #define TRUE 1 typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; typedef unsigned char boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----
上傳時間: 2013-11-18
上傳用戶:mnacyf
This example provides a description of how to use the USART with hardware flowcontrol and communicate with the Hyperterminal.First, the USART2 sends the Txbuffer to the hyperterminal and still waiting fora string from the hyperterminal that you must enter which must end by '\r'character (keypad ENTER button). Each byte received is retransmitted to theHyperterminal. The string that you have entered is stored in the Rxbuffer array. The receivebuffer have a RxbufferSize bytes as maximum. The USART2 is configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control enabled (RTS and CTS signals) - Receive and transmit enabled - USART Clock disabled - USART CPOL: Clock is active low - USART CPHA: Data is captured on the second edge - USART LastBit: The clock pulse of the last data bit is not output to the SCLK pin
上傳時間: 2013-10-31
上傳用戶:yy_cn
IBIS 模型在做類似板級SI 仿真得到廣泛應用。在做仿真的初級階段,經常對于ibis 模型的描述有些疑問,只知道把模型拿來轉換為軟件所支持的格式或者直接使用,而對于IBIS 模型里面的數據描述什么都不算很明白,因此下面的一些描述是整理出來的一點對于ibis 的基本理解。在此引用很多presention來描述ibis 內容(有的照抄過來,阿彌陀佛,不要說抄襲,只不過習慣信手拈來說明一些問題),僅此向如muranyi 等ibis 先驅者致敬。本文難免有些錯誤或者考慮不周,隨時歡迎進行討論并對其進行修改!IBIS 模型的一些基本概念IBIS 這個詞是Input/Output buffer information specification 的縮寫。本文是基于IBIS ver3.2 所撰寫出來(www.eigroup.org/IBIS/可下載到各種版本spec),ver4.2增加很多新特性,由于在目前設計中沒用到不予以討論。。。在業界經常會把spice 模型描述為transistor model 是因為它描述很多電路細節問題。而把ibis 模型描述為behavioral model 是因為它并不象spice 模型那樣描述電路的構成,IBIS 模型描述的只不過是電路的一種外在表現,象個黑匣子一樣,輸入什么然后就得到輸出結果,而不需要了解里面驅動或者接收的電路構成。因此有所謂的garbage in, garbage out,ibis 模型的仿真精度依賴于模型的準確度以及考慮的worse case,因此無論你的模型如何精確而考慮的worse case 不周全或者你考慮的worse case 如何周全而模型不精確,都是得不到較好的仿真精度。
上傳時間: 2013-10-16
上傳用戶:zhouli
已通過CE認證。(為什么要選擇經過CE認證的編程器?) 程速度無與倫比,逼近芯片理論極限。 基本配置48腳流行驅動電路。所選購的適配器都是通用的(插在DIP48鎖緊座上),即支持同封裝所有類型器件,48腳及以下DIP器件無需適配器直接支持。通用適配器保證快速新器件支持。I/O電平由DAC控制,直接支持低達1.5V的低壓器件。 更先進的波形驅動電路極大抑制工作噪聲,配合IC廠家認證的算法,無論是低電壓器件、二手器件還是低品質器件均能保證極高的編程良品率。編程結果可選擇高低雙電壓校驗,保證結果持久穩固。 支持FLASH、EPROM、EEPROM、MCU、PLD等器件。支持新器件僅需升級軟件(免費)。可測試SRAM、標準TTL/COMS電路,并能自動判斷型號。 自動檢測芯片錯插和管腳接觸不良,避免損壞器件。 完善的過流保護功能,避免損壞編程器。 邏輯測試功能。可測試和自動識別標準TTL/CMOS邏輯電路和用戶自定義測試向量的非標準邏輯電路。 豐富的軟件功能簡化操作,提高效率,避免出錯,對用戶關懷備至。工程(Project)將用戶關于對象器件的各種操作、設置,包括器件型號設定、燒寫文件的調入、配置位的設定、批處理命令等保存在工程文件中,每次運行時一步進入寫片操作。器件型號選擇和文件載入均有歷史(History)記錄,方便再次選擇。批處理(Auto)命令允許用戶將擦除、查空、編程、校驗、加密等常用命令序列隨心所欲地組織成一步完成的單一命令。量產模式下一旦芯片正確插入CPU即自動啟動批處理命令,無須人工按鍵。自動序列號功能按用戶要求自動生成并寫入序列號。借助于開放的API用戶可以在線動態修改數據buffer,使每片芯片內容均不同。器件型號選錯,軟件按照實際讀出的ID提示相近的候選型號。自動識別文件格式, 自動提示文件地址溢出。 軟件支持WINDOWS98/ME/NT/2000/XP操作系統(中英文)。 器件型號 編程(秒) 校驗(秒) P+V (s) Type 28F320W18 9 4.5 13.5 32Mb FLASH 28F640W30 18 9 27 64Mb FLASH AM29DL640E 38.3 10.6 48.9 64Mb FLASH MB84VD21182DA 9.6 2.9 12.5 16Mb FLASH MB84VD23280FA 38.3 10.6 48.9 64Mb FLASH LRS1381 13.3 4.6 19.9 32Mb FLASH M36W432TG 11.8 4.6 16.4 32Mb FLASH MBM29DL323TE 17.5 5.5 23.3 32Mb FLASH AT89C55WD 2.1 1 3.1 20KB MCU P89C51RD2B 4.6 0.9 5.5 64KB MCU
上傳時間: 2013-10-18
上傳用戶:suicoe
Abstract: This application note discusses the REF pin functionality in the indirect current-feedbackarchitecture for instrumentation amplifiers. This article compares the importance of a REF buffer in a
上傳時間: 2015-01-03
上傳用戶:時代將軍
SL811開發資料_包含源程序_電路圖_芯片資料:SL811HS Embedded USB Host/Slave Controller.The SL811HS is an Embedded USB Host/Slave Controller capable of communicate with either full-speed or low-speed USB peripherals. The SL811HS can interface to devices such as microprocessors, microcontrollers, DSPs, or directly to a variety of buses such as ISA, PCMCIA, and others. The SL811HS USB Host Controller conforms to USB Specification 1.1.The SL811HS USB Host/Slave Controller incorporates USB Serial Interface functionality along with internal full-/low-speed transceivers.The SL811HS supports and operates in USB full-speed mode at 12 Mbps, or at low-speed 1.5-Mbps mode.The SL811HS data port and microprocessor interface provide an 8-bit data path I/O or DMA bidirectional, with interrupt support to allow easy interface to standard microprocessors or microcontrollers such as Motorola or Intel CPUs and many others. Internally,the SL811HS contains a 256-byte RAM data buffer which is used for control registers and data buffer.The available package types offered are a 28-pin PLCC (SL811HS) and a 48-pin TQFP package (SL811HST-AC). Both packages operate at 3.3 VDC. The I/O interface logic is 5V-tolerant.
上傳時間: 2013-12-22
上傳用戶:a82531317
介紹了以PLC為控制單元,變頻器為執行單元的控制系統及其在煙支輸送儲存系統中的應用,并給出了系統的組成、硬件的配置及具體的實現方法。關鍵詞 : PLC 變頻器輸送儲存系統 Ab str ac t;T hisp aperi ntroducest hec ontrols ystem whichc onsistso fP LCa ndf requencyc onvertera ndi ts application in the buffer conveyor for cigarettes. The system constitute, hardware disposal and realization method are also presented in detail.Keywords:PLC f requencyc onverter b ufferc onveyor
上傳時間: 2013-10-22
上傳用戶:ouyang426
已通過CE認證。(為什么要選擇經過CE認證的編程器?) 程速度無與倫比,逼近芯片理論極限。 基本配置48腳流行驅動電路。所選購的適配器都是通用的(插在DIP48鎖緊座上),即支持同封裝所有類型器件,48腳及以下DIP器件無需適配器直接支持。通用適配器保證快速新器件支持。I/O電平由DAC控制,直接支持低達1.5V的低壓器件。 更先進的波形驅動電路極大抑制工作噪聲,配合IC廠家認證的算法,無論是低電壓器件、二手器件還是低品質器件均能保證極高的編程良品率。編程結果可選擇高低雙電壓校驗,保證結果持久穩固。 支持FLASH、EPROM、EEPROM、MCU、PLD等器件。支持新器件僅需升級軟件(免費)。可測試SRAM、標準TTL/COMS電路,并能自動判斷型號。 自動檢測芯片錯插和管腳接觸不良,避免損壞器件。 完善的過流保護功能,避免損壞編程器。 邏輯測試功能。可測試和自動識別標準TTL/CMOS邏輯電路和用戶自定義測試向量的非標準邏輯電路。 豐富的軟件功能簡化操作,提高效率,避免出錯,對用戶關懷備至。工程(Project)將用戶關于對象器件的各種操作、設置,包括器件型號設定、燒寫文件的調入、配置位的設定、批處理命令等保存在工程文件中,每次運行時一步進入寫片操作。器件型號選擇和文件載入均有歷史(History)記錄,方便再次選擇。批處理(Auto)命令允許用戶將擦除、查空、編程、校驗、加密等常用命令序列隨心所欲地組織成一步完成的單一命令。量產模式下一旦芯片正確插入CPU即自動啟動批處理命令,無須人工按鍵。自動序列號功能按用戶要求自動生成并寫入序列號。借助于開放的API用戶可以在線動態修改數據buffer,使每片芯片內容均不同。器件型號選錯,軟件按照實際讀出的ID提示相近的候選型號。自動識別文件格式, 自動提示文件地址溢出。 軟件支持WINDOWS98/ME/NT/2000/XP操作系統(中英文)。 器件型號 編程(秒) 校驗(秒) P+V (s) Type 28F320W18 9 4.5 13.5 32Mb FLASH 28F640W30 18 9 27 64Mb FLASH AM29DL640E 38.3 10.6 48.9 64Mb FLASH MB84VD21182DA 9.6 2.9 12.5 16Mb FLASH MB84VD23280FA 38.3 10.6 48.9 64Mb FLASH LRS1381 13.3 4.6 19.9 32Mb FLASH M36W432TG 11.8 4.6 16.4 32Mb FLASH MBM29DL323TE 17.5 5.5 23.3 32Mb FLASH AT89C55WD 2.1 1 3.1 20KB MCU P89C51RD2B 4.6 0.9 5.5 64KB MCU
上傳時間: 2013-11-21
上傳用戶:xiaoyuer