用HT82J97E實現帶震動的USB Joystick的設計
發布時間:2007/8/24 0:00:00 訪問次數:683
吳爍
本文主要介紹了HT82J97E針對USB Joystick而設計的硬件功能。
USB低速設備發展到現在已經相當成熟。帶震動的Joystick在市場上將會越來越普遍,為了讓開發者更能簡化程序和提高開發效率,盛群半導體設計出了HT82J97E,用以開發USB DEVICE。
功能及特點
圖1.方框圖
HT82J97E為八位高性能精簡指令集單片機。專為USB產品而設計的。集成了USB SIE,支持USB和PS2端口復用。適用于Joystick和Mouse設備。主要功能和特點如下:
1. 工作電壓:Fsys=6M/12MHz : 4.4V~5.5V;
2. 支持USB低速標準,有USB中斷,可以從每個endpoint讀取8*8位資料;
3. 最多可有20個雙向輸入/輸出口,都可以通過選擇是否帶有上拉電阻,這樣可以節省成本;
4. 2K*14位程序存儲ROM、96*8位數據存儲RAM和4層硬件堆棧;
5. PWM輸出PWM1,PWM2(頻率范圍是23Hz~23KHz);
6. 16位可編程定時/計數器,具有溢出中斷;
7. 6通道8位A/D轉換器;
8. HALT功能和喚醒功能能減小功耗;
9. 低電壓復位功能和Watch Dog定時器;
10. 3.3V標準輸出,可以連接到USB D-,PC就可以判斷其為USB低速設備;
USB和PS2端口共享
通過寄存器實現USB和PS2端口的切換
SELPS2=1BH.4 , SELUSB=1BH.5
SELPS2=1,SELUSB=0,工作在PS2狀態;
SELPS2=0,SELUSB=1,工作在USB狀態;
USB中斷
USB中斷是由USB以下列出事件觸發,相關的中斷請求位(USBF:INTC.4)被置位。
1. PC訪問USB FIFO;
2. 接受來自PC的USB暫停信號;
3. 接受來自PC的USB恢復信號;
4. USB復位信號
為Joystick震動設計的PWM輸出
PWM1DR(0CH)為PWM1占空比緩存器,PWM2(0DH)為PWM2占空比緩存器
PWMBR(18H)為PWM基礎周期緩存器
PWM占空比計算:
基礎周期=(4/Fsys)*(PWMBR+1)或(1/Fsys)*(PWMBR+1) (PWMBR=1~255)
4/Fsys或1/Fsys通過PORT_PC(16H)的PWM_S來定義。
PWM_S為1,1/Fsys;PWM_S為0,4/Fsys。
PWM周期=256*基礎周期
PWM1占空比=(PWM1DR+1)/256*100% (PWM1DR=0~255)
PWM2占空比=(PWM2DR+1)/256*100% (PWM1DR=0~255)
通過設定PORTC_PC(16H)的PWM1_EN位或PWM2_EN位來允許PWM功能。
PWM1_EN為1,允許PWM1輸出;PWM1_EN為0,不允許PWM1輸出;
PWM2_EN為1,允許PWM2輸出;PWM2_EN為0,不允許PWM2輸出。
由以上方法,可以輸出不同頻率和Duty的PWM,輸出控制給電機后得到的轉動速度不同,這樣使Joystick有不同的震動效果。
A/D轉換
參考電壓可以通過USR(0X1B) VRSEL位來進行選擇。
VRSEL為0,VRH=PB7口電壓,VRL=PB6口電壓;
VRSEL為1,VRH=VDD,VRL=0。
這樣讓A/D轉換更加靈活,能更好的適用于開發者使用。
軟件設計
&nb
吳爍
本文主要介紹了HT82J97E針對USB Joystick而設計的硬件功能。
USB低速設備發展到現在已經相當成熟。帶震動的Joystick在市場上將會越來越普遍,為了讓開發者更能簡化程序和提高開發效率,盛群半導體設計出了HT82J97E,用以開發USB DEVICE。
功能及特點
圖1.方框圖
HT82J97E為八位高性能精簡指令集單片機。專為USB產品而設計的。集成了USB SIE,支持USB和PS2端口復用。適用于Joystick和Mouse設備。主要功能和特點如下:
1. 工作電壓:Fsys=6M/12MHz : 4.4V~5.5V;
2. 支持USB低速標準,有USB中斷,可以從每個endpoint讀取8*8位資料;
3. 最多可有20個雙向輸入/輸出口,都可以通過選擇是否帶有上拉電阻,這樣可以節省成本;
4. 2K*14位程序存儲ROM、96*8位數據存儲RAM和4層硬件堆棧;
5. PWM輸出PWM1,PWM2(頻率范圍是23Hz~23KHz);
6. 16位可編程定時/計數器,具有溢出中斷;
7. 6通道8位A/D轉換器;
8. HALT功能和喚醒功能能減小功耗;
9. 低電壓復位功能和Watch Dog定時器;
10. 3.3V標準輸出,可以連接到USB D-,PC就可以判斷其為USB低速設備;
USB和PS2端口共享
通過寄存器實現USB和PS2端口的切換
SELPS2=1BH.4 , SELUSB=1BH.5
SELPS2=1,SELUSB=0,工作在PS2狀態;
SELPS2=0,SELUSB=1,工作在USB狀態;
USB中斷
USB中斷是由USB以下列出事件觸發,相關的中斷請求位(USBF:INTC.4)被置位。
1. PC訪問USB FIFO;
2. 接受來自PC的USB暫停信號;
3. 接受來自PC的USB恢復信號;
4. USB復位信號
為Joystick震動設計的PWM輸出
PWM1DR(0CH)為PWM1占空比緩存器,PWM2(0DH)為PWM2占空比緩存器
PWMBR(18H)為PWM基礎周期緩存器
PWM占空比計算:
基礎周期=(4/Fsys)*(PWMBR+1)或(1/Fsys)*(PWMBR+1) (PWMBR=1~255)
4/Fsys或1/Fsys通過PORT_PC(16H)的PWM_S來定義。
PWM_S為1,1/Fsys;PWM_S為0,4/Fsys。
PWM周期=256*基礎周期
PWM1占空比=(PWM1DR+1)/256*100% (PWM1DR=0~255)
PWM2占空比=(PWM2DR+1)/256*100% (PWM1DR=0~255)
通過設定PORTC_PC(16H)的PWM1_EN位或PWM2_EN位來允許PWM功能。
PWM1_EN為1,允許PWM1輸出;PWM1_EN為0,不允許PWM1輸出;
PWM2_EN為1,允許PWM2輸出;PWM2_EN為0,不允許PWM2輸出。
由以上方法,可以輸出不同頻率和Duty的PWM,輸出控制給電機后得到的轉動速度不同,這樣使Joystick有不同的震動效果。
A/D轉換
參考電壓可以通過USR(0X1B) VRSEL位來進行選擇。
VRSEL為0,VRH=PB7口電壓,VRL=PB6口電壓;
VRSEL為1,VRH=VDD,VRL=0。
這樣讓A/D轉換更加靈活,能更好的適用于開發者使用。
軟件設計
&nb