From fbab4b832992c44eb2848b1f7fbb047d1e0daa9a Mon Sep 17 00:00:00 2001 From: Gordon Henderson Date: Mon, 20 Aug 2012 11:08:34 +0100 Subject: [PATCH] Changes to the piNes driver to relect the new delayMicroseconds() code. Seems the old 4011 in the NES controller isn't that fast afterall! --- wiringPi/piNes.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/wiringPi/piNes.c b/wiringPi/piNes.c index 1722d31..a115050 100644 --- a/wiringPi/piNes.c +++ b/wiringPi/piNes.c @@ -38,6 +38,8 @@ #define NES_A 0x80 +#define PULSE_TIME 25 + // Data to store the pins for each controller struct nesPinsStruct @@ -91,10 +93,8 @@ unsigned int readNesJoystick (int joystick) // Toggle Latch - which presents the first bit - digitalWrite (pins->lPin, HIGH) ; - delayMicroseconds (1) ; - digitalWrite (pins->lPin, LOW) ; - delayMicroseconds (1) ; + digitalWrite (pins->lPin, HIGH) ; delayMicroseconds (PULSE_TIME) ; + digitalWrite (pins->lPin, LOW) ; delayMicroseconds (PULSE_TIME) ; // Read first bit @@ -104,12 +104,10 @@ unsigned int readNesJoystick (int joystick) for (i = 0 ; i < 7 ; ++i) { - digitalWrite (pins->cPin, HIGH) ; - delayMicroseconds (1) ; - digitalWrite (pins->cPin, LOW) ; - delayMicroseconds (1) ; + digitalWrite (pins->cPin, HIGH) ; delayMicroseconds (PULSE_TIME) ; + digitalWrite (pins->cPin, LOW) ; delayMicroseconds (PULSE_TIME) ; value = (value << 1) | digitalRead (pins->dPin) ; } - return ~value ; + return value ^ 0xFF ; } -- 2.30.2