Re: Pullup resistors (Was: Commodore joystick ports)

From: Jim Brain (
Date: 2007-05-09 17:00:47

Marko Mäkelä wrote:
> On Wed, May 09, 2007 at 01:56:20AM -0500, Jim Brain wrote:
>> LO->HI:   switch DDR to input, then switch logic level to high to engage 
>> pullup.  Doing it this way ensures you never drive pin with 5v directly
>> HI->LO:   disengage pullup, then switch DDR to output.
> Oh, I did remember something about setting the PIN bit on the AVR
> when composing my answer.  That was for engaging the pullup resistor
> when outputting a logic 1.  But I don't think it should be necessary
> for the joystick port, because mechanical joysticks do not contain any
> pullup resistors.  And I think you can safely leave the PIN bit
> initialized to 1 at all times.
I think you mean 0.

PORT=0, DDR=0, input, no pullup
PORT=0, DDR=1, output, low

In my defense, I wrote the joystick code after the initial IEC code, so 
I was in IEC mode when writing it. 
> It's a different matter on a shared bus, such as the Commodore serial bus.
> There you might want to disengage the pullups when the device is not active,
> or you won't be able to attach very many devices to the bus.  I remember
> that George Page, who parted with his collection some years ago, once tested
> how many devices he can connect to the serial bus.  I think he was getting
> problems after some 5 devices.  That might be because the Commodore
> devices are equipped with fixed (passive) pull-up resistors.
That's a good idea, I'll add that to the tweaks list.


Jim Brain, Brain Innovations                                      (X) 
Dabbling in WWW, Embedded Systems, Old CBM computers, and Good Times! 

       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail pre-2.1.8.