freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

xx新編基于以太網的用電監(jiān)控系統(tǒng)設計案例(編輯修改稿)

2024-12-18 12:06 本頁面
 

【文章內容簡介】 Delay_1ms(10)。 WriteToC02(AC_I_OFFSET_ADDR, AC_I_OFFSET, 3)。 //write AC_I_OFFSET TO EEPROM Delay_1ms(10)。 WriteToC02(AC_V_OFFSET_ADDR, AC_V_OFFSET, 3)。 //write AC_V_OFFSET TO EEPROM } void Start_AC_OFFSET_Adj(UINT8 *a, UINT8 *b, UINT8 *p, UINT8 *q) { Clear_DRDY()。 CS5460_WriteCommand(POWER_HALT)。 Clear_DRDY()。 CS5460_WriteCommand(DC_I_ADJ)。 Wait_DRDY_High()。 CS5460_ReadReg(I_DC_OFFSET, a)。 Clear_DRDY()。 CS5460_WriteCommand(DC_V_ADJ)。 Wait_DRDY_High()。 CS5460_ReadReg(V_DC_OFFSET, b)。 Clear_DRDY()。 CS5460_WriteCommand(AC_I_ADJ)。 Wait_DRDY_High()。 CS5460_ReadReg(I_AC_OFFSET, p)。 Clear_DRDY()。 CS5460_WriteCommand(AC_V_ADJ)。 Wait_DRDY_High()。 CS5460_ReadReg(I_AC_OFFSET, q)。 12 } 增益標定過程需要在電壓電流通道 加入標準的 電壓電流信號,假設為 I 和U ,在進行之前所述的校準之后,開啟轉換,分別獲得轉換結果 gI 和 gU ,再通過計算就可以得到電壓電流關系系數 xI 和 xU : gxgx UUUIII ?? , 按上述方法就可以將讀取到的數據,轉換成實際的電壓電流值。 程序如下: FP32 Get_VRMS(void) { UINT8 i,j。 UINT8 p[3]。 FP32 G = , temp = 。 FP32 VoltRMS。 Wait_DRDY_High()。 CS5460_ReadReg(LAST_V_RMS, p)。 Clear_DRDY()。 for(i=0。i=2。i++) { for(j=1。j=7。j++) { if( (p[i]amp。(1(8j))) != 0 ) temp+=G。 G = G/2。 } } VoltRMS = V * temp。 //黑體 V 為電壓關系系數 return VoltRMS。 } FP32 Get_IRMS(void) { UINT8 i,j。 UINT8 p[3]。 FP32 G = , temp = 。 FP32 CurrentRMS。 Wait_DRDY_High()。 CS5460_ReadReg(LAST_I_RMS, p)。 Clear_DRDY()。 for(i=0。i=2。i++) { for(j=1。j=7。j++) { if( (p[i]amp。(1(8j))) != 0 ) temp+=G。 G = G/2。 } } CurrentRMS = I * temp。 //黑體 I 為 電流 關系系數 return CurrentRMS。 } 網絡數據解析 前文指出, ENC28J60 的輸出的 是標準的以太網 幀 數據 (以太網的相關協議, 13 請參考其他文獻 ), MCU 需要對該數據進行解析。目前已有比較完善的嵌入式以太網協議棧,將該協議棧移植到自己的系統(tǒng)中,提供一些底層的函數即可,如Lwip。 本 系統(tǒng)中使用了一種很簡潔的以太網協議棧 。 相應的數據解析函數 如下: extern UINT16 NETPcCheckSum(UINT8 *buf, UINT16 len, UINT8 type)。 //校驗和 extern void NETPcInit(UINT8 *mymac, UINT8 *myip, UINT8 port)。 //設置本地的 IP、 MAC、端口 extern UINT8 NETPcEthIsArpAndMyIp(UINT8 *buf, UINT16 len)。 //檢查 ARP和本機地址是否正確 extern UINT8 NETPcEthIsIpAndMyIp(UINT8 *buf, UINT16 len)。 //檢查以太網類型、 IP 版本、 IP 地址 extern void NETPcMakeEth(UINT8 *buf)。 //建立以太網首部 extern void NETPcMakeIP(UINT8 *buf)。 //建立 IP 首部 extern void NETPcFillIPHdrChkSum(UINT8 *buf)。 //填充 IP 包校驗和 extern void NETPcMakeTcpHead(UINT8 *buf, UINT16 rel_ack_num, UINT8 mss, UINT8 cp_seq)。 //建立 TCP首部 extern void NETPcMakeArpAnswer(UINT8 *buf)。 //ARP 應答 extern void NETPcMakeEchoReply(UINT8 *buf, UINT16 len)。 //ECHO應答 extern void NETPcMakeUdpReply(UINT8 *buf, char *data, UINT8 datalen, UINT16 port)。 //填充 UDP 應答數據 extern void NETPcMakeTcpSynAck(UINT8 *buf)。 //TCP 同步應答 extern void NETPcInitLenInfo(UINT8 *buf)。 //初始化響應的數據長度 extern UINT16 NETPcGetTcpDataPointer(void)。 //獲取 TCP數據包指針 extern UINT16 Fill_tcp_data(UINT8 *buf, UINT16 pos, const char *s)。 //填充 TCP 數據 extern void NETPcMakeTcpAck(UINT8 *buf)。 //填充 TCP應答信息 extern void NETPcMakeTcpAckWithData(UINT8 *buf, UINT16 dlen)。 //發(fā)送 TCP 數據 操作系統(tǒng)任務與軟件流程 本系統(tǒng)移植了 嵌入式操作系統(tǒng) uCOSII,重點介紹系統(tǒng)的任務劃分,對于操作系統(tǒng)的移植不作過多闡述 。本系統(tǒng)需要下列任務結合完成功能: static void App_TaskCreate(void)。 //創(chuàng)建任務的函數 static void App_TaskStart(void *p_arg)。 //首個任務,用于創(chuàng)建其他任務, 調用 App_TaskCreate() static void EthRec_Task(void *p_arg)。 //網絡數據接受任務 static void EthRecAnalysis_Task(void *p_arg)。 //網絡數據標志位分析任務 static void SysInfoDisp_Task(void *p_arg)。 //系統(tǒng)信息顯示任務 static void Led1_Task(void *p_arg)。 //運行指示燈任務一 static void Led2_Task(void *p_arg)。 //運行指示燈任務二 static void Key_Task(void *p_arg)。 //鍵盤任務 static void ADJ_Task(void *p_arg)。 //校準任務 static void ReConfigEth_Task(void *p_arg)。 //網絡重配置任務 static void TimeSet_Task(void *p_arg)。 //RTC 時間校對 任務 上述任務之間使用操作系統(tǒng)提供的郵箱進行通信 ,某些任務由其他任務通過這種通信機制來觸發(fā) 。 網絡數據標志位分析 任務對接收到數據中的標志位進行解析, 來觸發(fā)網絡重配置任務和 RTC 時間校對任務 , 系統(tǒng)默認一個本地 IP 地址,若用戶要重新配置 IP 地址是允許的, 由網絡重配置任務 來完成; RTC 時間校對任務,是接受來自網絡的時間數據來校對系統(tǒng)的 RTC 時鐘。鍵盤任務負責觸發(fā)校準任務。 被觸發(fā)的任務往往只需要運行一次,所以在這些任務執(zhí)行一次后就要刪除它,來減輕操作系統(tǒng)的調 度。 14 前文 給出的轉換函數返回值是一個浮點數,為了方便數據傳輸,將浮點數轉成了一個 8位字符數組,函數如下: //浮點數轉換到字符數組 void Float_To_Array(UINT8 *temp, FP32 FloatVariables) { UINT8 i。 UINT8 *pdata = (UINT8 *)amp。FloatVariables。 for (i=0。 i4。 i++) { temp[i] = *pdata++。 } } 在軟件中定義了 兩個 與數據接收和發(fā)送相關的聯合體:union { UINT8 Temp[13]。 struct { UINT8 IP_Set_Flag :1。//網絡設置 UINT8 RTC_Set_Flag :1。//時間校對 UINT8 other_Flag :6。 //保留位 UINT8 Year[2]。 //年份兩字節(jié) UINT8 Mon。 //月份 UINT8 Day。 //日期 UINT8 Dow。 //星期 UINT8 Hour。 //小時 UINT8 Min。 //分鈡 UINT8 Sec。 //秒 UINT8 Rec_IP[4]。 //IP 地址 ,32位 }data。 }Eth_UDP_Rec。 union { UINT8 Temp[17]。 struct { UINT8 Meter_Flag :1。//正在測量 UINT8 RTC_Set_Flag :1。//正在校對 UINT8 other_Flag :6。 保留位 UINT8 T_Temp[4]。 溫度 值 字符數組 UINT8 V_Temp[4]。 電壓值 字符數組 UINT8 I_Temp[4]。 電流值 字符數組 UINT8 P_Temp[4]。 功率值 字符數組 }data。 }Eth_UDP_Sen。 軟件流程圖: 開 始u C O S I I 初 始 化板 級 的 硬 件 初 始 化創(chuàng) 建 首 個 任 務u C O S I I 運 行鍵 盤 任 務 系 統(tǒng) 信 息 顯 示 任 務 網 絡 數 據 接 收 任 務網 絡 數 據 標 志 位 分 析運 行 指 示 燈 任 務采 集 ?發(fā) 送 采 集 數 據 , 返 回 Y N時 間 校 對 ? 重 配 置 ? N N時 間 校 對 任 務執(zhí) 行 完 刪 除 任 務網 絡 重 配 置 任 務Y Y校 準 ? Y創(chuàng) 建 校 準 任 務 N執(zhí) 行 完 刪 除 任 務執(zhí) 行 完 刪 除 任 務圖 19 15 開發(fā)環(huán)境的使用 生成新的工作區(qū) 生成新的項目 設置項目選項 編譯鏈接和調試應用
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1