A project I made (originally for AVR based Arduino) uses INPUT_PULLUP mode on some of the digital pins to read out of tactile switch. On the UNO, this works fine. On the DUE, it's unstable somehow. When the switch is open and my hand comes close to the wire there's a square wave instead of a constant value.
I read that the DUE the pull-up resistors have higher impedance, but how can that cause this?
On average, the input pullup on the DUE will be around 100K. An external pullup of around 10K should give decent strength to overcome external interference.
The classic interference to a high impedance circuit is a potential divider between stray
capacitance and the circuit's impedance acting at mains frequency.
Typical stray impedances are a few pF, lets say 10pF. At 50Hz that's about 300M ohm.
But the kinds of mains voltages knocking around can be quite high, perhaps even 100V
if you are near mains wiring - so a 15M ohm resistor in combination with the 10pF will
pick up about 5V. Any floating CMOS input will have no trouble seeing such mains
pickup.
However 100k is too low a resistance to see problems like this from mains.
But there are other sources of interference of much higher frequency, such as PWM
controlled motors, LCD screens and so forth running 3 orders of magnitude faster
than mains frequencies - these are the sorts of things that can interfere effectively
with 100k signal line if it isn't suitable screened since capacitance has lower impedance
at higher frequencies.