add system_t stuff to irq
This commit is contained in:
parent
1d0eae3aec
commit
cfceee4db3
@ -34,7 +34,9 @@
|
|||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "info.h"
|
#include "info.h"
|
||||||
#include "sram.h"
|
#include "sram.h"
|
||||||
|
#include "system.h"
|
||||||
|
|
||||||
|
extern system_t system;
|
||||||
|
|
||||||
void (*jump_to_app) (void) = 0x0000;
|
void (*jump_to_app) (void) = 0x0000;
|
||||||
|
|
||||||
@ -43,18 +45,21 @@ void irq_init(){
|
|||||||
PCMSK3 |=(1<<PCINT27);
|
PCMSK3 |=(1<<PCINT27);
|
||||||
PCICR |= (1<<PCIE3);
|
PCICR |= (1<<PCIE3);
|
||||||
sei();
|
sei();
|
||||||
|
system.reset_irq = RESET_IRQ_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_stop(){
|
void irq_stop(){
|
||||||
cli();
|
cli();
|
||||||
PCMSK3 &=~(1<<PCINT27);
|
PCMSK3 &=~(1<<PCINT27);
|
||||||
sei();
|
sei();
|
||||||
|
system.reset_irq = RESET_IRQ_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void leave_application(void)
|
void leave_application(void)
|
||||||
{
|
{
|
||||||
cli();
|
cli();
|
||||||
usbDeviceDisconnect();
|
usbDeviceDisconnect();
|
||||||
|
system.avr_reset_count++;
|
||||||
wdt_enable(WDTO_15MS);
|
wdt_enable(WDTO_15MS);
|
||||||
while (1);
|
while (1);
|
||||||
|
|
||||||
|
|||||||
@ -49,10 +49,12 @@
|
|||||||
#include "pwm.h"
|
#include "pwm.h"
|
||||||
#include "testing.h"
|
#include "testing.h"
|
||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
|
#include "system.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern FILE uart_stdout;
|
extern FILE uart_stdout;
|
||||||
|
extern system_t system;
|
||||||
|
|
||||||
uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM );
|
uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM );
|
||||||
|
|
||||||
|
|||||||
@ -35,18 +35,6 @@
|
|||||||
#include "requests.h"
|
#include "requests.h"
|
||||||
#include "irq.h"
|
#include "irq.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct system_t {
|
|
||||||
enum bus_mode_e { MODE_AVR, MODE_SNES } bus_mode;
|
|
||||||
enum rom_mode_e { LOROM, HOROM } rom_mode;
|
|
||||||
enum reset_line_e { RESET_OFF, RESET_ON } reset_line;
|
|
||||||
enum irq_line_e { IRQ_ON, IRQ_OFF } irq_line;
|
|
||||||
enum wr_line_e { WR_DISABLE, WR_ENABLE } wr_line;
|
|
||||||
|
|
||||||
uint8_t reset_count;
|
|
||||||
} system_t;
|
|
||||||
|
|
||||||
system_t system;
|
system_t system;
|
||||||
|
|
||||||
void system_init(void)
|
void system_init(void)
|
||||||
@ -59,7 +47,6 @@ void system_init(void)
|
|||||||
snes_irq_off();
|
snes_irq_off();
|
||||||
system.irq_line = IRQ_OFF;
|
system.irq_line = IRQ_OFF;
|
||||||
|
|
||||||
system.reset_count = 0;
|
|
||||||
|
|
||||||
snes_wr_disable();
|
snes_wr_disable();
|
||||||
system.wr_line = WR_DISABLE;
|
system.wr_line = WR_DISABLE;
|
||||||
@ -67,10 +54,17 @@ void system_init(void)
|
|||||||
avr_bus_active();
|
avr_bus_active();
|
||||||
system.bus_mode = MODE_AVR;
|
system.bus_mode = MODE_AVR;
|
||||||
|
|
||||||
|
snes_lorom();
|
||||||
|
system.rom_mode = LOROM;
|
||||||
|
|
||||||
|
system.snes_reset_count = 0;
|
||||||
|
system.avr_reset_count = 0;
|
||||||
|
|
||||||
|
system.reset_irq = RESET_IRQ_OFF;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void system_reset()
|
void system_send_snes_reset()
|
||||||
{
|
{
|
||||||
info_P(PSTR("Reset SNES\n"));
|
info_P(PSTR("Reset SNES\n"));
|
||||||
cli();
|
cli();
|
||||||
@ -80,10 +74,10 @@ void system_reset()
|
|||||||
snes_reset_hi();
|
snes_reset_hi();
|
||||||
snes_reset_off();
|
snes_reset_off();
|
||||||
sei();
|
sei();
|
||||||
system.reset_count++;
|
system.snes_reset_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void system_send_irq()
|
void system_send_snes_irq()
|
||||||
{
|
{
|
||||||
snes_irq_on();
|
snes_irq_on();
|
||||||
snes_irq_lo();
|
snes_irq_lo();
|
||||||
@ -92,7 +86,7 @@ void system_send_irq()
|
|||||||
snes_irq_off();
|
snes_irq_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
void system_bus_avr()
|
void system_set_bus_avr()
|
||||||
{
|
{
|
||||||
avr_bus_active();
|
avr_bus_active();
|
||||||
info_P(PSTR("Activate AVR bus\n"));
|
info_P(PSTR("Activate AVR bus\n"));
|
||||||
@ -102,7 +96,7 @@ void system_bus_avr()
|
|||||||
info_P(PSTR("Disable SNES WR\n"));
|
info_P(PSTR("Disable SNES WR\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void system_bus_snes()
|
void system_set_bus_snes()
|
||||||
{
|
{
|
||||||
snes_wr_disable();
|
snes_wr_disable();
|
||||||
system.wr_line = WR_DISABLE;
|
system.wr_line = WR_DISABLE;
|
||||||
@ -114,13 +108,15 @@ void system_bus_snes()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void system_rom_mode(usb_transaction_t *usb_trans)
|
void system_set_rom_mode(usb_transaction_t *usb_trans)
|
||||||
{
|
{
|
||||||
if (usb_trans->req_bank_size == 0x8000) {
|
if (usb_trans->req_bank_size == 0x8000) {
|
||||||
snes_lorom();
|
snes_lorom();
|
||||||
|
system.rom_mode = LOROM;
|
||||||
info_P(PSTR("Set SNES lowrom \n"));
|
info_P(PSTR("Set SNES lowrom \n"));
|
||||||
} else {
|
} else {
|
||||||
snes_hirom();
|
snes_hirom();
|
||||||
|
system.rom_mode = HIROM;
|
||||||
info_P(PSTR("Set SNES hirom \n"));
|
info_P(PSTR("Set SNES hirom \n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,5 +24,20 @@
|
|||||||
#define __SYSTEM_H__
|
#define __SYSTEM_H__
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct system_t {
|
||||||
|
enum bus_mode_e { MODE_AVR, MODE_SNES } bus_mode;
|
||||||
|
enum rom_mode_e { LOROM, HIROM } rom_mode;
|
||||||
|
enum reset_line_e { RESET_OFF, RESET_ON } reset_line;
|
||||||
|
enum irq_line_e { IRQ_ON, IRQ_OFF } irq_line;
|
||||||
|
enum wr_line_e { WR_DISABLE, WR_ENABLE } wr_line;
|
||||||
|
enum reset_irq_e { RESET_IRQ_OFF, RESET_IRQ_ON } reset_irq;
|
||||||
|
|
||||||
|
uint8_t snes_reset_count;
|
||||||
|
uint8_t avr_reset_count;
|
||||||
|
} system_t;
|
||||||
|
|
||||||
void system_init(void);
|
void system_init(void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user