From 08a22f02c3730f9bece4ce5ae37911e10cba2ba1 Mon Sep 17 00:00:00 2001 From: Ted Fried <54004369+MicroCoreLabs@users.noreply.github.com> Date: Fri, 11 Oct 2024 19:12:58 -0700 Subject: [PATCH] Uploaded 10_11_2024 --- XTMax/Code/XTMax/XTMax.ino | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/XTMax/Code/XTMax/XTMax.ino b/XTMax/Code/XTMax/XTMax.ino index cf5a0d8..ad62ba0 100644 --- a/XTMax/Code/XTMax/XTMax.ino +++ b/XTMax/Code/XTMax/XTMax.ino @@ -21,6 +21,10 @@ // Revision 2 10/5/2024 // Added support for SD to Parallel interface // +// Revision 3 10/11/2024 +// Added variable wait states for Expanded RAM +// - For 4.77 Mhz, can be changed to zero wait states for Write cycles and two for Read cycles +// //------------------------------------------------------------------------ // // Copyright (c) 2024 Ted Fried @@ -330,7 +334,7 @@ inline uint8_t PSRAM_Read(uint32_t address_in) { nibble_out = address_in >> 4; PSRAM_Write_Clk_Cycle(); nibble_out = address_in; PSRAM_Write_Clk_Cycle(); - GPIO8_DR = sd_pin_outputs + MUX_DATA_n_HIGH + DATA_OE_n_LOW + CHRDY_OE_n_HIGH; // Two WAIT STATES + //GPIO8_DR = sd_pin_outputs + MUX_DATA_n_HIGH + CHRDY_OE_n_HIGH + DATA_OE_n_LOW; // De-assert CHRDY early for 4.77 Mhz // Four clocks of hi-Z - Make PSRAM Data signals hi-Z during this time @@ -376,7 +380,7 @@ inline uint8_t PSRAM_Write(uint32_t address_in , int8_t local_data) { nibble_out = address_in >> 4; PSRAM_Write_Clk_Cycle(); nibble_out = address_in; PSRAM_Write_Clk_Cycle(); - GPIO8_DR = sd_pin_outputs + MUX_DATA_n_HIGH + CHRDY_OE_n_HIGH + DATA_OE_n_LOW; // de-assert wait state + //GPIO8_DR = sd_pin_outputs + MUX_DATA_n_HIGH + CHRDY_OE_n_HIGH + DATA_OE_n_LOW; // De-assert CHRDY early for 4.77 Mhz // Send byte data in twp clock cycles @@ -411,6 +415,8 @@ inline void Mem_Read_Cycle() { isa_data_out = PSRAM_Read(psram_address); GPIO7_DR = GPIO7_DATA_OUT_UNSCRAMBLE + MUX_ADDR_n_LOW + CHRDY_OUT_LOW + trigger_out; // Output data + GPIO8_DR = sd_pin_outputs + MUX_DATA_n_HIGH + CHRDY_OE_n_HIGH + DATA_OE_n_LOW; // De-assert CHRDY + while ( (gpio9_int&0xF0) != 0xF0 ) { gpio9_int = GPIO9_DR; } // Wait here until cycle is complete @@ -449,13 +455,15 @@ inline void Mem_Write_Cycle() { else if (page_base_address == 0xE0000) { psram_address = (reg_0x260<<14) | (isa_address & 0x03FFF); } GPIO7_DR = GPIO7_DATA_OUT_UNSCRAMBLE + MUX_ADDR_n_HIGH + CHRDY_OUT_LOW + trigger_out; - GPIO8_DR = sd_pin_outputs + MUX_DATA_n_LOW + CHRDY_OE_n_HIGH + DATA_OE_n_HIGH; // Steer data mux to Data[7:0] and Assert CHRDY_n=0 to begin wait states + GPIO8_DR = sd_pin_outputs + MUX_DATA_n_LOW + CHRDY_OE_n_LOW + DATA_OE_n_HIGH; // Steer data mux to Data[7:0] and Assert CHRDY_n=0 to begin wait states delayNanoseconds(10); // Wait some time for buffers to switch from address to data gpio6_int = GPIO6_DR; data_in = 0xFF & ADDRESS_DATA_GPIO6_UNSCRAMBLE; PSRAM_Write(psram_address , data_in); + GPIO8_DR = sd_pin_outputs + MUX_DATA_n_LOW + CHRDY_OE_n_HIGH + DATA_OE_n_HIGH; // De-assert CHRDY + while ( (gpio9_int&0xF0) != 0xF0 ) { // Wait here until cycle is complete gpio6_int = GPIO6_DR; // Needed?