Pārlūkot izejas kodu

Fix order of the bit fields of the register definitions

Bernd Gottschlag 5 gadus atpakaļ
vecāks
revīzija
780cedcbc4

+ 0
- 2
weather-sensor/firmware/main.c Parādīt failu

@@ -77,8 +77,6 @@ int main (void)
77 77
 	while(1)
78 78
 	{
79 79
 		Send_Test_Message();
80
-		sprintf(debugString, "%s\r\n", "test message");
81
-		Print_Debug_String(debugString);
82 80
 		_delay_ms(1000);
83 81
 	}
84 82
 }

+ 8
- 12
weather-sensor/firmware/nrf24l01.c Parādīt failu

@@ -102,9 +102,7 @@ void Send_Test_Message(void)
102 102
 {
103 103
 	uint8_t buffer[4] = {0xDE, 0xAD, 0xBE, 0xEF};
104 104
 	bool transmissionFinished = false;
105
-	uint8_t statusContent = 0;
106 105
 
107
-	uint8_t registerContent[5];
108 106
 	STATUS_REGISTER statusRegisterContents = {.byte = 0x0};
109 107
 	uint8_t lengthRead;
110 108
 	char debugString[50] = "";
@@ -136,21 +134,21 @@ void Send_Test_Message(void)
136 134
 			Print_Debug_String(debugString);
137 135
 		}
138 136
 
139
-		if (statusRegisterContent.bits.TX_DS == true)
137
+		if (statusRegisterContents.bits.TX_DS == 1)
140 138
 		{
141 139
 			transmissionFinished = true;
142 140
 			sprintf(debugString, "%s\r\n", "TX fin");
143 141
 			Print_Debug_String(debugString);
144 142
 		}
145 143
 
146
-		if (statusRegisterContent.bits.MAX_RT == true)
144
+		if (statusRegisterContents.bits.MAX_RT == 1)
147 145
 		{
148
-			transmissionFinished = true;
146
+			transmissionFinished = true; //TODO: indicate failure
149 147
 			sprintf(debugString, "%s\r\n", "max ret");
150 148
 			Print_Debug_String(debugString);
151 149
 		}
152 150
 		
153
-		timeout ++;
151
+		timeout ++; // TODO: this should work without the time out, as MAX_RT should be triggered if no ACK is received
154 152
 	} while ((transmissionFinished == false) && (timeout < 0xFF));
155 153
 
156 154
 	if (timeout >= 0xFF)
@@ -160,12 +158,10 @@ void Send_Test_Message(void)
160 158
 	}
161 159
 
162 160
 	/* Reset the interrupts */
163
-	lengthRead = Read_NRF_Register(STATUS_ADDRESS, statusRegisterContents); /* TODO: use status register read function */
164
-	statusContent = registerContent[0] & 0x0F;
165
-	statusRegisterContents.bits.RX_DR = false;
166
-	statusRegisterContents.bits.TX_DS = false;
167
-	statusRegisterContents.bits.MAX_RT = false;
168
-	Write_NRF_Register(STATUS_ADDRESS, statusContent);
161
+	lengthRead = Read_NRF_Register(STATUS_ADDRESS, &(statusRegisterContents.byte)); /* TODO: use status register read function */
162
+	statusRegisterContents.bits.TX_DS = 1;
163
+	statusRegisterContents.bits.MAX_RT = 1;
164
+	Write_NRF_Register(STATUS_ADDRESS, statusRegisterContents.byte);
169 165
 
170 166
 	// TODO: flush FIFO if an error occured
171 167
 }

+ 24
- 22
weather-sensor/firmware/nrf24l01_definitions.h Parādīt failu

@@ -139,18 +139,20 @@ typedef union
139 139
 #define RF_OUTPUT_POWER_MINUS_16DBM
140 140
 #define RF_OUTPUT_POWER_0DBM
141 141
 
142
+// TODO: change order of all bit fields!!!
143
+
142 144
 /* STATUS */
143 145
 typedef union
