Bascom Taster Impuls Simulieren geht das ?

Der Tiny arbeitet immer wenn er Strom bekommt
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.
Wenn alle Clocks abgekoppelt sind (Standby/Powerdown) würde ich nicht von "arbeiten" sprechen, obwohl er da Strom bekommt...
Alles verstanden?
Da glaub ich nicht dran...
Ich verstehe die Aufgabe schlichtweg nicht... da muß ein fundamentales Mißverständnis vorhanden sein...
...Der Attiny soll nach 5 Sekunden einen Impuls auslösen...
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
...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...
Nach dem Impuls soll der Tiny "angehalten werden" (Sleep), falls Du die Taste 3s lang betätigst. WELCHE Taste?
Und was soll der Tiny machen, wenn die Taste in dem Moment NICHT 3s betätigt wird?
...Und erst wenn ich den Taster wieder für 3 Sekunden betätige macht der Tiny seine Arbeit weiter.
Mit einem erneuten Tastendruck (der dann auch 3s lang sein soll), willst Du den Tiny wieder "aufwecken", ok...
Dann soll er weitermachen? WAS soll er dann weitermachen?
...Es ist Quasi ein ( Ein - Aus ) Schalter der sich den letzten Wert Speichert...
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).
...Der Tiny soll nur arbeiten wenn ich Ihm das sage
Die AVR sind ... gehorsam. Die machen stupide genau das, was Du ihnen sagst (was nicht unbedingt das sein muß, was Du willst...)
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...
 
Vielen Dank für Eure Hilfe.

Ich denke Ihr versteht einfach nicht was ich gerne haben möchte.
Das was ich haben möchte ist für Euch bestimmt zu einfach :)

Gerne versuche ich nochmals Euch zu sagen was ich genau benötige.

Der Tinny löst jedes mal einen Impuls aus wenn er Strom bekommen hat.
Das bedeutet, batterie an den Tinny ----- 5 Sekunden später der Impuls auf GND ----- jetzt ist das Programm zu Ende und der Tinny macht nichts mehr.
Schließe ich die Batterie vom Tinny ab und wieder an passiert genau das gleiche nach 5 Sekunden löst der Impuls aus.

Habt Ihr das soweit verstanden ( ich glaube ja )

Jetzt kommen wir zum schwere Teil der für Euch nicht ganz klar ist.

Wenn der Tinny nach 5 Sekunden den Impuls auf GND augelöst hat und anschließend nichts mehr macht da das Programm ja zu ende ist möchte ich durch 3 Sekunden drücken auf den Knopf ( der Taster an der Funk Fernbedienung ) dem Tinny sagen er soll beim nächsten mal ( Neustart ) den Impuls nicht mehr auslösen.

Da ich durch 3 Sekunden drücken auf den Taster diese Funktion quasi gesperrt habe.
Egal wie oft ich den Strom vom Tinny ausschalte bzw wieder anschalte er Arbeitet seinen Code erst wieder ganz normal ab wenn ich durch nochmaliges 3 Sekunden drücken auf den Taster den ganz normalen Ablauf wieder freigebe.

Ich hoffe ich konnte Euch es jetzt so beschreiben damit Ihr versteht was ich eigentlich machen möchte?
Für Euch ist das sehr sehr einfach umzusetzen.

Leider für mich nicht !!!

Darum bin ich ja auch hier damit ich Hilfe bekomme.
Deswegen auch meine Bitte wegen einem Beispiel Code.

Vielen Dank mal wieder.
 
Bevor es zu (weiteren) Missverständnissen kommt: Im Sleep benötigt der Controller weiterhin 'ne anliegende Versorgungsspannung, er entnimmt dieser dann lediglich fast keinen Strom...
Wenn Du also die Versorgungsspannung zeitweise abschaltest, beginnt der AVR beim nächsten anlegen Spannung immer mit einem Reset.
Beim Reset sind alle SRAM-Speicher mit unbekannten/zufälligen Werten beladen, und müssen vor Verwendung initialisiert werden (die I/O-Register (quasi auch SRAM) werden beim Reset mit default-Werten (->Datenblatt) initialisiert).
Der ProgramFlash ist nichtflüchtig, jede Zelle ist garantiert mindestens 10.000mal beschreibbar. Im allgemeinen werden die Daten darin (Dein Programm) nur beim "brennen" des Programms geschrieben/überschrieben.
Ein eventuell vorhandener Eeprom (beim Tiny13 64Bytes) ist ebenfalls nichtflüchtig, Du kannst ihn quasi als Festplatte benutzen. Jede Zelle ist garantiert 100.000mal beschreibbar.

