Vorsicht! Der Oszillator sollte dann schwingen(?), also bis zum Clock-Control-Unit. Dort können einige bis alle Leitungen dann von der Main-Clock abgekoppelt werden - das SIND die Sleep-Modi. Wenn CPU und Flash abgekoppelt sind, steht das Programm, wenn die I/O abgekoppelt sind steht auch die entsprechende Hardware (Timer, UART, die Flankenerkennung der echtenexternen IRQs (die PCINTs werden hingegen asynchron "überwacht", einige Kommunikationsschnittstellen,...), wenn der ADC abgekoppelt wird, steht der logischerweise auch.Der Tiny arbeitet immer wenn er Strom bekommt
Wenn alle Clocks abgekoppelt sind (Standby/Powerdown) würde ich nicht von "arbeiten" sprechen, obwohl er da Strom bekommt...
Da glaub ich nicht dran...Alles verstanden?
Ich verstehe die Aufgabe schlichtweg nicht... da muß ein fundamentales Mißverständnis vorhanden sein...
5s nach... was? bisher wars nach dem Programmstart, also nach einem Reset, also GENAU EINMAL (oder nach einem überlauf des Programmcounters, was ich Dir durchaus zutrauen würde), ansonsten soweit ok...Der Attiny soll nach 5 Sekunden einen Impuls auslösen...
Nach dem Impuls soll der Tiny "angehalten werden" (Sleep), falls Du die Taste 3s lang betätigst. WELCHE Taste?...Zusätzlich möchte ich nachdem er den Impuls ausgelöst hat dem Tiny sagen 3 Sekunden auf den Taster drücken heißt für den Tiny abschalten bzw schlafen legen...
Und was soll der Tiny machen, wenn die Taste in dem Moment NICHT 3s betätigt wird?
Mit einem erneuten Tastendruck (der dann auch 3s lang sein soll), willst Du den Tiny wieder "aufwecken", ok......Und erst wenn ich den Taster wieder für 3 Sekunden betätige macht der Tiny seine Arbeit weiter.
Dann soll er weitermachen? WAS soll er dann weitermachen?
Was für einen "letzten Wert" meinst Du denn? Bisher hast Du Dir ein Programm erarbeitet (erarbeiten lassen), daß ein Bein 5s nach dem Programmstart kurz auf Gnd zieht, und dann wieder losläßt. Danach ist das Programm "zuende" (siehe Hinweis oben)....Es ist Quasi ein ( Ein - Aus ) Schalter der sich den letzten Wert Speichert...
Die AVR sind ... gehorsam. Die machen stupide genau das, was Du ihnen sagst (was nicht unbedingt das sein muß, was Du willst...)...Der Tiny soll nur arbeiten wenn ich Ihm das sage
Dein Frogramm wird in den Flash gebrannt, welcher einfach 'ne lange Liste ist. Solange nichts gebrannt wurde, ist die Liste "leer", in jeder Zeile steht erstmal "tue nichts".
Wenn der AVR mit Strom versorgt wird, löst das erstmal einen Power On Reset aus. Dabei wird unter anderen der ProgramCounter (also der Zeiger auf die nächste abzuarbeitende Zeile in der Liste) auf 0 (den Listenanfang) gesetzt.
Die CPU holt sich (im CPU-Takt, also wenn die CPU-Clock angekoppelt ist) die Instruktion aus der Liste (Flash, also muß auch die Flash-Clock angekoppelt sein), wo der Zeiger draufzeigt, und arbeitet die ab. Dabei wird der Zeiger eins weiter gesetzt.
Ist die Instruktion abgearbeitet, gehts mit der nächsten (wo der Zeiger jetzt draufzeigt) weiter.
Wie gesagt, in jeder Zeile der Liste steht erstmal "tue nix" - er tut also einen Takt nag nix. Und dann (für die nächste Zeile) noch einen Takt nix. Usw usw.
Aber was geschieht, wenn er am Ende der Liste angekommen ist?
Die letzte Zeile auf der Liste ist Zeile 511 (0x1FF). Der AVR inkrementiert den Zähler, und arbeitet dieses letzte "tue nix" ab.
Der Zähler ist neun Bit breit - vor dem Inkrement stand er auf 511dezimal, also auf &b111111111. Wohin zeigt er nach dem inkrement, also was geschieht im nächsten Takt?
Wenn ein Programm in die Liste schreibst, wird dieses genauso schrittweise abgearbeitet. Wobei es eben auch die möglichkeit gibt, dem Zeiger einen anderen Wert zuweisen zu lassen - das Programm dahin springen zu lassen.
Mach Dir selbst mal einen konkreten Programmablaufplan, damit Du selbst erstmal siehst, was Du eigentlich willst...