Hallo Zusammen, Ich arbeite grade an einem Projekt für meine Masterthesis, in der 4 Reifeneinheiten mit einer Zentraleinheit über einen 433 MHz Band kommunizieren. Hierbei spielt die Echtzeit-Fähgikeiten unseres Systems eine bedeutende Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.) gewährleistet wurde. Diesen Shield sollte ich jetzt im Schaltplan integrieren, sodass nur die RTC berücksichtigt wird. Ich habe den Schaltplan soweit fertiggestellt und den AT24C32 und die Batterie des Shields nicht berücksichtigt. Nachdem ich alle Bauteile auf die Platine gelötet und den Code auf den uC hochgeladen habe, hat das System nicht funktioniert. Die alten Reifeneinheiten mit dem RTC-Shield funktionieren ohne Probleme. Daher gehe ich davon aus, dass ich entweder beim Löten oder im Schaltplan bei dem RTC etwas falsch gemacht habe. Eine weitere Veränderungen war, dass ich den Atmega 328P-Pu mit der kleineren Version Atmega 328P-Au ausgetauscht habe. Ich danke, dass es aber nicht daran liegen könnte. Den aktuellen Schaltplan habe ich unter dem Namen "Atmega 328P-AU und DS231SN PCB" angehängt. Ich habe alle meine Bauteile auf Kurzschluss etc überprüft und nicht Auffälliges bemerkt. Daher wäre es Super, wenn Ihr mein Schaltplan überprüft und mir einen Feedback geben könntet, ob alles SO in Ordnung ist. Falls Ihr die Funktionsweise unseres Systems benötigt, hier eine kurze Erklärung für die Funktion der RTC. Nach dem Einschalten der Stromversorgung geht das System zunächst in den Schlafmodus. Sobald ein Interrupt-Signal empfangen wird, wird geprüft, ob der Interrupt durch Alarm 1 oder durch Alarm 2 ausgelöst wurde. Alarm 1 entspricht dem Weckvorgang am Morgen, der Alarm 2 aktiviert, wenn er ausgelöst wird. Alarm zwei entspricht einem einminütigen Aufwachen, wobei der Zähler jede Minute bis zu 30 Minuten hochgezählt wird und dann für ein paar Sekunden geprüft wird, ob ein Befehl von der Zentraleinheit empfangen wird, um die Messungen zu starten oder nicht. Wenn kein Befehl von der Zentraleinheit empfangen wird, wird der Zähler auf Null zurückgesetzt und der Prozess beginnt erneut. Wenn jedoch ein Befehl ankommt, wird der Alarm ausgeschaltet und das Rechtecksignal (SQW) wird aktiviert. Die Zentraleinheit sendet mit ihrem Befehl zum Starten der Messung eine Abbruchzeit, die nun ständig mit der aktuellen Uhrzeit verglichen wird. Solange die entsprechende Zeit nicht erreicht wird, wird das Rechtecksignal jede Sekunde ausgelöst. Wenn die Zeit erreicht ist, wird das Rechtecksignal abgeschaltet, Alarm 1 wird aktiviert, der Zähler wird zurückgesetzt und das System geht in den Tiefschlaf, bis es am nächsten Morgen durch Alarm wieder aufgeweckt wird. Danke im Voraus. Veloso
:
Verschoben durch Admin
VELOSO schrieb: > Hierbei spielt die Echtzeit-Fähgikeiten unseres Systems eine bedeutende > Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC > DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.) Was hat eine RTC mit Echtzeit-Fähigkeit zu tun? Eine Real-Time-Clock stellt dir eine Uhrzeit zur Verfügung, Echtzeit-Fähigkeit garantiert dir auf einem Prozessor das Einhalten einer maximalen Reaktionszeit auf äußere Signale. Da solltest du dir die Begriffe noch mal genauer ansehen. C1 und C2 in deiner Schaltung sind etwa um einen Faktor 5000 zu groß.
Sind die I2C-Pullups ausserhalb des gezeigten Ausschnitts, oder fehlen die?
Hallo, da ich die RTC nicht programmieren muss, bin ich mit dem RTC nicht so sehr vertraut. C1 und C2 habe ich durch einen 22 pF Kondensator ersetzt gehabt. Das habe ich vergessen zu erwähnen.
VELOSO schrieb: > da ich die RTC nicht programmieren muss, bin ich mit dem RTC nicht so > sehr vertraut. Wenn eine gewisse Echzeit-Fähigkeit gefordert ist, betrifft das die gesamte Programmstruktur. Mit der RTC speziell hat das nichts zu tun.
Im Anhang nochmal der ganze Schaltplan von mir. Muss ich den Pull-Up-Widerstand zwischen SQW/INT vom DS3231 und PD3 vom Atmega einführen? Muss ich beim Pin Vbat irgendetwas beachten? Den z.B. an den VCC der Schaltung anschließen? Ich habe noch Online eine Beispielschaltung gefunden. Kann ich mich daran orientieren? Danke
VELOSO schrieb: > Im Anhang nochmal der ganze Schaltplan von mir. die widersprechen sich, mal XTAL beschaltet mal nicht, XTAL Kondensatoren immer noch falsch und an den VCC und AVCC fehlen sie ganz und AREF darf(sollte) nicht mit VCC gebrückt werden, da setzt man intern die Bits/Register dafür.
:
Bearbeitet durch User
VELOSO schrieb: > Muss ich den Pull-Up-Widerstand zwischen SQW/INT vom DS3231 und PD3 vom > Atmega einführen? Wieso "zwischen"? Der gehört von der Leitung nach VCC. Ob ein externer Pull-Up Widerstand erforderlich ist, hängt davon ab, ob du den internen in der Software aktivierst oder nicht. > Muss ich beim Pin Vbat irgendetwas beachten? Den z.B. an den VCC der > Schaltung anschließen? Wie die Pin-Bezeichnung schon anzudeuten versucht, gehört der an den "+"-Pol der Backup-Batterie. Laut Datenblatt benötigt die RTC eine V_Batt zwischen 2,3 und 5,5V. Das ist doch eindeutig.
Ja die internen sind in der Software aktiviert. Die Vorschläge habe ich ergänzt. Mit dem XTAL habe ich mehrere Schaltpläne in diversen Foren verglichen und die Verschaltung sah immer wie bei mir aus. Die Schaltung an sich hat ja auch mit dem RTC Shield und dem Atmega 328P-Pu funktioniert. Daher denke ich, dass der XTAL richtig angeordnet ist. Danke
VELOSO schrieb: > Die Vorschläge habe ich ergänzt. willst du die Leute veräppeln? jetzt trennst du VCC mit einem Kondensator?
Wolfgang schrieb: > C1 und C2 in deiner Schaltung sind etwa um einen Faktor 5000 zu groß. Hatte ich auch einmal versehentlich. Da lief dann auch nichts. Quarz getauscht, nix. Alles getauscht, wieder nix (natürlich, blöd wie ich war, wieder 100nF genommen). Irgendwann fällt auch dem Blindesten auf, was er falsch gemacht hat. Das könnte der Fehler gewesen sein. Aber der TO hat sie schon getauscht (und hoffentlich ausprobiert) und daher muss sicher noch mehr faul sein.
VELOSO schrieb: > Die Vorschläge habe ich ergänzt. Schaltbild sieht irgendwie komisch aus. Ist das vielleicht einfach Arduino? Wenn das einfach fertige Modul so wie Arduino ist, wozu alles auf dem Schaltplan? Einfach Box mit ein paar Pins und es reicht. So etwa wie auf meinem Bild. Diese Arduino-Bezeichnungen wie D1-D13 und A0-A5 irritieren nur bei Programmieren. Hier als Beispiel Arduino Pro Mini, so wie ich das benutze. Quarz braucht man nicht extra, das ist in Modul schon eingelötet. DTR kann man zu GND einschließen, somit bekommt man gratis Kondensator für RESET. Es gibt je 2 Pins für PD0 und PD1, auch für RESET, das kann man auch benutzen, wie es für die Platte bequemer ist. Genauso mit Modul DS3231. alles, auch Batterie, gibt es schon drin. Wir brauchen nur zu zeichnen, was draußen bleibt.
:
Bearbeitet durch User
VELOSO schrieb: > für meine Masterthesis Joachim B. schrieb: > willst du die Leute veräppeln? > > jetzt trennst du VCC mit einem Kondensator? Oje! Mit dem Master das würde ich mir nochmal überlegen. Noch kannst du dich umentscheiden. Finanzdienstleistungen sind gerade groß im Kommen. VELOSO schrieb: > die Echtzeit-Fähgikeiten unseres Systems eine bedeutende > Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC > DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.) > gewährleistet wurde. Sortiere erstmal die Begriffe. Das mit der Uhr hat nichts mit Echtzeitfähigkeit zu tun. Echtzeitfähigkeit heisst, dass das System innerhalb einer bestimmten Zeit garantiert reagiert hat. Wie gesagt, noch kannst du dich für ein anderes Fach entscheiden. Die Masterthesis ist ja noch nicht fertig.
Lässt du den auf 16Mhz laufen? Habe das gerade nicht genau im Kopf, aber kannst du den dann nicht nur mit max. 4Mhz takten?
:
Bearbeitet durch User
HändeÜberDemKopfZusammenschlag schrieb: > Oje! Mit dem Master das würde ich mir nochmal überlegen. der will uns doch veräppeln, mal kein Quarz, mal 16 MHz aber dafür auch mal 3,3V VCC das geht doch alles nicht zusammen!
F. F. schrieb: > Lässt du den auf 16Mhz laufen? Vielleicht läuft der µC gar nicht mit 16MHz, sondern mit 2MHz, weil das CKDIV8 Fuse Bit falsch steht.
Alles möglich. Vorhin konnte ich das nicht mehr ändern (Handy), aber ihr habt ja auch so verstanden, dass ich die 3,3V Vcc meinte.
Wenn der To erstmal an der frischen Luft war, geschlafen hat, wird er seine Fehler sicher finden. Es hat ja vorher gelaufen.
Und wenn er dann an der frischen Luft war und ausgeschlafen hat... Und er dann eventuell nochmal, für seine Masterthesis, ins Datenblatt schaut - wird ihm sicherlich auffallen das der 328p garnicht mit 16Mhz unter 3V3 läuft. ?
Und wegen solcher Studenten kommt bald der echte Fachkräftemangel!
Die Pullup-Widerstände für I2C sind mit 10k viel zu gross, für 5 Volt ist etwa 1.5k - 2k angemessen, bei 3.3 Volt 1.0k bis 1.2k. Lies Dir mal das Datenblatt http://www.ti.com/litv/pdf/slva689 durch, dann weisst Du warum.
bingo schrieb: > für 5 Volt > ist etwa 1.5k - 2k angemessen Auf dem Modul mit DS3231 stehen Pullup 4k7. Ich habe auf der Hauptplatine (alles 5 Volt) noch 10k, zusammen also 3k2. Das arbeitet mit Geschwindigkeit ~ 550 kHz.
bingo schrieb: > Die Pullup-Widerstände für I2C sind mit 10k viel zu gross, für 5 Volt > ist etwa 1.5k - 2k angemessen, bei 3.3 Volt 1.0k bis 1.2k. Lies Dir mal > das Datenblatt http://www.ti.com/litv/pdf/slva689 durch, dann weisst Du > warum. Ich halte da mal mit Application Informationen des Erfinders des I2C-Bus gegen: Die geben gnadenlos 10kΩ an und haben deiner Meinung nach keine Ahnung davon? z.B. Fig.22 aus S.37 https://www.nxp.com/docs/en/data-sheet/PCAL6524.pdf Es gibt ganz klare Bedingungen, wann beim I2C der Pegel stehen muss. Da kann man sich viel Grübelei über die Buseigenschaften, Rechnerei und Philosophiererei über Anschlussszenarien sparen, wenn man sich einfach mit dem Oszi die Bussignale anguckt.
Wolfgang schrieb: > Die geben gnadenlos 10kΩ an und haben deiner Meinung nach keine > Ahnung davon? ja die sagen auch nur IHRE Meining ohne alle I2C Chips sowie den Aufbau beim konkreten User zu kennen. Steckbrett und Kabel und Module sind was anderes als der I2C Bus je sein wollte nämlich I²C, für englisch Inter-Integrated Circuit nun ist ein Modul kein IC und an Breadboard und an längere Kabel(kapzitäten) hatten die Erfinder nie gedacht, aber vielleicht doch sonst könnten die IC nicht pullup down treiben bis 5mA was bei 10k nicht nötig wäre.
:
Bearbeitet durch User
Joachim B. schrieb: > nun ist ein Modul kein IC und an Breadboard und an längere > Kabel(kapzitäten) hatten die Erfinder nie gedacht Die Erfinder des I2C haben sogar an einen 100m langen I2C-Bus gedacht. https://www.nxp.com/docs/en/application-note/AN11084.pdf Bei einem einfachen, bis zu 15m langen Bus schlägt NXP als Pull-Up 300Ω auf jeder Seite vor (Fig. 2). Die Wahrheit für den TO wird wohl zwischen dem oben genannten Wert von 10kΩ bei 1.8V Bus und diesen 2x300Ω liegen. Oszi hilft - wie gesagt.
> z.B. Fig.22 aus S.37 https://www.nxp.com/docs/en/data-sheet/PCAL6524.pdf
Das in Fig22 dürfte ein Druckfehler sein, es müsste 1k sei, so wie in
Fig.39, das passt dann auch zur I2C-Definition. Es geht Beim I2C-Bus
bekanntermassen nicht nur um Spannungen, sondern auch um Ströme und die
sind mit 10k nicht zu erreichen. Häng mal ein Oszi dran und schau Dir
Pegel und Flanken an.
bingo schrieb: > Es geht Beim I2C-Bus bekanntermassen nicht nur um Spannungen, sondern > auch um Ströme ... Klar geht es um Ströme. Irgendwie muss die Kabelkapazität schließlich umgeladen werden. Die 50pF in Fig. 39 entsprechen etwa 1m Flachbandkabel.
Ich merke selber, dass ich aktuell fehl am Platz bin. Ich beschäftige mich auch grad mal seit einer Woche mit dem Thema. Also falls Ihr helfen wollt gerne!! Ich bedanke mich auch sehr für die Vorschläge. Doch die negativen Kommentare bauen mich weder auf, noch bringen Sie mich weiter. Die Verschaltung für den Microcontroller bezieht sich auf den folgenden Link. Hier habe ich einen Arduino Nano nachgabaut. http://www.electronoobs.com/eng_arduino_tut6_sch2.php Das habe ich gemacht, um den Bootloader und den Code auf den uC draufzuladen. Das hat auch soweit geklappt. Also an dem uC scheint nichts falsch zu sein. Ich habe nochmal die Datenblätter gelesen und versucht die Schaltung soweit zu vervollständigen. Da das System vor mir einen RTC Shield mit einer eigenen Batterie hatte und somit die Uhrzeit auch beim Ausschalten des Systems weiter lief, habe ich in meinem Fall die RTC direkt an die Batterie angeschlossen. Damit dies weiterhin gewährleistet wird. Es wäre zwar besser, dass ich für die RTC eine eigene Batterie verwende, leider kann ich es aus Platzmangel nicht tun. SQW/INT habe ich mit einem 4,7 kOhm Widerstand verschaltet.
Erstmal solltest du nicht ähnliche Schaltpläne und Layouts Posten, sondern nur deine eigenen und auch nur deine Korrekturen. Lass uns doch noch einmal von vorne anfangen!
Bilder sagen auch mehr als 1000 Worte. Also auch gute Bilder von beiden Seiten der komplett aufgebauten Platine. Dann mach erst mal "Blink debug". Einfach um zu sehen, ob der uC überhaupt läuft.
VELOSO V. schrieb: > Ich merke selber, dass ich aktuell fehl am Platz bin. Ich beschäftige > mich auch grad mal seit einer Woche mit dem Thema. was hast du an 100nF an jedem (A)VCC nicht verstanden?
VELOSO V. schrieb: > Neuer_Schaltplan_.PNG Solange die 4.7Ω Widerstände (R4 und R5) in der Schaltung sitzen, solltest du tunlichst vermeiden, die Stromversorgung der Schaltung einzuschalten.
VELOSO schrieb: > Ja die internen sind in der Software aktiviert. > > Die Vorschläge habe ich ergänzt. > > Mit dem XTAL habe ich mehrere Schaltpläne in diversen Foren verglichen > und die Verschaltung sah immer wie bei mir aus. Die Schaltung an sich > hat ja auch mit dem RTC Shield und dem Atmega 328P-Pu funktioniert. > Daher denke ich, dass der XTAL richtig angeordnet ist. > > Danke Eine Verschaltung sollte immer nach Datenblatt erfolgen, nicht nach irgendwelchen Blogs im Internet. Die können richtig sein, oder eben auch nicht (so wie Dein Schaltplan hier). Du vermischt auch SPI und I2C im linken Bereich. Nicht gut. Und lerne erst einmal, einen richtigen Schaltplan zu zeichnen. Bauteile bekommen immer Namen und Werte (z.B. X5 mit 100nF oder X11 = ISP). Dabei werden keine Kommata gesetzt, sondern etwa so 4,7kOhm = 4R7 und 3,3V = 3V3. Und Texte werden nicht gespiegelt, sie sollten lesbar bleiben (GND-Symbole).
:
Bearbeitet durch User