Wenn also eine Information einen Power_Off-Zyklus überstehen soll, mußt Du sie im Eeprom hinterlegen (prinzipiell ginge es bei einigen Controllern auch im Flash, was aber unüblich ist, siehe oben, nur der Vollständigkeit halber).

Jetzt zu Deinem/unserem generellen Problem hier:
Es ist (zumindest für mich) einfach nicht nachvollziehbar, warum der Controller zwischendurch seine Versorgungsspannung verlieren soll/muß...
Meine (mehrfachen) Anfragen diesbezüglich (Was für eine Schaltung hast Du da eigentlich, Was soll wodurch wie konkret angesteuert/ausgewertet werden?) ignorierst Du.
Langsam beschleicht mich der Verdacht, daß irgendwas durch irgendwas überhaupt erst angeschaltet (und auch wieder abgeschaltet) werden kann, und Du nach einer Lösung dafür suchst, mit einer Verzögerung nach dem Einschalten ein Low-Impuls an einem Signal zu erzeugen. Aber nicht immer.
Diese ganzen "irgendwas" sind Informationen, die man Dir irgendwie immer Stück für Stück einzeln aus der Nase ziehen muß (wie Thomas bereits bemerkte).

Generell sehe ich zwei Möglichkeiten, in so'nem Forum vernunftig ein Problem zu schildern, und hilfreiche Antworten zu bekommen.
Entweder Du hast bereits 'ne mehr oder weniger komplexe Schaltung/'n mehr oder weniger komplexes Programm, und es geht nur um ein Detail -> dann kannst Du nach nur diesem Detail fragen, mußt aber trotzdem alles, was irgendwie mit diesem Detail zu tun hat schildern, damit wir verstehen können warum Du das so angegangen bist, und viellecht auch wo das Problem liegt, und wie man es eventuell lösen könnte.
Das setzt natürlich vorraus, daß Du selbst siehst, welche Dinge irgendwie mit dem Detail zusammenhängen (oder zumindest auf Nachfragen nachlieferst) - und genau da scheinen(!) bei Dir einige generelle Grundlagen zu fehlen...
Möglichkeit zwei wäre, daß Du von vornherein das ganze Projekt (alles) auf den Tisch packst - und sagst, was Du willst.
Hast Du da bereits eine Lösungsidee, kannst Du die natürlich gleich mitformulieren - von uns könnten dann andere Ideen kommen/diskutiert werden.
Und wenn Du dann eine Idee zu einem Programmablaufplan ausgearbeitet hast, kannst Du den implementieren.
Wir sind gern bereit, auf diesem Wege zu helfen, aber die wesentliche Programmierarbeit mußt Du liefern - wir sind kein Programmier-Dienstleister.
 
Hallo,

nun schreibe ich doch mal was zu dieser quasi "never ending story" :rolleyes:

Es geht um einen Garagen öffner ( Fernbedienung )
Das ist nur eine Spielerei von mir die ich gerne testen möchte.

Die Fernbedinung zieht sehr sehr wenig Strom.
Das Modul ist die Fernbedienung !!!

Es soll der Tiny ausgeschalten werden.
Da ja der Tiny sobald er Strom bekommt nach 5 Sekunden den Taster Befehl losschickt.
Das möchte ich verhindern indem ich sage wenn ich den Taster für 3 Sekunden gedrückt halte ist der Tinny ausgeschalten ( wie wenn er Quasi überhaupt nicht da wäre )

Drücke ich den Taster jetzt wieder für 3 Sekunden, schaltet sich der Tiny wieder ein und sobald er den Strom bekommt drückt der Tiny immer automatisch nach 5 Sekunden auf den Taster.

