mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C-Bus terminieren? Genauer Uhrenquarz für RTC?


Autor: Karl-alfred Römer (karl-alfred_roemer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kurze Fragen:

1. Braucht man an einem I2C-Bus, an dem ein Mega8L, ein EEPROM AT24C512
und eine RTC DS1307 hängen Abschlusswiderstände, wie an jedem normalen
Bus? (Platinengröße: 3*4cm, Leitungslängen dementsprechend kurz)

2. Welchen Uhrenquarz würdet ihr empfehlen, wenn das Ding ziemlich genau
sein soll: Sagen wir +/- 2 Minuten pro Jahr bei schwankenden 
Temperaturen
zw -20 und +50°C. (Außeneinsatz)

Gibt es eigentlich größere I2C EEPROMS als das 512KB = 64KByte? Soll
für einen Datenlogger sein.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-alfred Römer schrieb:

> 1. Braucht man an einem I2C-Bus, an dem ein Mega8L, ein EEPROM AT24C512
> und eine RTC DS1307 hängen Abschlusswiderstände, wie an jedem normalen
> Bus? (Platinengröße: 3*4cm, Leitungslängen dementsprechend kurz)

Man braucht die üblichen Pullups, aber keinen Abschluss.

> 2. Welchen Uhrenquarz würdet ihr empfehlen, wenn das Ding ziemlich genau
> sein soll:

DCF77-Empfänger statt RTC.

> Gibt es eigentlich größere I2C EEPROMS als das 512KB = 64KByte? Soll
> für einen Datenlogger sein.

Dataflash per SPI, bis mindestens 64Mbit.

Autor: Karl-alfred Römer (karl-alfred_roemer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DFF77 wäre technisch optimal, aber platzmäßig problematisch, weil
die große Antenne einfach nicht mehr ins Gehäuse hinein passt.
Deshalb wäre eine RTC hier ausnahmsweise geeigneter.

64MB Dataflash wäre schön, wenn da nicht das Problem wäre, dass
Daten erst mal zwischengespeichert werden müssen, bevor man
dann eine größere Datenmenge aufs Flash schreiben kann.
Ich programmiere in Assembler, wobei ich auch hier eher
Anfänger bin und versuche jedem vermeidbaren Problem aus
dem Wege zu gehen.
Dennoch bin ich jetzt hin und hergerissen. 8)

Außerdem werden die Pins am Atmega knapp, wenn ich serielle
Schnittstelle, evtl Programmierschnittstelle, I2C oder die
Schnittstelle zum DCF77 und SPI gleichzeitig benutzen will.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Karl-alfred Römer schrieb:
> 64MB Dataflash wäre schön, wenn da nicht das Problem wäre, dass
> Daten erst mal zwischengespeichert werden müssen, bevor man
> dann eine größere Datenmenge aufs Flash schreiben kann.
> Ich programmiere in Assembler, wobei ich auch hier eher
> Anfänger bin und versuche jedem vermeidbaren Problem aus
> dem Wege zu gehen.
> Dennoch bin ich jetzt hin und hergerissen. 8)

Meine Lieblinge sind u.a. AT45DB321D, 32MBit, also 4MByte.
Die haben intern 2 Ram-Buffer in Pagegröße, da kann man in Ruhe alles 
reinschreiben, dann sagt man ihm, daß er einen Buffer ins Flash schieben 
soll und nimmt derweil den anderen.

> Außerdem werden die Pins am Atmega knapp, wenn ich serielle
> Schnittstelle, evtl Programmierschnittstelle, I2C oder die
> Schnittstelle zum DCF77 und SPI gleichzeitig benutzen will.

SPI und ISP leigen bei den kleinen AVR auf den selben Pins, die stören 
sich auch nicht, wenn ein Dataflash dranhängt. Man muß nur daran denken, 
dem /CS einen externen PullUp zu verpassen, dann ist der auch still, 
wenn programmiert wird.

Gruß aus Berlin
Michael

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-alfred Römer schrieb:

> 64MB Dataflash wäre schön, wenn da nicht das Problem wäre, dass
> Daten erst mal zwischengespeichert werden müssen, bevor man
> dann eine größere Datenmenge aufs Flash schreiben kann.

Dafür hat das Dataflash 2 interne RAM-Zwischenspeicher, die inkrementell 
beschreibbar sind. Ein RAM-Problem entsteht so nicht, ein Zeitproblem 
auch nicht.

Bleibt nur das Problem des Datenverlustes von ebd. Zwischenspeicher bei 
Stromausfall, und das kann man mit Pufferkondensator und rechtzeitiger 
Warnung angehen, wenn überhaupt relevant.

> Außerdem werden die Pins am Atmega knapp, wenn ich serielle
> Schnittstelle, evtl Programmierschnittstelle, I2C oder die
> Schnittstelle zum DCF77 und SPI gleichzeitig benutzen will.

Die Programmierschnittstelle sitzt bei den meisten AVRs auf den gleichen 
Pins wie SPI und kollidert damit auch nicht. DCF77 ist 1 Pin.

