Forum: Mikrocontroller und Digitale Elektronik PTC wake-up im power-save mode


von Peter L. (peter_l177)


Lesenswert?

Guten Tag!

Weiß von euch zufällig jemand wie man einen Atmega328PB durch Berührung 
vom power-save sleepmode weckt? Im Datenblatt steht folgendes:

• Supports wake-up on touch from power-save sleep mode

Aktuell wird er vom WDT jede Sekunde aus dem power down Mode geweckt und 
überprüft alle 9 "Touch Knöpfe" Dabei habe ich einen Stromvervrauch von 
ca. 70uA im Durchschnitt gemessen. Kurze Berührungen werden dann leider 
nicht erkannt und den Stromverbrauch würde ich auch noch gerne senken.

Zu folgenden Interrupt Vectoren aus dem Datenblatt habe ich keine 
Beispiele gefunden:

38   0x004A   PTC_EOC   PTC End of Conversion
39   0x004C   PTC_WCOMP   PTC Window comparator mode

Vielen Dank!
mit freundlichen Grüßen Peter

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Peter L. schrieb:

> Weiß von euch zufällig jemand wie man einen Atmega328PB durch Berührung
> vom power-save sleepmode weckt? Im Datenblatt steht folgendes:
>
> • Supports wake-up on touch from power-save sleep mode

Tja, leider haben die aus dem PTC-Zeugs schon immer ein Geheimnis 
gemacht. D.h.: wenn es eine Lösung gibt, findest du sie höchstens in der 
Touch-Lib. Sprich: du wirst paktisch gezwungen, eine ASF-Anwendung zu 
bauen.

Dann kannst du den generierten Code Re-Engineeren, um das rauszufinden, 
was für dich wichtig ist.

von Georg M. (g_m)


Lesenswert?

Peter L. schrieb:
> • Supports wake-up on touch from power-save sleep mode
>
> den Stromverbrauch würde ich auch noch gerne senken

If the PTC is enabled, the main clock is kept running.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Georg M. schrieb:
> Peter L. schrieb:
>> • Supports wake-up on touch from power-save sleep mode
>>
>> den Stromverbrauch würde ich auch noch gerne senken
>
> If the PTC is enabled, the main clock is kept running.

Ähem ja, jetzt fällt's mir erst richtig auf: Das Zitat im OT sprach ja 
auch  nur von einem WakeUp aus dem "PowerSave".

Sprich: Im Prinzip wird nur die MCU tot gelegt. Takt und Peripherie (so 
weit nicht explizit totgelegt) läuft lustig weiter.

von S. L. (sldt)


Lesenswert?

Schließlich muss ja der ADC laufen, oder?

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

S. L. schrieb:

> Schließlich muss ja der ADC laufen, oder?

Ja. Der PTC nutzt den ADC, setzt allerdings noch etwas 
Hardwareunterstützung bezüglich der Generierung oben drauf. Die genauen 
Details sind halt, wie gesagt, nicht dokumentiert. Es macht schon echt 
heftig Arbeit, sich das per reverse engineering zu erschliessen.

von Peter L. (peter_l177)


Lesenswert?

Danke für eure Antworten!
Hab auch den Microchip Service kontaktiert. Bin gespannt ob die einen 
Beispielcode liefern können. Sonst werd ich wahrscheinlich auf den 
SAML10 wechseln, da der anscheinend "low-power" touch und "driven shield 
+" über Atmel Start untersützt.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Peter L. schrieb:

> Hab auch den Microchip Service kontaktiert. Bin gespannt ob die einen
> Beispielcode liefern können.

Für WakeUp aus PowerSave können sie das sicher. Und nur das war 
garantiert.

Ist eben nicht PowerDown. Das Problem scheint mir hier eher zu sein, 
dass dir die Eigenschaften der diversen Schlafmodi völlig unbekannt 
sind...

> Sonst werd ich wahrscheinlich auf den
> SAML10 wechseln, da der anscheinend "low-power" touch und "driven shield
> +" über Atmel Start untersützt.

Na, wenn das mal nicht in die Hose geht. Die SAMs sind bezüglich der 
Schlafmodi noch ein ganzes Stück komplexer als die AVR8...

Ic habe jetzt keine Lust gehabt, das selber im DB nachzuschlagen. Es 
würde mich aber kein bissel wundern, wenn du mit der SAM-Idee komplett 
in die falsche Richtung läufst...

von Patrick C. (pcrom)


Lesenswert?

Ich habe keine erfahrung mit Atmega328PB aber ich wuerde sagen es gibt 
viel flexibilitaeten die man mittels hardware/software machen kann um 
strom zum minimalisieren oder schnellere reaktion zu bringen. Ich denke 
zB an
* Niedriege spannung
* Niedriege geschwindigkeit
* Braucht man unbedingt wake-up auf ALLE touch-eingaengen ? Oder kann 
man mehrere in eine messung zusammen nehmen und wenn aktiv dann erst 
detektieren welcher es war.
* Gibt es vielleicht bessere resources als WDT um als timer zu benutzen 
? Ich sehe im datasheet z.B. "Power-Save mode 1.3uA incl 32kHz RTC" bei 
1MHz/1V8/25°C

Patrick aus die Niederlaende

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Patrick C. schrieb:

> Ich habe keine erfahrung mit Atmega328PB aber ich wuerde sagen es gibt
> viel flexibilitaeten die man mittels hardware/software machen kann um
> strom zum minimalisieren oder schnellere reaktion zu bringen. Ich denke
> zB an
> * Niedriege spannung
> * Niedriege geschwindigkeit

Zumindest dies ist definitiv eine Überlegung wert. Aber: Das wird den 
Energieverbrauch vermutlich nur relativ unerheblich senken können.

