本文介紹了一種PWM模塊單片機的步進電機細分驅(qū)動方法。
上傳時間: 2014-04-11
上傳用戶:jrsoft
有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個符號鏈;2. 通過輸出到一個接口WDM驅(qū)動程序建議使用輸出到一個接口而不推薦使用創(chuàng)建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創(chuàng)建一個惟一的、獨立于語言的訪問設(shè)備的方法。一個應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個Win32 APIs和設(shè)備對象的分發(fā)函數(shù)之間存在一個映射關(guān)系。獲得對設(shè)備對象訪問的第一步就是打開一個設(shè)備對象的句柄。 用符號鏈打開一個設(shè)備的句柄為了打開一個設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個符號鏈出口,應(yīng)用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個設(shè)備。這個設(shè)備必須有一個符號鏈,以便應(yīng)用程序能夠打開它。有關(guān)細節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個參數(shù)中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數(shù)不是Windows 98/2000中驅(qū)動程序(.sys文件)的路徑。是到設(shè)備對象的符號鏈。如果使用DriverWizard產(chǎn)生驅(qū)動程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號鏈。這意味著符號鏈名有一個附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個小例子來顯示這些類最基本的使用方法: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;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對象的IRPs。下面的表顯示了這種對應(yīng)關(guān)系。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 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會在打開設(shè)備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導(dǎo)致沒有特權(quán)的用戶企圖打開這個設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對象的屬性。當設(shè)備設(shè)置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當設(shè)備設(shè)置DO_BUFFERED_IO標志,設(shè)備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當設(shè)備不設(shè)置DO_BUFFERED_IO標志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲區(qū)并沒有被鎖住而且地址只對調(diào)用進程有效。驅(qū)動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個宏的其中一個參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):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,系統(tǒng)分配一個單一的緩沖來作為輸入與輸出。驅(qū)動程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級調(diào)用者使用的緩沖中。驅(qū)動程序必須在結(jié)束前存儲拷貝到IRP的Information成員中的數(shù)據(jù)個數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個系統(tǒng)緩沖,這個緩沖驅(qū)動程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅(qū)動程序?qū)@個對象的訪問通過調(diào)用KIrp::Mdl來實現(xiàn)。對于METHOD_OUT_DIRECT,調(diào)用者必須有對緩沖的寫訪問權(quán)限。注意,對METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調(diào)用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅(qū)動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動程序中,代碼看起來如下所示: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 . . . } }
標簽: 驅(qū)動程序 應(yīng)用程序 接口
上傳時間: 2013-10-17
上傳用戶:gai928943
提出了一種改進的LSM-ALSM子空間模式識別方法,將LSM的旋轉(zhuǎn)策略引入ALSM,使子空間之間互不關(guān)聯(lián)的情況得到改善,提高了ALSM對相似樣本的區(qū)分能力。討論中以性能函數(shù)代替經(jīng)驗函數(shù)來確定拒識規(guī)則的參數(shù),實現(xiàn)了識別率、誤識率與拒識率之間的最佳平衡;通過對有限字符集的實驗結(jié)果表明,LSM-ALSM算法有效地改善了分類器的識別率和可靠性。關(guān) 鍵 詞 學(xué)習(xí)子空間; 性能函數(shù); 散布矩陣; 最小描述長度在子空間模式識別方法中,一個線性子空間代表一個模式類別,該子空間由反映類別本質(zhì)的一組特征矢量張成,分類器根據(jù)輸入樣本在各子空間上的投影長度將其歸為相應(yīng)的類別。典型的子空間算法有以下三種[1, 2]:CLAFIC(Class-feature Information Compression)算法以相關(guān)矩陣的部分特征向量來構(gòu)造子空間,實現(xiàn)了特征信息的壓縮,但對樣本的利用為一次性,不能根據(jù)分類結(jié)果進行調(diào)整和學(xué)習(xí),對樣本信息的利用不充分;學(xué)習(xí)子空間方法(Leaning Subspace Method, LSM)通過旋轉(zhuǎn)子空間來拉大樣本所屬類別與最近鄰類別的距離,以此提高分類能力,但對樣本的訓(xùn)練順序敏感,同一樣本訓(xùn)練的順序不同對子空間構(gòu)造的影響就不同;平均學(xué)習(xí)子空間算法(Averaged Learning Subspace Method, ALSM)是在迭代訓(xùn)練過程中,用錯誤分類的樣本去調(diào)整散布矩陣,訓(xùn)練結(jié)果與樣本輸入順序無關(guān),所有樣本平均參與訓(xùn)練,其不足之處是各模式的子空間之間相互獨立。針對以上問題,本文提出一種改進的子空間模式識別方法。子空間模式識別的基本原理1.1 子空間的分類規(guī)則子空間模式識別方法的每一類別由一個子空間表示,子空間分類器的基本分類規(guī)則是按矢量在各子空間上的投影長度大小,將樣本歸類到最大長度所對應(yīng)的類別,在類x()iω的子空間上投影長度的平方為()211,2,,()argmax()jMTkkjpg===Σx (1)式中 函數(shù)稱為分類函數(shù);為子空間基矢量。兩類的分類情況如圖1所示。
上傳時間: 2013-12-25
上傳用戶:熊少鋒
摘 要:單片機多機通訊一般采用串行總線方式,但在通訊距離短,通訊數(shù)據(jù)量大,通訊速率高的場合也會用到多機并行通訊。本文介紹一種采用簡單邏輯電路實現(xiàn)單片機多機并行通訊的方法。關(guān)鍵詞:并行通訊,三態(tài)緩沖寄存器,雙端口存儲器,總線隔離1、 簡介本文介紹的單片機多機并行通訊系統(tǒng),使用89C51作為主機,多片89C2051作為從機。(89C2051為20腳300MIL封裝,帶有2K FLASH E2PROM的單片機,除了少了兩個并口外,具備MCS-51系列單片機所有功能。因為其體積小,功能強,必將在單片機應(yīng)用領(lǐng)域內(nèi)廣泛使用)。這種并行通訊方法適用于在多站點,多層次的檢測和控制系統(tǒng)中充當通信控制器的角色;也適合于用作單片機串行口擴充電路。
上傳時間: 2013-10-31
上傳用戶:hxy200501
AVR高速嵌入式單片機原理與應(yīng)用(修訂版)詳細介紹ATMEL公司開發(fā)的AVR高速嵌入式單片機的結(jié)構(gòu);講述AVR單片機的開發(fā)工具和集成開發(fā)環(huán)境(IDE),包括Studio調(diào)試工具、AVR單片機匯編器和單片機串行下載編程;學(xué)習(xí)指令系統(tǒng)時,每條指令均有實例,邊學(xué)習(xí)邊調(diào)試,使學(xué)習(xí)者看得見指令流向及操作結(jié)果,真正理解每條指令的功能及使用注意事項;介紹AVR系列多種單片機功能特點、實用程序設(shè)計及應(yīng)用實例;作為提高篇,講述簡單易學(xué)、適用AVR單片機的高級語言BASCOMAVR及ICC AVR C編譯器。 AVR高速嵌入式單片機原理與應(yīng)用(修訂版) 目錄 第一章ATMEL單片機簡介1.1ATMEL公司產(chǎn)品的特點11.2AT90系列單片機簡介21.3AT91M系列單片機簡介2第二章AVR單片機系統(tǒng)結(jié)構(gòu)2.1AVR單片機總體結(jié)構(gòu)42.2AVR單片機中央處理器CPU62.2.1結(jié)構(gòu)概述72.2.2通用寄存器堆92.2.3X、Y、Z寄存器92.2.4ALU運算邏輯單元92.3AVR單片機存儲器組織102.3.1可下載的Flash程序存儲器102.3.2內(nèi)部和外部的SRAM數(shù)據(jù)存儲器102.3.3EEPROM數(shù)據(jù)存儲器112.3.4存儲器訪問和指令執(zhí)行時序112.3.5I/O存儲器132.4AVR單片機系統(tǒng)復(fù)位162.4.1復(fù)位源172.4.2加電復(fù)位182.4.3外部復(fù)位192.4.4看門狗復(fù)位192.5AVR單片機中斷系統(tǒng)202.5.1中斷處理202.5.2外部中斷232.5.3中斷應(yīng)答時間232.5.4MCU控制寄存器 MCUCR232.6AVR單片機的省電方式242.6.1休眠狀態(tài)242.6.2空閑模式242.6.3掉電模式252.7AVR單片機定時器/計數(shù)器252.7.1定時器/計數(shù)器預(yù)定比例器252.7.28位定時器/計數(shù)器0252.7.316位定時器/計數(shù)器1272.7.4看門狗定時器332.8AVR單片機EEPROM讀/寫訪問342.9AVR單片機串行接口352.9.1同步串行接口 SPI352.9.2通用串行接口 UART402.10AVR單片機模擬比較器452.10.1模擬比較器452.10.2模擬比較器控制和狀態(tài)寄存器ACSR462.11AVR單片機I/O端口472.11.1端口A472.11.2端口 B482.11.3端口 C542.11.4端口 D552.12AVR單片機存儲器編程612.12.1編程存儲器鎖定位612.12.2熔斷位612.12.3芯片代碼612.12.4編程 Flash和 EEPROM612.12.5并行編程622.12.6串行下載662.12.7可編程特性67第三章AVR單片機開發(fā)工具3.1AVR實時在線仿真器ICE200693.2JTAG ICE仿真器693.3AVR嵌入式單片機開發(fā)下載實驗器SL?AVR703.4AVR集成開發(fā)環(huán)境(IDE)753.4.1AVR Assembler編譯器753.4.2AVR Studio773.4.3AVR Prog783.5SL?AVR系列組態(tài)開發(fā)實驗系統(tǒng)793.6SL?AVR*.ASM源文件說明81第四章AVR單片機指令系統(tǒng)4.1指令格式844.1.1匯編指令844.1.2匯編器偽指令844.1.3表達式874.2尋址方式894.3數(shù)據(jù)操作和指令類型924.3.1數(shù)據(jù)操作924.3.2指令類型924.3.3指令集名詞924.4算術(shù)和邏輯指令934.4.1加法指令934.4.2減法指令974.4.3乘法指令1014.4.4取反碼指令1014.4.5取補指令1024.4.6比較指令1034.4.7邏輯與指令1054.4.8邏輯或指令1074.4.9邏輯異或指令1104.5轉(zhuǎn)移指令1114.5.1無條件轉(zhuǎn)移指令1114.5.2條件轉(zhuǎn)移指令1144.6數(shù)據(jù)傳送指令1354.6.1直接數(shù)據(jù)傳送指令1354.6.2間接數(shù)據(jù)傳送指令1374.6.3從程序存儲器直接取數(shù)據(jù)指令1444.6.4I/O口數(shù)據(jù)傳送指令1454.6.5堆棧操作指令1464.7位指令和位測試指令1474.7.1帶進位邏輯操作指令1474.7.2位變量傳送指令1514.7.3位變量修改指令1524.7.4其它指令1614.8新增指令(新器件)1624.8.1EICALL-- 延長間接調(diào)用子程序1624.8.2EIJMP--擴展間接跳轉(zhuǎn)1634.8.3ELPM--擴展裝載程序存儲器1644.8.4ESPM--擴展存儲程序存儲器1644.8.5FMUL--小數(shù)乘法1664.8.6FMULS--有符號數(shù)乘法1664.8.7FMULSU--有符號小數(shù)和無符號小數(shù)乘法1674.8.8MOVW--拷貝寄存器字1684.8.9MULS--有符號數(shù)乘法1694.8.10MULSU--有符號數(shù)與無符號數(shù)乘法1694.8.11SPM--存儲程序存儲器170 第五章AVR單片機AT90系列5.1AT90S12001725.1.1特點1725.1.2描述1735.1.3引腳配置1745.1.4結(jié)構(gòu)縱覽1755.2AT90S23131835.2.1特點1835.2.2描述1845.2.3引腳配置1855.3ATmega8/8L1855.3.1特點1865.3.2描述1875.3.3引腳配置1895.3.4開發(fā)實驗工具1905.4AT90S2333/44331915.4.1特點1915.4.2描述1925.4.3引腳配置1945.5AT90S4414/85151955.5.1特點1955.5.2AT90S4414和AT90S8515的比較1965.5.3引腳配置1965.6AT90S4434/85351975.6.1特點1975.6.2描述1985.6.3AT90S4434和AT90S8535的比較1985.6.4引腳配置2005.6.5AVR RISC結(jié)構(gòu)2015.6.6定時器/計數(shù)器2125.6.7看門狗定時器 2175.6.8EEPROM讀/寫2175.6.9串行外設(shè)接口SPI2175.6.10通用串行接口UART2175.6.11模擬比較器 2175.6.12模數(shù)轉(zhuǎn)換器2185.6.13I/O端口2235.7ATmega83/1632285.7.1特點2285.7.2描述2295.7.3ATmega83與ATmega163的比較2315.7.4引腳配置2315.8ATtiny10/11/122325.8.1特點2325.8.2描述2335.8.3引腳配置2355.9ATtiny15/L2375.9.1特點2375.9.2描述2375.9.3引腳配置2395 .10ATmega128/128L2395.10.1特點2405.10.2描述2415.10.3引腳配置2435.10.4開發(fā)實驗工具2455.11ATmega1612465.11.1特點2465.11.2描述2475.11.3引腳配置2475.12AVR單片機替代MCS51單片機249第六章實用程序設(shè)計6.1程序設(shè)計方法2506.1.1程序設(shè)計步驟2506.1.2程序設(shè)計技術(shù)2506.2應(yīng)用程序舉例2516.2.1內(nèi)部寄存器和位定義文件2516.2.2訪問內(nèi)部 EEPROM2546.2.3數(shù)據(jù)塊傳送2546.2.4乘法和除法運算應(yīng)用一2556.2.5乘法和除法運算應(yīng)用二2556.2.616位運算2556.2.7BCD運算2556.2.8冒泡分類算法2556.2.9設(shè)置和使用模擬比較器2556.2.10半雙工中斷方式UART應(yīng)用一2556.2.11半雙工中斷方式UART應(yīng)用二2566.2.128位精度A/D轉(zhuǎn)換器2566.2.13裝載程序存儲器2566.2.14安裝和使用相同模擬比較器2566.2.15CRC程序存儲的檢查2566.2.164×4鍵區(qū)休眠觸發(fā)方式2576.2.17多工法驅(qū)動LED和4×4鍵區(qū)掃描2576.2.18I2C總線2576.2.19I2C工作2586.2.20SPI軟件2586.2.21驗證SLAVR實驗器及AT90S1200的口功能12596.2.22驗證SLAVR實驗器及AT90S1200的口功能22596.2.23驗證SLAVR實驗器及具有DIP40封裝的口功能第七章AVR單片機的應(yīng)用7.1通用延時子程序2607.2簡單I/O口輸出實驗2667.2.1SLAVR721.ASM 2667.2.2SLAVR722.ASM2677.2.3SLAVR723.ASM2687.2.4SLAVR724.ASM2707.2.5SLAVR725.ASM2717.2.6SLAVR726.ASM2727.2.7SLAVR727.ASM2737.3綜合程序2747.3.1LED/LCD/鍵盤掃描綜合程序2747.3.2LED鍵盤掃描綜合程序2757.3.3在LED上實現(xiàn)字符8的循環(huán)移位顯示程序2757.3.4電腦放音機2777.3.5鍵盤掃描程序2857.3.6十進制計數(shù)顯示2867.3.7廉價的A/D轉(zhuǎn)換器2897.3.8高精度廉價的A/D轉(zhuǎn)換器2947.3.9星星燈2977.3.10按鈕猜數(shù)程序2987.3.11漢字的輸入3047.4復(fù)雜實用程序3067.4.110位A/D轉(zhuǎn)換3067.4.2步進電機控制程序3097.4.3測脈沖寬度3127.4.4LCD顯示8字循環(huán)3187.4.5LED電腦時鐘3247.4.6測頻率3307.4.7測轉(zhuǎn)速3327.4.8AT90S8535的A/D轉(zhuǎn)換334第八章BASCOMAVR的應(yīng)用8.1基于高級語言BASCOMAVR的單片機開發(fā)平臺3408.2BASCOMAVR軟件平臺的安裝與使用3418.3AVR I/O口的應(yīng)用3458.3.1LED發(fā)光二極管的控制3458.3.2簡易手控廣告燈3468.3.3簡易電腦音樂放音機3478.4LCD顯示器3498.4.1標準LCD顯示器的應(yīng)用3498.4.2簡單游戲機--按鈕猜數(shù)3518.5串口通信UART3528.5.1AVR系統(tǒng)與PC的簡易通信3538.5.2PC控制的簡易廣告燈3548.6單總線接口和溫度計3568.7I2C總線接口和簡易IC卡讀寫器359第九章ICC AVR C編譯器的使用9.1ICC AVR的概述3659.1.1介紹ImageCraft的ICC AVR3659.1.2ICC AVR中的文件類型及其擴展名3659.1.3附注和擴充3669.2ImageCraft的ICC AVR編譯器安裝3679.2.1安裝SETUP.EXE程序3679.2.2對安裝完成的軟件進行注冊3679.3ICC AVR導(dǎo)游3689.3.1起步3689.3.2C程序的剖析3699.4ICC AVR的IDE環(huán)境3709.4.1編譯一個單獨的文件3709.4.2創(chuàng)建一個新的工程3709.4.3工程管理3719.4.4編輯窗口3719.4.5應(yīng)用構(gòu)筑向?qū)?719.4.6狀態(tài)窗口3719.4.7終端仿真3719.5C庫函數(shù)與啟動文件3729.5.1啟動文件3729.5.2常用庫函數(shù)3729.5.3字符類型庫3739.5.4浮點運算庫3749.5.5標準輸入/輸出庫3759.5.6標準庫和內(nèi)存分配函數(shù)3769.5.7字符串函數(shù)3779.5.8變量參數(shù)函數(shù)3799.5.9堆棧檢查函數(shù)3799.6AVR硬件訪問的編程3809.6.1訪問AVR的底層硬件3809.6.2位操作3809.6.3程序存儲器和常量數(shù)據(jù)3819.6.4字符串3829.6.5堆棧3839.6.6在線匯編3839.6.7I/O寄存器3849.6.8絕對內(nèi)存地址3849.6.9C任務(wù)3859.6.10中斷操作3869.6.11訪問UART3879.6.12訪問EEPROM3879.6.13訪問SPI3889.6.14相對轉(zhuǎn)移/調(diào)用的地址范圍3889.6.15C的運行結(jié)構(gòu)3889.6.16匯編界面和調(diào)用規(guī)則3899.6.17函數(shù)返回非整型值3909.6.18程序和數(shù)據(jù)區(qū)的使用3909.6.19編程區(qū)域3919.6.20調(diào)試3919.7應(yīng)用舉例*3929.7.1讀/寫口3929.7.2延時函數(shù)3929.7.3讀/寫EEPROM3929.7.4AVR的PB口變速移位3939.7.5音符聲程序3939.7.68字循環(huán)移位顯示程序3949.7.7鋸齒波程序3959.7.8正三角波程序3969.7.9梯形波程序396附錄1AT89系列單片機簡介398附錄2AT94K系列現(xiàn)場可編程系統(tǒng)標準集成電路401附錄3指令集綜合404附錄4AVR單片機選型表408參 考 文 獻412
上傳時間: 2013-11-08
上傳用戶:xcy122677
PLC 以 其 可靠性高、抗干擾能力強、配套齊全、功能完善、適應(yīng)性強等特點,廣泛應(yīng)用于各種控制領(lǐng)域。PLC作為通用工業(yè)控制計算機,是面向工礦企業(yè)的工控設(shè)備,使用梯形圖符號進行編程,與繼電器電路相當接近,被廣大工程技術(shù)人員接受。但是在實際應(yīng)用中,如何編程能夠提高PLC程序運行速度是一個值得我們思考研究的問題。1 PLC工作原理PLC 與 計 算機的工作原理基本相同,即在系統(tǒng)程序的管理下,通過運行應(yīng)用程序完成用戶任務(wù)。但兩者的工作方式有所不同。計算機一般采用等待命令的工作方式,而PLC在確定了工作任務(wù)并裝人了專用程序后成為一種專用機,它采用循環(huán)掃描工作方式,系統(tǒng)工作任務(wù)管理及應(yīng)用程序執(zhí)行都是用循環(huán)掃描方式完成的。PLC 有 兩 種基本的工作狀態(tài),即運行(RUN)與停止(STOP)狀態(tài)。在這兩種狀態(tài)下,PLC的掃描過程及所要完成的任務(wù)是不盡相同的,如圖1所示。 PLC在RUN工作狀態(tài)時,執(zhí)行一次掃描操作所的時間稱為掃描周期,其典型值通常為1一100nis,不同PLC廠家的產(chǎn)品則略有不同。掃描周期由內(nèi)部處理時間、輸A/ 輸出處理執(zhí)行時間、指令執(zhí)行時間等三部分組成。通常在一個掃描過程中,執(zhí)行指令的時間占了絕大部分,而執(zhí)行指令的時間與用戶程序的長短有關(guān)。用戶 程 序 是根據(jù)控制要求由用戶編制,由許多條PLC指令所組成。不同的指令所對應(yīng)的程序步不同,以三菱FX2N系列的PLC為例,PLC對每一個程序步操作處理時間為:基本指令占0.741s/步,功能指令占幾百微米/步。完成一個控制任務(wù)可以有多種編制程序的方法,因此,選擇合理、巧妙的編程方法既可以大大提高程序運行速度,又可以保證可靠性。 提高PLC程序運行速度的幾種編程方法2.1 用數(shù)據(jù)傳送給位元件組合的方法來控制輸出在 PL C應(yīng) 用編程中,最后都會有一段輸出控制程序,一般都是用邏輯取及輸出指令來編寫,如圖2所示。在圖2所示的程序中,邏輯取的程序步為1,輸出的程序步為2,執(zhí)行上述程序共需3個程序步。通常情況下,PLC要控制的輸出都不會是少量的,比如,有8個輸出,在條件滿足時要同時輸出。此時,執(zhí)行圖2所示的程序共需17個程序步。若我們通過位元件的組合并采用數(shù)據(jù)傳送的方法來完成圖2所示的程序,就會大大減少程序步驟。在三 菱 PLC中,只處理ON/OFF狀態(tài)的元件(如X,Y,M和S),稱為位元件。但將位元件組合起來也可以處理數(shù)據(jù)。位元件組合由Kn加首元件號來表示。位元件每4bit為一組組合成單元。如KYO中的n是組數(shù),當n=1時,K,Yo 對應(yīng)的是Y3一Yo。當n二2時,KZYo對應(yīng)的是Y7一Yo。通過位元件組合,就可以用處理數(shù)據(jù)的方式來處理位元件,圖2程序所示的功能可用圖3所示的傳送數(shù)據(jù)的方式來完成。
上傳時間: 2013-11-11
上傳用戶:幾何公差
《數(shù)字信號處理實踐方法(第二版)》根據(jù)實際工程應(yīng)用和具體實例,詳細介紹了數(shù)字信號處理(DSP)領(lǐng)域內(nèi)的基本概念和相關(guān)技術(shù)。全書共分為14章,首先講解了DSP的基本概念及其應(yīng)用,并從實際的例子出發(fā),闡述了DSP的一些基本內(nèi)容,如信號的抽樣、量化及其在實時DSP上的內(nèi)涵。然后,作者介紹了離散變換(DFT和FFT),離散時間信號與系統(tǒng)分析的工具(z變換),以及DSP的基本運算(相關(guān)和卷積),并分析了數(shù)字濾波器設(shè)計的實際問題。《數(shù)字信號處理實踐方法(第二版)》還介紹了多抽樣率數(shù)字信號處理、自適應(yīng)數(shù)字濾波器、譜估計及其分析等現(xiàn)代數(shù)字信號處理理論,最后討論了通用和專用數(shù)字信號處理器、定點DSP系統(tǒng)有限字長效應(yīng)分析及DSP的應(yīng)用和設(shè)計實例。另外,書中還提供了有關(guān)范例和實驗的MATLAB實現(xiàn)方法。 《數(shù)字信號處理實踐方法(第二版)》可作為通信與電子信息類專業(yè)高年級本科生和研究生的教材或教學(xué)參考書,而且對于相關(guān)學(xué)科的工程技術(shù)人員也具有很好的參考價值。
標簽: 數(shù)字信號處理 實踐
上傳時間: 2013-12-30
上傳用戶:assef
提出了一種在TI公司高性能數(shù)字信號處理器TMS320DM3730上進行H.264編碼器(即x264編碼器)移植與優(yōu)化的方法,詳細描述了在CCS4.2開發(fā)平臺上進行x264編碼器移植工作的基本原理和需要注意的問題。為了提高編碼速度,針對DM3730處理器的結(jié)構(gòu)特點,對x264編碼器進行了優(yōu)化,主要方法包括編譯器優(yōu)化、內(nèi)存優(yōu)化、C語言代碼優(yōu)化及匯編代碼優(yōu)化。對x264編碼器進行的CIF格式編碼測試結(jié)果表明,在均值信噪比略微降低的前提下,編碼速度得到了顯著提高,因此獲得了更優(yōu)的編碼效率。
上傳時間: 2013-10-30
上傳用戶:evil
簡要介紹了DSP的發(fā)展歷程、技術(shù)應(yīng)用、基本特點以及在我國市場的前景情況,并詳細闡述了DSP結(jié)構(gòu)的主要特點和基本功能,介紹了DSP的工作原理和運算方法,對DSP的數(shù)值計算測試方法進行了深入的研究和探索,著重論述了DSP的數(shù)值表示方法、核心運算功能測試算法以及各種復(fù)雜指令的應(yīng)用,對測試過程中主要的關(guān)鍵和難點進行闡述。
上傳時間: 2013-10-31
上傳用戶:ddddddd
1.2 FPGA的設(shè)計方法與要求。
上傳時間: 2014-12-28
上傳用戶:JIMMYCB001
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1