144 146
 {
145 147
 	uint8_t byte;
146 148
 	struct
147 149
 	{
148
-		 uint8_t RESERVED : 1;
149
-		 uint8_t TX_DR    : 1;
150
-		 uint8_t TX_DS    : 1;
151
-		 uint8_t MAX_RT   : 1;
152
-		 uint8_t RX_P_NO  : 3;
153 150
 		 uint8_t TX_FULL  : 1;
151
+		 uint8_t RX_P_NO  : 3;
152
+		 uint8_t MAX_RT   : 1;
153
+		 uint8_t TX_DS    : 1;
154
+		 uint8_t RX_DR    : 1;
155
+		 uint8_t RESERVED : 1;
154 156
 	}bits;
155 157
 }STATUS_REGISTER;
156 158
 
@@ -162,8 +164,8 @@ typedef union
162 164
 	uint8_t byte;
163 165
 	struct
164 166
 	{
165
-		 uint8_t PLOS_CNT : 4;
166 167
 		 uint8_t ARC_CNT  : 4;
168
+		 uint8_t PLOS_CNT : 4;
167 169
 	}bits;
168 170
 }OBSERVE_TX_REGISTER;
169 171
 
@@ -173,8 +175,8 @@ typedef union
173 175
 	uint8_t byte;
174 176
 	struct
175 177
 	{
176
-		 uint8_t RESERVED : 7;
177 178
 		 uint8_t CD : 1;
179
+		 uint8_t RESERVED : 7;
178 180
 	}bits;
179 181
 }CD_REGISTER;
180 182
 
@@ -195,13 +197,13 @@ typedef union
195 197
 	uint8_t byte;
196 198
 	struct
197 199
 	{
198
-		 uint8_t RESERVED0 : 1;
199
-		 uint8_t TX_REUSE : 1;
200
-		 uint8_t TX_FULL  : 1;
201
-		 uint8_t TX_EMPTY : 1;
202
-		 uint8_t RESERVED1 : 2;
203
-		 uint8_t RX_FULL  : 1;
204 200
 		 uint8_t RX_EMPTY : 1;
201
+		 uint8_t RX_FULL  : 1;
202
+		 uint8_t RESERVED1 : 2;
203
+		 uint8_t TX_EMPTY : 1;
204
+		 uint8_t TX_FULL  : 1;
205
+		 uint8_t TX_REUSE : 1;
206
+		 uint8_t RESERVED0 : 1;
205 207
 	}bits;
206 208
 }FIFO_STATUS_REGISTER;
207 209
 
@@ -211,13 +213,13 @@ typedef union
211 213
 	uint8_t byte;
212 214
 	struct
213 215
 	{
214
-		 uint8_t RESERVED : 2;
215
-		 uint8_t DPL_P5   : 1;
216
-		 uint8_t DPL_P4   : 1;
217
-		 uint8_t DPL_P3   : 1;
218
-		 uint8_t DPL_P2   : 1;
219
-		 uint8_t DPL_P1   : 1;
220 216
 		 uint8_t DPL_P0   : 1;
217
+		 uint8_t DPL_P1   : 1;
218
+		 uint8_t DPL_P2   : 1;
219
+		 uint8_t DPL_P3   : 1;
220
+		 uint8_t DPL_P4   : 1;
221
+		 uint8_t DPL_P5   : 1;
222
+		 uint8_t RESERVED : 2;
221 223
 	}bits;
222 224
 }DYNPD_REGISTER;
223 225
 
@@ -227,10 +229,10 @@ typedef union
227 229
 	uint8_t byte;
228 230
 	struct
229 231
 	{
230
-		 uint8_t RESERVED   : 5;
231
-		 uint8_t EN_DPL     : 1;
232
-		 uint8_t EN_ACK_PAY : 1;
233 232
 		 uint8_t EN_DYN_ACK : 1;
233
+		 uint8_t EN_ACK_PAY : 1;
234
+		 uint8_t EN_DPL     : 1;
235
+		 uint8_t RESERVED   : 5;
234 236
 	}bits;
235 237
 }FEATURE_REGISTER;
236 238
 

Notiek ielāde…
Atcelt
Saglabāt