Skip to content

Commit

Permalink
Change robot spi timing in zone3 and zone3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
cgarlati committed Sep 17, 2021
1 parent 5ee425a commit 543b600
Show file tree
Hide file tree
Showing 7 changed files with 19 additions and 17 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ all: clean
# $(MAKE) -C zone3.1
$(MAKE) -C zone4
$(MAKE) -C bsp/$(BOARD)/boot

java -jar multizone.jar \
--arch $(BOARD) \
--config bsp/$(BOARD)/multizone.cfg \
Expand Down
2 changes: 1 addition & 1 deletion bsp/E31/memory.lds
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Copyright(C) 2020 Hex Five Security, Inc. - All Rights Reserved */

flash = 0x40400000;
itim = 0x08000000; /* 16K */
itim = 0x01800000; /* 16K */
dtim = 0x80000000; /* 64K */
Binary file modified bsp/E31/memory.ods
Binary file not shown.
Binary file modified bsp/S51/memory.ods
Binary file not shown.
Binary file modified multizone.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions zone3.1/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ static uint32_t spi_rw(const uint32_t cmd){

for (uint32_t i = 1<<31; i != 0; i >>= 1){

BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TCK);

if (tx_data & i)
BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TDO);
else
BITCLR(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TDO);

BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TCK);

BITCLR(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TCK);

if( GPIO_REG(GPIO_INPUT_VAL) & (1<< SPI_TDI) )
Expand Down
29 changes: 15 additions & 14 deletions zone3/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
#define SPI_TDO 9 // out
//#define SPI_SYN 8 // out - not used

#define MAN_CMD_TIME 200*RTC_FREQ/1000 // 200ms
#define MAN_CMD_TIME RTC_FREQ/1000*200 // 200ms
#define KEEP_ALIVE_TIME 1*RTC_FREQ // 1 sec
#define LED_TIME 20*RTC_FREQ/1000 // 20ms
#define LED_TIME RTC_FREQ/1000*20 // 20ms

static uint8_t CRC8(const uint8_t bytes[]){

Expand All @@ -40,20 +40,21 @@ static uint32_t spi_rw(const uint32_t cmd){

uint32_t rx_data = 0;

for (uint32_t i = 1<<31; i != 0; i = i>>1){
for (uint32_t i = 1<<31; i != 0; i >>= 1){

if (tx_data & i)
GPIO_REG(GPIO_OUTPUT_VAL) |= (1 << SPI_TDO);
else
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1 << SPI_TDO);
BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TCK);

GPIO_REG(GPIO_OUTPUT_VAL) |= (1 << SPI_TCK);
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1 << SPI_TCK);
if (tx_data & i)
BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TDO);
else
BITCLR(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TDO);

if( GPIO_REG(GPIO_INPUT_VAL) & (1<< SPI_TDI) )
rx_data |= i;
BITCLR(GPIO_BASE+GPIO_OUTPUT_VAL, 1 << SPI_TCK);

}
if( GPIO_REG(GPIO_INPUT_VAL) & (1<< SPI_TDI) )
rx_data |= i;

}

return rx_data;
}
Expand Down Expand Up @@ -137,13 +138,13 @@ uint64_t task2(){ // Keep alive 1sec
const uint64_t time = MZONE_RDTIME();

// Turn on LED & start LED timer
GPIO_REG(GPIO_OUTPUT_VAL) |= (1<<LED);
BITSET(GPIO_BASE+GPIO_OUTPUT_VAL, 1<<LED);
timer_set(3, time + LED_TIME);

return time + KEEP_ALIVE_TIME;
}
uint64_t task3(){ // LED off
GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1<<LED);
BITCLR(GPIO_BASE+GPIO_OUTPUT_VAL, 1<<LED);
return UINT64_MAX;
}

Expand Down

0 comments on commit 543b600

Please sign in to comment.