Attraktiv wäre vor allem die Senkung des Takts, aber leider: es gibt da 
das Problem, dass diese ganze Touch-Scheiße einen gewissen Mindest-Takt 
voraussetzt...

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Peter L. schrieb:
> Aktuell wird er vom WDT jede Sekunde aus dem power down Mode geweckt und
> überprüft alle 9 "Touch Knöpfe" Dabei habe ich einen Stromvervrauch von
> ca. 70uA im Durchschnitt gemessen. Kurze Berührungen werden dann leider
> nicht erkannt und den Stromverbrauch würde ich auch noch gerne senken.

Tja, wenn man den Stromverbrauch hier noch richtig absenken möchte, wird 
man wohl zu der klassischen Variante mit (zumindest) einem 'Taster' zum 
Aufwecken wechseln müssen – hier ist dann quasi alles abgeschaltet und 
muss auch nicht regelmäßig aufwachen, vieles dabei wieder neuanlaufen, 
um dann untersuchen zu können, ob tatsächlich gerade etwas gedrückt 
wurde, und sich dann anschließend wieder schlafenlegen zu können, falls 
es nicht der Fall war. Man kann die Aufweck-Intervalle natürlich länger 
machen, um im Mittelwert so Strom zu sparen, nur ist dann irgendwann mal 
auch nicht mehr sichergestellt, dass ein kurzes Drücken auch erkannt 
wird. Die 0,1µA im Datenblatt des 328P sind auf jeden Fall tatsächlich 
möglich und keine schöne Werbung, weil ich es gemacht, getestet und 
gemessen habe – der 328PB wird als Pendant wohl etwas mehr in diesem 
äquivalenten Zustand verbrauchen, das sagt zumindest das Datenblatt so 
voraus.

: Bearbeitet durch User
von Peter L. (peter_l177)


Lesenswert?

Der Microchip Support hat leider nicht helfen können. Die haben auch nur 
geschrieben das Atmel Start veraltet ist und ich auf MCC wechseln soll. 
Und das das auch nichts bringt weil "Low Power Touch" mittels Qtouch 
library von "Atmega devices" nicht unterstütz wird. Ansschließend haben 
sie gemeint das die Sales Abteilung eventuell weiterhelfen könnte. Wenn 
ich das vorher gewusst hätte hätte ich nicht schon 10 Prototypen mit den 
Atmegas bestellt. Immerhin funktionieren tun sie ja schon einigermaßen 
damit der Chef zufrieden ist...

Ich hab diese Woche auf YouTube zufällig ein Video über Piezoelemente 
als Touch Sensor gesehen. Da gibt es anscheinend eigene Chips die mit 
relativ hoher Spannung auch haptisches Feedback geben können.

Mit den Piezoelementen könnte man Strom sparen (Wake up per Pin Change 
Interrupt), das Gerät auch mit Handschuhen bedienen können, nasse 
0berflächen wären auch kein Problem mehr.
Bis jetzt habe ich ohne "Driven Schield" immer den Bereich auf der 
Leiterplatte um die Touchflächen freihalten müssen, um Streukapazitäten 
zu minimieren, das würde auch wegfallen. Zudem würde auch ein 
günstigerer uC ausreichen.

Der mechanische Aufbau des Gehäuses und das Löten würde wohl etwas 
komplexer werden.

Theoretisch müsste es möglich sein eine Touchfläche mit z.B: 3x3 Tasten 
mit 4 Piezoelementen an den Ecken, wie bei einer Waage auszuwerten.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Peter L. schrieb:

> Und das das auch nichts bringt weil "Low Power Touch" mittels Qtouch
> library von "Atmega devices" nicht unterstütz wird.

Weil's halt die Hardware schlicht nicht hergibt. Da bringen auch die 
tollsten Software-Verrenkungen in C++ nix. Die treiben nur den Aufwand 
für's RE in die Höhe... Wohl im Kern eher so eine Art impliziter 
Kopierschutz...

> Ansschließend haben
> sie gemeint das die Sales Abteilung eventuell weiterhelfen könnte.

LOL. Das muss wohl nicht weiter kommentiert werden.

> Wenn
> ich das vorher gewusst hätte

Schwache Ausrede. Das hättest du vorher wissen können. So wie ich das 
auch hätte wissen können, ja sogar hätte wissen müssen. Denn ich kenne 
immerhin die Eigenschaften der verschiedenen Schlafmodi.

> Mit den Piezoelementen könnte man Strom sparen (Wake up per Pin Change
> Interrupt), das Gerät auch mit Handschuhen bedienen können, nasse
> 0berflächen wären auch kein Problem mehr.

Das ist ein wirklich sehr interessanter Ansatz. Treibt aber natürlich 
wieder den Hardware-Aufwand in die Höhe und führt eine neue 
Single-Point-Abhängigkeit ein. Nach den Erfahrungen der "Chip-Krise" 
versucht man, sowas möglichst zu vermeiden. Statt dessen vielleicht mal 
darüber nachdenken: Warum muß es unbedingt Touch sein? Nur weil die 
eigenen Sales-Droiden das als unbedingt notwendig für den Erfolg des 
Produkts betrachten?

Die Typen habe von nix eine Ahnung, müssen aber ihre teure Anwesenheit 
im Unternehmen rechtfertigen. Das muss man Cheffe bloß klarmachen.

von Peter D. (peda)


Lesenswert?

Man könnte die Einschalttaste zweiteilig ausführen und damit einen 10MΩ 
Pullup nach GND ziehen. Dann muß nur ein Pin-Change Interrupt aktiv 
sein.
Die Sensortasten an TV und Radio machten es auch so.
file:///C:/Work/Downloads/U710.pdf

von Peter D. (peda)


Lesenswert?


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
Noch kein Account? Hier anmelden.