From: Gordon Henderson Date: Mon, 20 Aug 2012 10:08:34 +0000 (+0100) Subject: Changes to the piNes driver to relect the new delayMicroseconds() X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=wiringPi.git;a=commitdiff_plain;h=fbab4b832992c44eb2848b1f7fbb047d1e0daa9a Changes to the piNes driver to relect the new delayMicroseconds() code. Seems the old 4011 in the NES controller isn't that fast afterall! --- 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 ; }