Regelmatig problemen met DS1307

Beste mede forumleden,

Ik heb regelmatig problemen met de DS1307 I2C tijds-chip.
De problemen houden dan in als ik de registers uitlees ik telkens de waarde 255 terug krijg.

Dit gebeurt zowel op een breadboard als op een print.
Soms (na regelmatig de spanning in/uit te schakelen) lukt het me.
Soms heb ik een tijdlang geen problemen. Soms continue.

Met mijn laatste printje ging het nu vrij goed. Enkel af en toe maar dit probleem.
Dan heb ik nog wat verder gesoldeerd aan de print, totaal niet in de buurt van de DS1307 chip.
Ik heb enkele RGB leds (die gePWM't worden) erbij aangesloten. Dit werkt.
Maar nu kan ik de timer chip helemaal niet meer uitlezen. (telkens 255)
Een 100nF keramische condensator parallel over de voeding v/d DS1307 werkt niet.. :/
De pull ups op de I2C lijn zijn 1k8 weerstanden.
Wat kan er hier het probleem zijn?

't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
EricP

mét CE

Flanken of timing - aangenomen dat je verder niks fout doet...

Arco

Special Member

I2C niet te snel? Mag maar 100kHz max.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik weet wel dat als er geen batterij inzit, dit ook problemen geeft met uitlezen. Verder is hij niet nauwkeurig. Zelf gebruik ik DS3231 als beter alternatief.

Webshop voor Electronic Prototype | http://eProto.nl/

Van timing weet ik niets, ik heb die chip (ATMEGA328) geprogrammeerd met arduino code, en gebruik een library voor de DS1307 die ik ergens gevonden heb (RTClib.h).
Zal dus eens een andere library proberen, en hopen dat dit mogelijke timing problemen oplost.

Alvast bedankt voor de input :)

't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Arco

Special Member

Als je 5v voeding gebruikt, zijn 1k8 pull-ups ook te zwaar voor de i2c bus, max. toegelaten is iets van 2k7. (Bij 3v3 zou het waarschijnlijk nog net gaan)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
EricP

mét CE

Ik ben niet zo thuis in dat Arduino gebeuren. Moet je er nog ergens een clock frequentie opgeven (en klopt die ook??).

@Arco: op zich heb je daar gelijk in. De ervaring leert dat het wel goed gaat - mits iedereen netjes met de bus omgaat.

Arco

Special Member

Ik weet ook niet of je hardware i2c gebruikt, of software (bit-banged) i2c.
In het laatste geval moet je wel CMOS(S/T) compatible i/o pinnen kiezen. (geen TTL compatible pinnen, dan kloppen de logische levels niet)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@ Arco: Bedankt! Dat test ga ik dan eerst eens uittesten! Ik ben er nu nog niet toe gekomen (het is ook zondag), maar dat is alvast een goede tip :)

Die library gebruikt de hardware I2C pinnen. Zeker ben ik er niet van, maar die library vraagt niet achter pinnen, maar gebruikt wel de pinnen v/d uC waar er hardware I2C opzit. Dus ik ga er van uit van wel.

@ EricP: Een arduino (Uno) draait standaard op 16Mhz, er wordt nooit gevraagt achter klokfrequentie. Het instellen van de I2C gebeurd door het oproepen van een routine binnen de lib:

c code:


    Wire.begin();
    RTC.begin();

& daar is niets aan te veranderen en staat vast. Als die weerstanden vervangen niet werkt, ga ik dan een andere lib nemen, met hopelijk beter resultaat.

@ Plano: Er zit geen batterij in nu, maar die komt er wel. Misschien is dat de verklaring dat ik er zo regelmatig problemen mee heb met die chip..

EDIT:

Eens goed hard drukken op de print heeft (voorlopig) het probleem opgelost. Het is dus duidelijk dat het toch een hardware-fout was door mij. Alvast bedankt Arco & EricP & Plano voor de antwoorden!

't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)