Skip to content
This repository has been archived by the owner on May 9, 2024. It is now read-only.

Commit

Permalink
Merge pull request #8 from OldBoredEE/main
Browse files Browse the repository at this point in the history
Resolve region unlocking issues
  • Loading branch information
airainchoc committed Mar 1, 2023
2 parents 94ba7b5 + 4fe56e2 commit babc072
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 36 deletions.
2 changes: 1 addition & 1 deletion FatFs_SPI/sd_driver/sd_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ bool sd_spi_transfer(sd_card_t *pSD, const uint8_t *tx, uint8_t *rx,

uint8_t sd_spi_write(sd_card_t *pSD, const uint8_t value) {
// TRACE_PRINTF("%s\n", __FUNCTION__);
u_int8_t received = SPI_FILL_CHAR;
uint8_t received = SPI_FILL_CHAR;
#if 0
int num = spi_write_read_blocking(pSD->spi->hw_inst, &value, &received, 1);
myASSERT(1 == num);
Expand Down
11 changes: 8 additions & 3 deletions i2s.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ extern int *logical_track_to_sector;
extern bool *is_data_track;
extern mutex_t mechacon_mutex;

void select_sens(uint8_t new_sens);
void set_sens(uint8_t what, bool new_value);


char SCExData[][44] = {
{1,0,0,1,1,0,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0},
Expand All @@ -53,7 +56,7 @@ void i2s_data_thread() {
sd_card_t *pSD;
int bytes;
char buf[128];
ushort *cd_samples[SECTOR_CACHE];
uint16_t *cd_samples[SECTOR_CACHE];
uint16_t CD_scrambling_key[1176] = { 0 };
int key = 1;
int logical_track = 0;
Expand Down Expand Up @@ -182,6 +185,7 @@ void i2s_data_thread() {
latched >>= 8;
latched |= c << 16;
}
select_sens(latched >> 20);
gpio_put(SENS, SENS_data[latched >> 20]);
mutex_exit(&mechacon_mutex);
}
Expand Down Expand Up @@ -223,7 +227,7 @@ void i2s_data_thread() {
}

abort_psnee:
gpio_put(SCEX_DATA, 1);
gpio_put(SCEX_DATA, 0);
psneeTimer = time_us_64();
printf("-SCEX\n");
}
Expand Down Expand Up @@ -290,8 +294,9 @@ void i2s_data_thread() {
buffer_for_dma = (buffer_for_dma + 1) % 2;
sector_sending = sector_loaded[buffer_for_dma];

dma_hw->ch[channel].read_addr = pio_samples[buffer_for_dma];
dma_hw->ch[channel].read_addr = (uint32_t)pio_samples[buffer_for_dma];
dma_channel_start(channel);
}
}
}

20 changes: 17 additions & 3 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ volatile uint sector_sending = -1;
volatile uint sector_for_track_update = 0;
volatile uint64_t subq_start_time = 0;
volatile uint64_t sled_timer = 0;
volatile uint8_t current_sens;
volatile int num_logical_tracks = 0;
int *logical_track_to_sector;
bool *is_data_track;
Expand All @@ -53,6 +54,18 @@ bool SENS_data[16] = {
0,0,0
};

void select_sens(uint8_t new_sens)
{
current_sens = new_sens;
}

void set_sens(uint8_t what, bool new_value)
{
SENS_data[what] = new_value;
if (what == current_sens) {
gpio_put(SENS, new_value);
}
}

void initialize() {
set_sys_clock_pll(948000000, 7, 1); // 135428571 Hz, 67714286 Hz PS1 clock
Expand All @@ -71,7 +84,7 @@ void initialize() {
gpio_init(LRCK);

gpio_set_dir(SCEX_DATA, GPIO_OUT);
gpio_put(SCEX_DATA, 1);
gpio_put(SCEX_DATA, 0);
gpio_set_dir(SENS, GPIO_OUT);
gpio_set_dir(LMTSW, GPIO_OUT);
gpio_set_dir(XLAT, GPIO_IN);
Expand Down Expand Up @@ -150,6 +163,7 @@ int main() {
latched >>= 8;
latched |= c << 16;
}
select_sens(latched >> 20);
gpio_put(SENS, SENS_data[latched >> 20]);
mutex_exit(&mechacon_mutex);
}
Expand Down Expand Up @@ -225,7 +239,7 @@ int main() {

if ((track - original_track) >= count_track) {
original_track = track;
SENS_data[SENS_COUT] = !SENS_data[SENS_COUT];
set_sens(SENS_COUT, !SENS_data[SENS_COUT]);
}
}
} else if (sled_move_direction == SLED_MOVE_REVERSE) {
Expand All @@ -236,7 +250,7 @@ int main() {
sector_for_track_update = sector;
if ((original_track - track) >= count_track) {
original_track = track;
SENS_data[SENS_COUT] = !SENS_data[SENS_COUT];
set_sens(SENS_COUT, !SENS_data[SENS_COUT]);
}
}
} else if (SENS_data[SENS_GFS]) {
Expand Down
29 changes: 4 additions & 25 deletions utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,8 @@

#include "utils.h"

extern inline int tobcd(int in) {
if (in > 99) {
return 0x99;
} else {
return (in / 10) << 4 | (in % 10);
}
}

extern inline uint32_t reverseBits(uint32_t num, int bits) {
uint32_t NO_OF_BITS = bits;
uint32_t reverse_num = 0;
int i;
for (i = 0; i < NO_OF_BITS; i++) {
if ((num & (1 << i)))
reverse_num |= 1 << ((NO_OF_BITS - 1) - i);
}
return reverse_num;
}

extern inline int track_to_sector(int track) {
return pow(track, 2) * 0.00031499 + track * 9.357516535;
}

extern inline int sectors_per_track(int track) {
return round(track * 0.000616397 + 9);
}
extern inline int tobcd(int in);
extern inline uint32_t reverseBits(uint32_t num, int bits);
extern inline int track_to_sector(int track);
extern inline int sectors_per_track(int track);
31 changes: 27 additions & 4 deletions utils.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,32 @@
#ifndef UTILS_H_INCLUDED
#define UTILS_H_INCLUDED
#include <math.h>
#include "stdlib.h"

extern inline int tobcd(int in);
extern inline uint32_t reverseBits(uint32_t num, int bits);
extern inline int track_to_sector(int track);
extern inline int sectors_per_track(int track);
inline int tobcd(int in) {
if (in > 99) {
return 0x99;
} else {
return (in / 10) << 4 | (in % 10);
}
}

inline uint32_t reverseBits(uint32_t num, int bits) {
uint32_t NO_OF_BITS = bits;
uint32_t reverse_num = 0;
int i;
for (i = 0; i < NO_OF_BITS; i++) {
if ((num & (1 << i)))
reverse_num |= 1 << ((NO_OF_BITS - 1) - i);
}
return reverse_num;
}

inline int track_to_sector(int track) {
return pow(track, 2) * 0.00031499 + track * 9.357516535;
}

inline int sectors_per_track(int track) {
return round(track * 0.000616397 + 9);
}
#endif

0 comments on commit babc072

Please sign in to comment.