Ich hoffe Ihr versteht jetzt was ich machen möchte ?

.......

Der bereits verbaute Taster an der Fernbedinung muss natürlich weiterhin nutzbar sein.
Wenn ich den Taster auf der Fernbedinung für 1 Sekunde drücke passiert noch nichts erst nach 3 Sekunden drücken, schaltet sich der Tiny aus oder an.

Man benötigt Quasi eine Funktion die den letzten Zustand nach dem Drücken des Tasters speichert.
Erst nach erneutem drücken der 3 Sekunden auf dem Taster ändert sich der Wert wieder.

Der Wert soll nicht geändert werden, wenn man den Tiny vom Strom trennt.

Ich glaube Ihr versteht nicht was ich benötige bzw erreichen möchte.

Nochmals:

Der Attiny soll nach 5 Sekunden einen Impuls auslösen.
Das macht er auch sehr gut.

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 erst wenn ich den Taster wieder für 3 Sekunden betätige macht der Tiny seine Arbeit weiter.

Es ist Quasi ein ( Ein - Aus ) Schalter der sich den letzten Wert Speichert.

Weil jetzt macht der Tiny jedes mal seine Arbeit wenn er Strom bekommt.
Diese Funktion möchte ich über den Taster abschalten können.

Der Tiny soll nur arbeiten wenn ich Ihm das sage ?

Versteht Ihr was ich meine ?

Irgendwie scheinen hier die Vorgaben für den Tiny noch nicht wirklich sauber geklärt zu sein :eek:

Was ist das für eine Fernbedienung? Ich kenne Fernbedienungen für Garagentore nur als kleines Kästchen das man in der Hand hält und wenn man auf den Knopf drückt, dann geht das Tor auf oder zu. Der Controller in der Fernbedienung hängt dafür natürlich DAUERHAFT an der Batterie und der Bedientaster ist nur an einem IO-Pin angeschlossen. Was ist das für ne Fernbedienung? Wie sieht die genau aus? Wie ist die aufgebaut?

Wie wird der Tiny nun an diese Fernbedienung angeschlossen damit er irgendwann mal Strom bekommt?

So lange hier nicht wirklich ALLE Infos über das drum und dran um den Tiny herum auf dem Tisch liegen, wird dieser Thread wohl noch seitenlang ohne eine wirkliche Lösung weitergehen. Ohne diese Umgebungsinfos kann hier keiner sagen wie man das mit dem Tiny nun genau umsetzen kann. Das wird nur ein Rumgeeier werden.

Gruß
Dino
 
Hallo zusammen,

das Ihr kein Programmier-Dienstleister seit ist mir klar.
Das möchte ich auch überhaupt nicht !!!

Ich habe gefragt ob es möglich wäre ein Beispiel zu liefern keinen fertigen Code.....
Aus einem Buch kann man sich ja auch Beispiele ansehen bzw davon lernen.

Es Ist kein Projekt.
Es ein Versuch bzw eine Spielerei von mir.

Der Tinny soll nicht vom Strom getrennt werden.
Er soll wenn man 3 Sekunden auf den Taster drückt quasi alle Funktionen die man Programmiert hat ausschalten.

Macht man den Tinny wirklich Stromlos ( Batterie alle ) oder warum auch immer soll der Tinny diese Funktion Speichern.
Erst wieder durch drücken des Tasters ( 3 Sekunden ) kann man den Code im Tinny wieder nutzen.

Diese Funktion nach der ich die ganze Zeit Frage ist in vielen 100000 Geräten mit drin.
Zum Beispiel Auto Radio, Handy, PC usw.

All diese Geräte verlieren nachdem man Sie Stromlos gemacht hat nicht Ihre Einstellungen.

Ihr sagt ich soll das ganze mit einem Timer lösen ?
Warum den mit einem Timer ?

Bzw soll der Timer nur dauern abfragen ob der Taster gedrückt ist ?
Für die 5 Sekunden warten und dan kurz den Pin auf GND benötige ich ja keinen Timer meiner Meinung nach.

Es ist genau wie dino03 schon gesagt hat so ein kleiner Handsender.
Im Handsender ist ein Batterie drin richtig.

