Small fix to the CD32 controller adapter.

This commit is contained in:
MickGyver 2020-05-11 07:39:11 +03:00
parent ece1816fa2
commit 0b79c943a6
1 changed files with 4 additions and 8 deletions

View File

@ -27,7 +27,7 @@
// Additionally serial number is used to differentiate arduino projects to have different button maps! // Additionally serial number is used to differentiate arduino projects to have different button maps!
const char *gp_serial = "CD32/C= to USB"; const char *gp_serial = "CD32/C= to USB";
#define BUTTON_READ_DELAY 300 // Button read delay in µs #define BUTTON_READ_DELAY 100 // Button read delay in µs
// Controller DB9 pins (looking face-on to the end of the plug): // Controller DB9 pins (looking face-on to the end of the plug):
// //
@ -71,8 +71,7 @@ uint8_t buttons = 0;
uint8_t buttonsPrev = 0; uint8_t buttonsPrev = 0;
// Timing // Timing
long microsNow = 0; uint32_t microsButtons = 0;
long microsButtons = 0;
// CD32 controller detection // CD32 controller detection
uint8_t detection = 0; uint8_t detection = 0;
@ -92,14 +91,11 @@ void setup()
void loop() void loop()
{ {
// Get current time
microsNow = micros();
// Read X and Y axes // Read X and Y axes
axes = ~(PIND & B00011101); axes = ~(PIND & B00011101);
// See if enough time has passed since last button read // See if enough time has passed since last button read
if(microsNow > microsButtons+BUTTON_READ_DELAY) if(micros() - microsButtons > BUTTON_READ_DELAY)
{ {
// Set pin 6 (clock, PD7) and pin 5 (latch, PF7) as output low // Set pin 6 (clock, PD7) and pin 5 (latch, PF7) as output low
PORTD &= ~B10000000; // low to disable internal pull-up (will become low when set as output) PORTD &= ~B10000000; // low to disable internal pull-up (will become low when set as output)
@ -141,7 +137,7 @@ void loop()
if(detection != B0000001) if(detection != B0000001)
buttons = ~( ((PIND & B10000000) >> 7) | ((PINF & B01000000) >> 5) | B11111100 ); buttons = ~( ((PIND & B10000000) >> 7) | ((PINF & B01000000) >> 5) | B11111100 );
microsButtons = microsNow+400; microsButtons = micros();
} }
// Has any buttons changed state? // Has any buttons changed state?