Go Down

Topic: MCP23017 pullup resistors (Read 2129 times) previous topic - next topic

Lurkars

Feb 13, 2013, 07:38 pm Last Edit: Feb 14, 2013, 12:01 am by Lurkars Reason: 1
Hope this is the right category.

First: The MCP23017 work fine for me with switch buttons with 220R. It would be much easier to use the internal pullup resistors, but I do not get this to work.  I simply want to extend this http://arduino.cc/en/Tutorial/InputPullupSerial to the MCP23017-Inputs. Is this possible?

I found this code:
Code: [Select]
Wire.beginTransmission(0x20); //23017 address
Wire.write(0x12); // set MCP23017 memory pointer to GPIOA address
Wire.write(0xFF); //enable pullup???
Wire.endTransmission();

source: http://www.gammon.com.au/forum/?id=10945

but that does not seem to work and I cannot find a better tutorial.
hardware: Arduino Uno R3
project: DJ MIDI controller http://bombatuino.wordpress.com

pwillard

The chip documentation reads "corresponding port pin is internally pulled up with a 100 k? resistor"  when you set the register 0x0C  (not sure why you have 0x12)  to "1".  In your case "all" due to the 0xFF.

Nick's Example Shows :
Code: [Select]
expanderWriteBoth (GPPUA, 0xFF);   // pull-up resistor for switch - both ports

...where GPPUA is defined as : #define GPPUA    0x0C

So maybe that is part of the issue?

To me, 100K is a damn weak pull up... so weak in fact  that I would tend to ignore it even exists.

Lurkars

yes, the register address was wrong, I thought it act like the arduino internal pull-up by just writing HIGH to all inputs, that's why I used 0x12. Reading the documentation would have helped. It all work fine now. 100K is bigger than the internal pullup of the arduino pins with 20K, and I just connect switch buttons to it, so I think it will work for me. So thank you, problem is solved!

hardware: Arduino Uno R3
project: DJ MIDI controller http://bombatuino.wordpress.com

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy