Bläddra i källkod

PCR板,通过强制EDS指针访问,解决访问出错问题

yidong.fan 1 månad sedan
förälder
incheckning
79e4bd6a50

+ 10 - 1
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c

@@ -1049,7 +1049,16 @@ void Uart1_Ack(void)
             g_ucU1RX_Data[3] +=ucBuffer_Data[0]&0xff;
             g_ucU1RX_Data[3] +=ucBuffer_Data[1]>>8;
             g_ucU1RX_Data[3] +=ucBuffer_Data[1]&0xff;
-            ucBuffer_Data[GlobalNum1+2]=g_ucU1RX_Data[3]<<8;         
+			unsigned int sum = 0;
+			__eds__ unsigned int *eds_ptr = ucBuffer_Data;  // ÏÔʽEDSÖ¸Õë
+			for(GlobalNum1=0;GlobalNum1<66;GlobalNum1++){
+				unsigned int temp = eds_ptr[GlobalNum1];
+				sum += (temp>>8)&0xff;
+				sum += (temp)&0xff;
+			}
+			sum = sum<<8;
+			
+            ucBuffer_Data[GlobalNum1]=sum;         
                      
             memset( uiAD_Max,0,16*sizeof(unsigned int));
             

+ 1 - 1
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-genesis.properties

@@ -1,5 +1,5 @@
 #
-#Wed Feb 04 11:54:04 CST 2026
+#Thu Feb 05 16:21:44 CST 2026
 default.languagetoolchain.version=2.10
 default.Pack.dfplocation=C\:\\Users\\onechip\\.mchp_packs\\Microchip\\dsPIC33E-GM-GP-MC-GU-MU_DFP\\1.0.23
 conf.ids=default

+ 15 - 3
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Uart.c

@@ -387,6 +387,8 @@ void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void) {
         g_BUSY2 = 1;
       } else {
         memset(g_ucU2RX_Data, 0, g_uiLth2 * sizeof(unsigned char));
+        g_uiUart2_No = 0;
+        g_ucHeaderFlag2 = 0;
         g_BUSY2 = 0;
       }
     } else if (g_uiUart2_No > g_uiLth2) {
@@ -426,6 +428,8 @@ void __attribute__((interrupt, no_auto_psv)) _U3RXInterrupt(void) {
         g_BUSY3 = 1;
       } else {
         memset(g_ucU3RX_Data, 0, g_uiLth3 * sizeof(unsigned char));
+        g_uiUart3_No = 0;
+        g_ucHeaderFlag3 = 0;
         g_BUSY3 = 0;
       }
     } else if (g_uiUart3_No > g_uiLth3) {
@@ -735,10 +739,18 @@ void Uart1_Ack_new(void) {
       }
     }
   } break;
-  case PCR_RDTEMP:
-  case RD_PCRDATA:
+ case PCR_RDTEMP: 
+ case PCR_SETCAP: 
+ case PCR_AUXER:  
+ case RD_PCRDATA:
+ 	if(g_ucU1RX_Data[2] == 2){
+    	outTime = OUTTIME60S;
+	}
+    break;  
   case PCR_MOTOR:
-    outTime = OUTTIME60S;
+ 	if(g_ucU1RX_Data[2] == 1){
+    	outTime = OUTTIME60S;
+	}
     break;
   default:
     break;