Пн янв 24, 2022 17:16:51
Пн янв 24, 2022 17:20:42
Пн янв 24, 2022 17:50:27
Пн янв 24, 2022 18:14:55
Пн янв 24, 2022 18:59:26
Пн янв 24, 2022 20:36:31
Вт янв 25, 2022 10:02:34
void volatile init()
{
};
Вт янв 25, 2022 10:52:55
Вт янв 25, 2022 11:03:23
Вт янв 25, 2022 11:22:32
Вт янв 25, 2022 11:29:19
Ср янв 26, 2022 18:22:03
Ср янв 26, 2022 19:22:14
Чт янв 27, 2022 09:21:43
Сб янв 29, 2022 19:22:51
uint32_t fram_log_decode (instance_t *instance, int *none) {
static data_buffer_t log_buffer;
unsigned int record_count = 0, ii, jj, mask;
FRAM_dma_read_Start(0x00000));
FRAM_dma_log_read((uint8_t*)&record_count, sizeof(record_count)));
FRAM_dma_wait_EOT();
for (ii = 0; ii < record_count; ii++) {
FRAM_dma_log_read((uint8_t*)&log_buffer, sizeof(log_buffer)));
итд...
Сб янв 29, 2022 19:39:46
Сб янв 29, 2022 21:35:50
Сб янв 29, 2022 22:41:06
Вс янв 30, 2022 12:11:20
А там не на что смотреть - просто 23 байта:VladislavS писал(а):Тут надо смотреть что такое data_buffer_t.
typedef struct data_buffer {
uint32_t Time; // 4
union{
struct{
int16_t setspeedLeft; // 2
int16_t setspeedRight; // 2
int16_t RealSpeedLeft; // 2
int16_t RealSpeedRight; // 2
int32_t StepsLeft; // 4
int32_t StepsRight; // 4
uint8_t vbat;
uint8_t sensors;
};
struct{
int coordX; // 4
int coordY; // 4
unsigned int segmentLength; // 4
int nodeNum; // 4
};
};
uint8_t whereami;
} __attribute__((packed)) data_buffer_t;
uint32_t fram_log_decode (instance_t *instance, int *none) {
data_buffer_t log_buffer;
volatile unsigned int record_count = 0;
unsigned int ii, jj, mask;
if (FRAM_dma_read_Start(0x00000)) return 1;
if (FRAM_dma_log_read((uint8_t*)&record_count, sizeof(record_count))) return 1;
FRAM_dma_wait_EOT();
instance->UART_OutString(".\r\n");
for (ii = 0; ii < record_count; ii++) {
if (FRAM_dma_log_read((uint8_t*)&log_buffer, sizeof(log_buffer))) return 1;
FRAM_dma_wait_EOT();
if (log_buffer.whereami) {
instance->UART_OutUDec(log_buffer.Time);
instance->UART_OutChar(',');
mask = 1;
for (jj = 0; jj < 8; jj++) {
if (log_buffer.sensors & mask) instance->UART_OutChar('#');
else instance->UART_OutChar(' ');
mask <<= 1;
}
instance->UART_OutChar(',');
if (log_buffer.whereami & LEFT_MASK) instance->UART_OutChar('L'); else instance->UART_OutChar(' ');
if (log_buffer.whereami & STRAIGHT_MASK) instance->UART_OutChar('S'); else instance->UART_OutChar(' ');
if (log_buffer.whereami & RIGHT_MASK) instance->UART_OutChar('R'); else instance->UART_OutChar(' ');
instance->UART_OutChar(',');
switch (log_buffer.whereami & 0x07) {
case Entrance:
instance->UART_OutString("Entrance");
break;
case Solve:
instance->UART_OutString("Solve");
break;
case Segment:
instance->UART_OutString("Segment");
break;
case Turn:
instance->UART_OutString("Turn");
break;
}
instance->UART_OutChar(',');
instance->UART_OutUDec(log_buffer.vbat);
instance->UART_OutChar(',');
if (log_buffer.setspeedLeft < 0) {
log_buffer.setspeedLeft = -log_buffer.setspeedLeft;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.setspeedLeft);
instance->UART_OutChar(',');
if (log_buffer.setspeedRight < 0) {
log_buffer.setspeedRight = -log_buffer.setspeedRight;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.setspeedRight);
instance->UART_OutChar(',');
if (log_buffer.RealSpeedLeft < 0) {
log_buffer.RealSpeedLeft = -log_buffer.RealSpeedLeft;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.RealSpeedLeft);
instance->UART_OutChar(',');
if (log_buffer.RealSpeedRight < 0) {
log_buffer.RealSpeedRight = -log_buffer.RealSpeedRight;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.RealSpeedRight);
instance->UART_OutChar(',');
if (log_buffer.StepsLeft < 0) {
log_buffer.StepsLeft = -log_buffer.StepsLeft;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.StepsLeft);
instance->UART_OutChar(',');
if (log_buffer.StepsRight < 0) {
log_buffer.StepsRight = -log_buffer.StepsRight;
instance->UART_OutChar('-');
}
instance->UART_OutUDec(log_buffer.StepsRight);
instance->UART_OutString("\r\n");
} else {
instance->UART_OutString("Segment Length = ");
instance->UART_OutUDec(log_buffer.segmentLength);
instance->UART_OutString("\r\nCurrent index = ");
instance->UART_OutUDec(log_buffer.nodeNum);
instance->UART_OutString(" , Coord X = ");
if (log_buffer.coordX < 0) { instance->UART_OutChar('-'); instance->UART_OutUDec(-log_buffer.coordX); }
else { instance->UART_OutUDec(log_buffer.coordX); }
instance->UART_OutString(" , Coord Y = ");
if (log_buffer.coordY < 0) { instance->UART_OutChar('-'); instance->UART_OutUDec(-log_buffer.coordY); }
else { instance->UART_OutUDec(log_buffer.coordY); }
instance->UART_OutString("\r\n");
}
}
return FRAM_dma_log_Stop();
}
33609, # , ,Segment,71,9542,10458,10712,11172,6201,6199
33614, # , ,Segment,72,9542,10458,10712,11172,6203,6201
33619, # , ,Segment,68,9542,10458,10255,10554,6204,6202
33624, # , ,Segment,68,9542,10458,10255,10554,6206,6204
33629, # , ,Segment,71,9542,10458,10902,10614,6208,6205
33634, ## #, ,Segment,72,9542,10458,10902,10614,6209,6207
33639, ####, ,Segment,69,-10102,17000,10333,10012,6211,6208
33644, ####, ,Segment,68,6900,13100,10333,10012,6212,6210
33649, ####,L ,Solve,71,10000,10000,10040,10605,6214,6212
33654, ####,L ,Solve,72,10000,10000,10040,10605,6215,6213
33659, ####,L ,Solve,70,10000,10000,9016,10230,6216,6215
33664, ####,L ,Solve,69,10000,10000,9016,10230,6218,6216
33669, ####,L ,Solve,72,10000,10000,8425,10972,6219,6218
33674, ####,L ,Solve,72,10000,10000,8425,10972,6220,6220
33679, ####,L ,Solve,69,10000,10000,7808,10515,6221,6221
33684, ####,L ,Solve,69,10000,10000,7808,10515,6222,6223
33689, ####,L ,Solve,72,10000,10000,7391,11053,6223,6224
33694, ####,L ,Solve,72,10000,10000,7391,11053,6224,6226
33699, ####,L ,Solve,69,10000,10000,6825,10533,6225,6228
33704, # ##,L ,Solve,68,10000,10000,6825,10533,6226,6229
33709, # ,L ,Solve,72,10000,10000,7194,11106,6227,6231
33714, # ,L ,Solve,72,10000,10000,7194,11106,6228,6233
33719, # ,L ,Solve,69,10000,10000,6855,10557,6229,6234
33724, # ,L ,Solve,68,10000,10000,6855,10557,6231,6236
33729, # ,L ,Solve,71,10000,10000,7543,10789,6232,6237
33734, # ,L ,Solve,72,10000,10000,7543,10789,6233,6239
33739, # ,L ,Solve,68,10000,10000,7529,10208,6234,6240
33744, # ,L ,Solve,67,10000,10000,7529,10208,6235,6242
33749, ## ,L ,Solve,71,10000,10000,8199,10715,6237,6244
33754, ## ,L ,Solve,72,10000,10000,8199,10715,6238,6245
33759, ## ,L ,Solve,68,10000,10000,8409,10054,6239,6247
Segment Length = 143
Current index = 4 , Coord X = 664 , Coord Y = 163
33765, ## , S ,Solve,67,10000,10000,8409,10054,6241,6248
33769, ## , S ,Solve,71,10000,10000,9429,10464,6242,6250
33774, ## , S ,Solve,72,10000,10000,9429,10464,6243,6251
33779, ## , S ,Solve,68,10000,10000,9245,9851,6245,6253
33784, ## , S ,Solve,67,10000,10000,9245,9851,6246,6254
33789, ## , S ,Solve,71,10000,10000,10032,10219,6248,6256
unsigned int FRAM_log_read(uint8_t *rd_data_ptr, unsigned int wr_data_size) {
while (wr_data_size--) {
*rd_data_ptr++ = get_byte_from_fram();
}
}
unsigned int FRAM_dma_log_read(uint8_t *rd_data_ptr, unsigned int rd_data_size) {
if (UCB0NSS != 0) return 1;
while (fram_write_busy) continue;
EUSCI_B0->RXBUF;
MAP_DMA_assignChannel(DMA_CH0_EUSCIB0TX0);
MAP_DMA_assignChannel(DMA_CH1_EUSCIB0RX0);
MAP_DMA_setChannelControl(DMA_CH0_EUSCIB0TX0 | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1);
MAP_DMA_setChannelControl(DMA_CH1_EUSCIB0RX0 | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1);
/* Setup the RX transfer characteristics & buffers */
MAP_DMA_setChannelTransfer(DMA_CH1_EUSCIB0RX0 | UDMA_PRI_SELECT,
UDMA_MODE_BASIC,
(void *) MAP_SPI_getReceiveBufferAddressForDMA(EUSCI_B0_BASE),
rd_data_ptr,
rd_data_size);
/* Setup the TX transfer characteristics & buffers */
MAP_DMA_setChannelTransfer(DMA_CH0_EUSCIB0TX0 | UDMA_PRI_SELECT,
UDMA_MODE_BASIC, (void *) rd_data_ptr,
(void *) MAP_SPI_getTransmitBufferAddressForDMA(EUSCI_B0_BASE),
rd_data_size);
/* Assigning/Enabling Interrupts */
MAP_DMA_assignInterrupt(DMA_INT0, DMA_CHANNEL_1);
MAP_Interrupt_enableInterrupt(INT_DMA_INT0);
MAP_DMA_enableInterrupt(INT_DMA_INT0);
fram_write_busy = 1;
MAP_DMA_enableChannel(1);
MAP_DMA_enableChannel(0);
return 0;
}
Вс янв 30, 2022 12:50:38