What happens if I omit the pullup resistors on I2C lines?

Discussion in 'General Electronics Chat' started by kynix, Sep 22, 2016.

  1. kynix

    Thread Starter New Member

    Jul 18, 2016
    4
    0
    ust now I realized that the I2C data and clock lines (SDA and SCL) must have pullup resistors.

    Well, I've built a couple of clocks using the DS1307 RTC (see datasheet here.) according to the schematic below. Notice that I have omitted both pullup resistors.
    [​IMG]
    Both clocks work fine, one of them is working for more than 3 months now. How is that possible? In any case, I wanted to know:

    1. What happens when the I2C pullups are omitted?

    2. Is the lack of pullups likely to damage any of those two ICs in my board?
    I'm after answers that address my specific case of connecting ATmega328P to a DS1307 RTC like in the schematics I provided, but if the question doesn't get too broad, it would be helpful to know what happens when the pullups are omitted in general, i.e., in other scenarios of I2C operation.

    PS. I did search the Net to find the answer, but could just find articles about dimensioning the pullups.
     
  2. MrChips

    Moderator

    Oct 2, 2009
    12,449
    3,363
    No, you would not damage any device. The worst that can happen is there will be no communication.
    Many controllers today come with configurable pull-up and pull-down resistors avoiding the need for external resistors. You have to enable the desired resistor in the configuration settings of the input/output port.
     
  3. DickCappels

    Moderator

    Aug 21, 2008
    2,659
    632
    A few years ago I used an ATMEGA48 with an I2C memory at low speed using the weak pull-up resistors in the controller. It worked! -but very unreliably. To put it succintly, those resistors are there for a reason, per MrChips's explanation.
     
  4. AlbertHall

    Well-Known Member

    Jun 4, 2014
    1,956
    387
  5. Papabravo

    Expert

    Feb 24, 2006
    10,149
    1,792
    You are more likely to get I2C to work without pullups if the traces are short between the CPU and the single device. The more distributed capacitance you have the more useful the pullups are.
     
  6. MrChips

    Moderator

    Oct 2, 2009
    12,449
    3,363
    DickCappels likes this.
  7. kynix

    Thread Starter New Member

    Jul 18, 2016
    4
    0
  8. MrChips

    Moderator

    Oct 2, 2009
    12,449
    3,363
    Well, did you get any?
    What were you expecting to hear?
    Were the folks on the other site lying to you?
     
  9. ErnieM

    AAC Fanatic!

    Apr 24, 2011
    7,394
    1,606
    New answers would require new information.

    Have these clocks been working for the last 3 months, or 2 years and 3 months?

    Did you get a new supervisor who wants you to once again explain the resistor omission issue?

    Do you understand the comment from "Passerby" about the wire library code enabling the weak pull ups?
     
  10. schmitt trigger

    Active Member

    Jul 12, 2010
    36
    7
    The I2C bus is open-collector (well, open-drain).
    The bus idle state is at a high level.
    To generate a START condition, the master pulls the data line from high to low while maintaining the clock high.

    How would you achieve that, a bus START condition, without a pullup resistor on both open-drain outputs?
    Short answer, you can't.
     
Loading...