Skip to content

Commit

Permalink
Merge pull request #20 from AndersBNielsen/sst39sf-settletime
Browse files Browse the repository at this point in the history
Flash ROM settle time fix
  • Loading branch information
henols authored Dec 21, 2024
2 parents b264c31 + 07ca6ef commit 11ac03f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/flash.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void flash_write_init(firestarter_handle_t* handle) {

if (is_flag_set(FLAG_CAN_ERASE) && !is_flag_set(FLAG_SKIP_ERASE)) {
internal_erase(handle);
delay(101);
delay(105); //Old chips, worst case assumed to 5% longer to erase
}
else {
debug("Skipping erase of memory");
Expand Down
9 changes: 9 additions & 0 deletions src/uno_rurp_shield.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ void rurp_set_data_as_input() {


void rurp_write_to_register(uint8_t reg, register_t data) {
bool settle = false;
switch (reg) {
case LEAST_SIGNIFICANT_BYTE:
if (lsb_address == (uint8_t)data) {
Expand All @@ -169,6 +170,9 @@ void rurp_write_to_register(uint8_t reg, register_t data) {
if (control_register == data) {
return;
}
if ((control_register & P1_VPP_ENABLE) > (data & P1_VPP_ENABLE)) {
settle = true;
}
control_register = data;
#ifdef HARDWARE_REVISION
data = rurp_map_ctrl_reg_to_hardware_revision(data);
Expand All @@ -181,6 +185,11 @@ void rurp_write_to_register(uint8_t reg, register_t data) {
PORTB |= reg;
// Probably useless - verify later delayMicroseconds(1);
PORTB &= ~(reg);
//Take a break here if an address change needs time to settle
if (settle)
{
delayMicroseconds(4);
}
}

register_t rurp_read_from_register(uint8_t reg) {
Expand Down

0 comments on commit 11ac03f

Please sign in to comment.