Der Tinny hängt mit an dieser Batteire ( ist wie gesagt nur ein Test )
Der Bedientaster schaltet über Masse darum hängt der Tinny dort mit drauf

Jetzt habt Ihr ja alle Infos.

Somit wäre es jetzt mal nett wenn Ihr mir weiter Helfen könntet.

Vielen Dank an alle.
 
Hallo,

Der Tinny soll nicht vom Strom getrennt werden.
Er soll wenn man 3 Sekunden auf den Taster drückt quasi alle Funktionen die man Programmiert hat ausschalten.

Macht man den Tinny wirklich Stromlos ( Batterie alle ) oder warum auch immer soll der Tinny diese Funktion Speichern.
Erst wieder durch drücken des Tasters ( 3 Sekunden ) kann man den Code im Tinny wieder nutzen.
...
...
Für die 5 Sekunden warten und dan kurz den Pin auf GND benötige ich ja keinen Timer meiner Meinung nach.

Es ist genau wie dino03 schon gesagt hat so ein kleiner Handsender.
Im Handsender ist ein Batterie drin richtig.

Der Tinny hängt mit an dieser Batteire ( ist wie gesagt nur ein Test )
Der Bedientaster schaltet über Masse darum hängt der Tinny dort mit drauf

Jetzt habt Ihr ja alle Infos.
und genau bei diesen fett markierten Stellen liegt mein Problem die Anforderungen zu verstehen. :vollkommenauf:

1) Ist der Tiny nun so angeschlossen wie im Schaltplan von Tommy? Dann wär er dauerhaft versorgt und das anfängliche Programm was hier mit drinsteht dürfte nur einmal durchlaufen wenn man die Batterie einlegt. Danach passiert nix mehr.

2) oder wird der Tiny nur versorgt (an GND angeschlossen) wenn man den Taster drückt?

3) oder gibt es einen weiteren Taster durch den der Tiny dann versorgt wird und er dann einen Impuls sendet?

Der Tiny soll ja einen Impuls senden wenn er Strom bekommt. Wie kann er das aber wenn er dauerhaft an der Batterie hängt und immer Strom bekommt?

Ich zB könnte dir bei den ganzen Fragezeichen bei besten Willen nicht weiterhelfen weil ich garnicht weiß was denn nun wirklich wie angeschlossen ist und was genau wie bedient und verkabelt und wann mit Strom versorgt werden soll. Darum hab ich auch gesagt du sollst möglichst ALLES mal genau erklären.

Man kann das evtl auch ohne Timer lösen. Dafür muß man aber erstmal wissen was denn wie angeschlossen werden soll.

Gruß
Dino
 
Danke für deine schnelle Antwort.

Es ist wie du bei 1. schreibst.
Der Tinny bekommt dauernd Strom von der Batterie.

Zusätzlich habe ich noch einen kleinen Kippschalter zwischen Batterie und Tinny gelötet um somit den Tinny auch mal auszuschalten.
Strom An ----- Tinny wartet 5 Sekunden ----- Programm Ende.

Jetzt soll noch die Funktion mit den 3 Sekunden dazu kommen.

Vielen Dank mal wieder
 
Hi Nicole, bist du weiter gekommen?
Mit deiner jetzigen hw kann ich mir folgendes vorstellen, ob das deinen Wünschen entspricht, weiß ich nicht:
Attiny wird eingeschaltet, nach 5 Sek.liefert der den Puls, im weiteren Verlauf 'lausch' er, ob das Signal kommt 'sei inaktiv' (3Sek. lang ein Eingang aktiv), wenn ja, setzt er ein flag und speichert es im eeprom.
Attiny wird von dir mit Schalter ausgeschaltet. Beim Wiedereinschalten schaut der attiny nach, ob er das flag gesetzt hat, wenn ja, sendet er den 'nach 5 Sekunden Puls' nicht, sondern lausch am Eingang, ob er vielleicht mit dem 3 Sekunden Puls wieder 'aktiv' werden soll. Dann würde er das flag wieder 'löschen' und beim nächsten Spannungbekommen (tolles Wort) seinen 'nach 5 Sekunden Puls' wieder absondern.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)