Power Down wecken mit PinChange?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Power Down wecken mit PinChange?

      Hallo in die Runde!

      Stecke da gerade über einen Schaltplan den ich gerade zusammen stricke.
      Allerdings meine etwas leichtsinnige Vorstellung der Art "ich mach das mal eben" scheint an einem Punkt gerade in Ratlosigkeit zu enden...

      Geht um den Power Down Modus, hier speziell den ATmega328PB, und dem exakt getimten aufwecken.
      Bislang habe ich das mehrfach gemacht mit 32kHz Uhrenquart und asynchronen Timer2.
      Dieses mal aber brauche ich den Takt zusammen mit der Zeiterfassung genauer als diese 20ppm und Temperaturabhängigkeit.
      Wunschziel liegt bei wenigen Minuten Genauigkeit im Jahr.
      Ziel des ganzen: Eine Art spezielle BMS mit Gauge für einen größeren Akku, das ganze für Outdoorbetrieb, also zwischen -20°C im Winter und +45°C im Sommer.

      Daher war meine Idee diesen Takt als 1Hz Rechteck aus einer DS3231 zum aufwecken zu nehmen.
      Und zwar möglichst Flankengesteuert (Pin Change) entsprechend alle 500ms:
      Jede steigende Flanke wäre dann die volle Sekunde und jede fallende die halbe Sekunde.

      Laut dem Datenblatt (ATmega328PB_40001906C.pdf) Kapitel 13.6 kann der Mega328PB kann ein
      Pin Change Interrupt den µC aus dem Power Down wecken.

      Allerdings finde ich im Bascom Handbuch weder bei Config INT noch bei ON Interrupt irgend was hilfreiches über die PCINT
      Ich vermute mal das ich den Config INT nicht brauche, denn die Register die ich für den PCINT manuell setzen muss stehen ja im Datenblatt.
      Also für PCINT18 eben den PCMSK2 wo der PCINT18 aktiviert werden muss.
      Allerdings frage ich mich ob Bascon ein "Enable PCINT2" und "On PCINT2" versteht.

      Blöder weise habe ich mit den PCINT's nie etwas gemacht.

      Geht das so, oder baue ich mir da gerade einen Denkfehler ein?

      Jürgen
    • Hallo Jürgen,

      hier ein Beispiel für das benutzen der Pin-Change-Interrupts.

      Enable Interrupts
      Enable Pcint2
      Pcmsk2 = &B00000100
      On Pcint2 Isr_pcint2

      Im obigen Beispiel würde ein Pegelwechsel am PortD.2 ausgewertet und in die Routine Isr_pcint2 verzweigt.
      Genau so, wie du es dir gedacht hattest.

      Gruß Joachim

      The post was edited 1 time, last by Jogi ().

    • DG7GJ wrote:

      Wunschziel liegt bei wenigen Minuten Genauigkeit im Jahr.
      Schafft der Mega das nicht alleine? Meine DS war erheblich schlechter und mit einem anderen Quarz (aus eine alten Uhr) ist er auch im Minutenbereich daneben (Gut würde ich <4 Sekunden im Jahr nennen)
      Wenn keine Isr benötigt wird muß der Int nicht enabled werden, wach wird er beim Wechsel sowieso?
    • Hallo!

      Jogi wrote:

      Enable Pcint2
      Pcmsk2 = &B00000100
      On Pcint2 Isr_pcint2

      Ahja, dann bin ich beruhigt. Genau das hatte ich im Bascom Handbuch vermisst.

      Pluto25 wrote:

      Schafft der Mega das nicht alleine? Meine DS war erheblich schlechter und mit einem anderen Quarz (aus eine alten Uhr) ist er auch im Minutenbereich daneben (Gut würde ich <4 Sekunden im Jahr nennen)
      Schwierig, sehr schwierig.
      Bis etwa 2019/2020 gab es über Mouser ein Präzisionsquarz 32,768kHz Stiftquarz vom Uhrenhersteller Cizen spezifiziert auf +-5ppm. innerhalb 0-40°C.
      Gibt es heute nicht mehr, nur noch Schrott mit 20, teilweise 30ppm entsprechend Abweichungen von Minuten je Woche!
      Da ist ein +-2ppm TCXO wie in der DS3231 steckt allemal besser.

      Und sollte eine ältere DS3231 mal deutlich außerhalb dieser Genauigkeit liegen, kann man die Alterung des Quarzes ausgleichen - theoretisch im Bereich +-12,7ppm. Andererseits ist das aber auch schon eine mögliche Fehlerquelle für falsch gehende DS3231: Im Register h10 sollte 00 stehen wenn da noch nichts abgeglichen ist. Stehen da Mülldaten drin wird auch eine DS3231 zur Eieruhr.

      Jürgen