Autor: HN-ES (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls es doch ein EEPROM sein soll, gibt es den 24AA1025 mit 1024Kbit.

grüßle HN-ES

Autor: Karl-alfred Römer (karl-alfred_roemer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das so ist, dann werde ich mir EEPROM wohl aus dem Kopf schlagen
und statt dessen DataFlash benutzen.

DCF77-Signale müssen doch glaube ich im Controller in Datum/Zeit-Signale
umgesetzt werden. Damit habe ich mich noch nicht beschäftigt. Kann
aber auch nicht sooo schwer sein, denke (hoffe) ich.

Das Problem mit der riesigen Antenne bleibt aber.
Z.B. ELV Artikel-Nr.: 68-352-62. Die Antenne hat eine Länge
von ca 5cm.  Es scheint aber auch ohne diese riesige Antenne
zu gehen. Meine Aldi-Funk-ARMBAND-Uhr z.B. hat keinen solchen
Klotz und funktioniert komischerweise trotzdem.

Vielleicht muss ich die mal schlachten, um zu sehen, wie die
die Antenne da reingequetscht haben. ;)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-alfred Römer schrieb:

> DCF77-Signale müssen doch glaube ich im Controller in Datum/Zeit-Signale
> umgesetzt werden.

Ja und? Das ist kein Aufwand und du bist dabei auch nicht der Erste. 
Suchen bringt Code, allerdings wahrscheinlich in C.

Du solltest nur nicht den Fehler vieler machen, die das DCF77-Signal als 
Interrupt oder Timer-Trigger verwenden, sondern das Signal einfach 
zigmal pro Sekunde in einem meist ohnehin schon laufenden zyklischen 
Timer-Interrupt abtasten.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl-alfred Römer (karl-alfred_roemer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk

>AVR - Die genaue Sekunde / RTC

So mache ich es derzeitig. Funktioniert prima. Allerdingsbenutze
ich den internen Oszillator und der schwankt halt stark mit
der Temperatur. Das größere Problem ist, dass ich den Powerdown
Modus nicht nutzen kann, weil der nicht auf Timerereignisse
reagiert. So geht derzeit nur der Idle-Modus. Das ist sehr
schade, denn meine Schaltung lebt von einer CR2032-Knopfzelle.

@A.K.

>Du solltest nur nicht den Fehler vieler machen, die das DCF77-Signal
>als Interrupt oder Timer-Trigger verwenden, sondern das Signal einfach
>zigmal pro Sekunde in einem meist ohnehin schon laufenden zyklischen
>Timer-Interrupt abtasten.

Auch das würde den Powerdown-Modus verunmöglichen. (Timer weckt
ihn nicht mehr auf) Ich würde es glaube ich so machen, dass mein
Programm von einem INT0 geweckt wird und dann solange in die Haupt-
schleife geht, um die Signale zu pollen, bis Zeit und Datum komplett
eingelesen sind. Das kann dann ins Dataflash oder EEPROM geschrieben
werden.

Ich versuche es erst mal mit der DS1307 mit  Uhrenquarz oder
Oszillator und hoffe, dass ich nicht allzu viele durchprobieren
muss, bis ich einen genauen und vor allem temperaturstabilen finde.

Autor: Horst Hahn (horha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-alfred Römer schrieb:
> 2. Welchen Uhrenquarz würdet ihr empfehlen...

Hallo,

garkeinen. Ich würde bei Epson usw. nach einer RTC mit eingebautem Quarz 
suchen und die Spezifikation prüfen - da habe ich Angaben zur 
Temperaturabhängigkeit und es ist Sache des Herstellers, dafür zu 
sorgen, dass die eingehalten werden.

Bei einem eigenen Quarz müsste ich die ganze Schaltung daraufhin 
durchrechnen und auch prüfen, das ist bei kleinen Stückzahlen garnicht 
drin und eine Klimakammer kostet auch ganz ordentlich.

Findet sich nichts ausreichend stabiles, könnte man einen RTC-Chip mit 
einem ultrastabilen TCXO-Takt versorgen. Es gibt auch schnuckelig kleine 
Rubidium-Uhren.

Gruss Reinhard

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl-alfred Römer schrieb:

> der Temperatur. Das größere Problem ist, dass ich den Powerdown
> Modus nicht nutzen kann, weil der nicht auf Timerereignisse
> reagiert.

Auf den Watchdog hört er schon. Mindestens bei neueren AVRs ist der auch 
als Interrupt zu gebrauchen. Genau ist der allerdings nicht, als Uhr 
taugt er nicht, nur als Wecksignal.

Und wenn du die RTC in den AVR einbaust, mit 32KHz asynchron, dann weckt 
dieser Timer ihn alle Sekunde oder alle paar Sekunden aus dem Power-Save 
Modus.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sowas wie die von Horst Hahn empfohle RTC nehmen.
Maxim hätte auch einen separaten temperaturkomp. 32kHz Taktgeber im 
Angebot. Den könnte man mit beliebigen RTCs kombinieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.