add sharedmem read
This commit is contained in:
parent
97962b8e89
commit
6ef9989320
@ -52,6 +52,7 @@ void shared_memory_scratchpad_tx_restore()
|
|||||||
sram_write(SHARED_MEM_TX_LOC_PAYLOAD, scratchpad_payload);
|
sram_write(SHARED_MEM_TX_LOC_PAYLOAD, scratchpad_payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void shared_memory_irq_hook()
|
void shared_memory_irq_hook()
|
||||||
{
|
{
|
||||||
irq_addr_lo = sram_read(SHARED_IRQ_LOC_LO);
|
irq_addr_lo = sram_read(SHARED_IRQ_LOC_LO);
|
||||||
@ -84,10 +85,9 @@ void shared_memory_write(uint8_t cmd, uint8_t value)
|
|||||||
snes_bus_active();
|
snes_bus_active();
|
||||||
_delay_ms(50);
|
_delay_ms(50);
|
||||||
|
|
||||||
|
|
||||||
avr_bus_active();
|
avr_bus_active();
|
||||||
snes_irq_lo();
|
//snes_irq_lo();
|
||||||
snes_irq_off();
|
//snes_irq_off();
|
||||||
snes_lorom();
|
snes_lorom();
|
||||||
snes_wr_disable();
|
snes_wr_disable();
|
||||||
|
|
||||||
@ -95,3 +95,50 @@ void shared_memory_write(uint8_t cmd, uint8_t value)
|
|||||||
shared_memory_irq_restore();
|
shared_memory_irq_restore();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void shared_memory_yield()
|
||||||
|
{
|
||||||
|
|
||||||
|
snes_hirom();
|
||||||
|
snes_wr_disable();
|
||||||
|
snes_bus_active();
|
||||||
|
|
||||||
|
_delay_ms(10);
|
||||||
|
|
||||||
|
avr_bus_active();
|
||||||
|
snes_lorom();
|
||||||
|
snes_wr_disable();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer)
|
||||||
|
{
|
||||||
|
uint8_t state;
|
||||||
|
|
||||||
|
|
||||||
|
state = sram_read(SHARED_MEM_RX_LOC_STATE);
|
||||||
|
if (state != SHARED_MEM_RX_AVR_ACK){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*cmd = sram_read(SHARED_MEM_RX_LOC_CMD);
|
||||||
|
*len = sram_read(SHARED_MEM_RX_LOC_LEN);
|
||||||
|
info("Read shared memory 0x%04x=0x%02x 0x%04x=0x%02x \n",
|
||||||
|
SHARED_MEM_RX_LOC_CMD, *cmd, SHARED_MEM_RX_LOC_LEN, *len);
|
||||||
|
|
||||||
|
sram_bulk_read_buffer(SHARED_MEM_RX_LOC_PAYLOAD,buffer, *len);
|
||||||
|
sram_write(SHARED_MEM_RX_LOC_STATE, SHARED_MEM_RX_AVR_RTS);
|
||||||
|
|
||||||
|
snes_hirom();
|
||||||
|
snes_wr_disable();
|
||||||
|
snes_bus_active();
|
||||||
|
_delay_ms(50);
|
||||||
|
|
||||||
|
avr_bus_active();
|
||||||
|
//snes_irq_lo();
|
||||||
|
//snes_irq_off();
|
||||||
|
snes_lorom();
|
||||||
|
snes_wr_disable();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@ -55,6 +55,6 @@
|
|||||||
#define SHARED_IRQ_HANDLER_HI 0x10
|
#define SHARED_IRQ_HANDLER_HI 0x10
|
||||||
|
|
||||||
void shared_memory_write(uint8_t cmd, uint8_t value);
|
void shared_memory_write(uint8_t cmd, uint8_t value);
|
||||||
void shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
|
int shared_memory_read(uint8_t *cmd, uint8_t *len,uint8_t *buffer);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user