Hallo, Habe noch eine Schaltung, diesmal soll es ein Temperaturdatenlogger sein. Er besteht aus einem Atmega 328, einem DS3231 RTC und einem 24AA256 oder vergleichbarem I2C-EEPROM. Die Schaltung soll mit 3V Batteriebetrieben werden. Dabei soll der uC dem DS3231 sowie dem EEPROM die Versorgungsspannung wegnehmen können. Dauerhaft sollen nur der Atmega sowie der Batterieanschluss des DS3231 an Spannung liegen. Der Atmega soll normalerweise Schlafen, jedoch durch den INT-Pin des DS3231 alle 10Min aufgeweckt werden. Die beiden I2C-ICs mit Spannung versorgen, die Temperatur/Uhrzeit auslesen und in das EEPROM schreiben, neue Weckzeit einstellen, wieder schlafen gehen. Der Atmega soll über UART mit dem PC kommunizieren können und somit die im EEPROM gespeicherten Daten senden. Können die I2C-Pullups eventuell auch mit einem Portpin des Atmegas versorgt werden?
Matze schrieb: > Können die I2C-Pullups eventuell auch mit einem Portpin des Atmegas > versorgt werden? Ist außerhalb der Spezifikation des I2C-Bus. Je nach IC kann das aber gutgehen. I2C ist, soweit ich weiß, für LS-TTL-Technik spezifiziert worden. Die heute in MOS-Technik gebauten ICs könnten solch einen Verstoß gegen die Regeln eventuell verkraften. Also im Datenblatt des 2AA256 nachsehen, ob die einen genügend kleinen Eingangsstrom im H-Zustand haben. Der Kontrollerpin bringt (z.B.) 50 µA pullup-Strom und da darf das EEPROM und das DS3231 mit seinem Eingangsstrom die Leitungen SDA oder SCL nicht aus dem H-Bereich herunterziehen. Oder halt mit dem Scope nachsehen, ob die Pegel auf SDA und SCL richtig erreicht werden. Man kann aber auch die Pullups durch einen extra-Pin des µC einschalten, sobald man Signale auf den Bus geben will.(Aber Vorsicht, dass da keine falsche Start- oder Stop-Bedingung entsteht) > und sonst: Das EEPROM von der Betriebsspannung zu nehmen halt ich für kritisch. Da müsste man doch jedesmal beim Wieder-Einschalten den I2C-Bus neu initialisieren. Oder, was macht das EEPROM ohne Spannung mit anliegenden I2C-Signalen? Der Atmega hat doch ein eigenes EEPROM bzw. sogar eigenes RAM. Warum nicht dort die Messergebnissse speichern und nur blockweise an das externe EEPROM übertragen, wenn der nötige Augenblick da ist. Also, wenn: EEPROM schlafen lassen und dann, wenn es gebraucht wird ordnungsgemäß hochfahren mit allem Initialisierungstheater. Auch besser, EEPROM und 3231 nicht an einen gemeinsamen Bus, sondern jedes IC an eigene Anschlüsse des Kontrollers. Dann kann man das EEPROM gefahrloser Abschalten ohne auf das DS3231 Rücksicht nehmen zu müssen.
:
Bearbeitet durch User
Peter R. schrieb: > Der Kontrollerpin bringt (z.B.) 50 µA > pullup-Strom und da darf das EEPROM und das DS3231 mit seinem > Eingangsstrom die Leitungen SDA oder SCL nicht aus dem H-Bereich > herunterziehen. So meine ich das nicht, die 3,3V-Symbole an denen die 4K7-Pullups hängen sollen durch einen Portpin ersetzt werden, der beim Schlafen nach abschlaten beider Bausteine auf GND geht. Ich möchte Backpowering über Body-Dioden verhindern. Peter R. schrieb: > Man kann aber auch die Pullups durch einen extra-Pin des µC einschalten, > sobald man Signale auf den Bus geben will.(Aber Vorsicht, dass da keine > falsche Start- oder Stop-Bedingung entsteht) Ja genau so meinte ich es ;) Peter R. schrieb: > Der Atmega hat doch ein eigenes EEPROM bzw. sogar eigenes RAM. Stimmt das kann ich vollschreiben und dann einige Datensätze gemeinsam in das EEPROM schieben. Peter R. schrieb: > Auch besser, EEPROM und 3231 nicht an einen gemeinsamen Bus, sondern > jedes IC an eigene Anschlüsse des Kontrollers. Dann kann man das EEPROM > gefahrloser Abschalten ohne auf das DS3231 Rücksicht nehmen zu müssen. Könnte man auch machen, aber man müsste Software-I2C machen, das möchte ich möglichts nicht. Worin siehst du das große Problem? Der Bus ist schnell wieder Initialisiert, ich muss das EEPROM ja nicht immer ansprechen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.