Hallo, nachdem mir die Suchfunktion hier im Forum leider auch nicht weitergeholfen hat, frage ich doch einfach mal. Wie kann ich einen ATtiny2313 mit einem Fotosensor / Diode oder Transistor das Programm des ATTiny starten??? Der ATtiny soll 16 LED Gruppen über die Porta, Portb und Portd die als Output konfiguriert sind, ansteuern. Ich könnte auch zur Not mit einer externen Lösung leben. Wichtig ist nur das die Schaltung möglichst wenig Strom verbraucht, da ich lediglich 4 Mignonakkus, also 4,8 Volt mit 3500 mAh, zur Verfügung habe. Ich hoffe einer von euch hat da eine gute Idee, wie man das Ganze umsetzen kann. Gruß Eisingstone
fototransistor an resetpin, bzw. irgendwie verschaltet?
Leg den Prozessor schlafen und laß in durch die Helligkeit aufwecken, oder schau halt ab und zu nach....
Hat der Tiny2313 einen Analog Comparator? -> Sleep -> ACINT = Hallo Wach! Oder PowerDown Mode und der Fototransistor erzeugt einen (LEVEL) Interrupt?
Er hat einen Komparator, der auf den Interrupt geht. Gruss Jadeclaw.
Ganz eindache Lösung: Endlosschleife vor das eigenliche Programm legen, aus der nur gesprungen werden kann, wenn der Fototransistor einen bestimmten Pin auf High oder Low legt. Nach Abarbeiten des Programms bedarfsweise wieder in jene Endlosschleife springen. Die Sleep-Variante ist freilich eleganter, weil beim Nixtun kaum Strom gebraucht wird.
Hast du schon getestet ob der 2313 bis runter auf 4V (Entladeschlusspannung der Akkus) funktioniert? Ich würde einen Tiny26L bevorzugen, geht auch noch mit 3V. Den Fototransistor würde ich an einen ext. Interruptpin hängen, den Analog-Comparator abschalten (braucht Strom) und den µC in den Power-Down-Mode versetzen. Dürfte am Stromsparendsten sein. Im Reset-Mode (Reset-Pin auf low) braucht er auch einiges an Strom.
Hallo, erstmal danke für die schnellen Antworten, also ich finde die Sleep-Variante irgendwie interessant. Ich frage mich gerade nur wie ich das umsetze?? Wie setze ich den ATtiny in den Sleep Modus und wie soll er dann erwachen??? Ich bin noch nicht so firm in der ganzen Sache!!
Wie du ihn in den (und in welchen) Sleepmode versetzen kannst, Assembler oder C, steht im Datenblatt des Jeweiligen µC. Der ext. INT 'weckt' den µC aus dem Sleepmode wieder auf, entweder bei steigender oder fallender Flanke am INT-Pin, bei steigender UND fallender Flanke oder high (oder low)-Pegel. Steht ebenfalls im Datenblatt wie's einzustellen ist. Keine große Sache, probier einfach mal 'n bischen 'rum!
Da war doch was mit Wecken beim µC: Man kann ihn über einen externen Interrupt nur per Flanke wecken lassen, wenn der Oszillator noch läuft. Im Sleepmode geht der AFAIK nicht mehr. Wecken kann man ihn dann nur noch durch einen pegelgesteuerten Interrupt. Dann müsste man ein RC-Glied an den Fotosensor basteln, das für einen genügend langen Impuls sorgt. (Kann aber auch sein, dass ich da irgendwie mal wieder voll daneben liege...)
@fieser Rahul > Da war doch was mit Wecken beim µC: > Wecken kann man ihn dann nur noch durch einen pegelgesteuerten > Interrupt. > Dann müsste man ein RC-Glied an den Fotosensor basteln, das für einen > genügend langen Impuls sorgt. Jepp, das sollte aber kein Problem sein. Einfach ein C (sagen wir 100nF) und einen grossen Pull-Up (sagen wir 100k), dann passt das schon. Ein Problem könnte das unsaubere Schalten eines einfachen Phototransistors sein. Also besser einen 74HC14 davor. Dann isses wasserdicht. > (Kann aber auch sein, dass ich da irgendwie mal wieder voll daneben > liege...) Aussnahmsweise mal nicht ;-) MFG Falk
>Aussnahmsweise mal nicht ;-)
Wir wollen hier mal nicht persönlich werden! ;-)
Ihr seid echt klasse.... :-) Das hört sich an als ob ich ein ziemlich lange Bastelstunde einlegen muss, mal sehen was dabei so rauskommt. Ich halte Euch diesbezüglich auf dem Laufenden.
>Einfach ein C (sagen wir 100nF)und einen grossen Pull-Up (sagen wir 100k), dann passt das schon. Ein Problem könnte das unsaubere Schalten eines einfachen Phototransistors sein. Also besser einen 74HC14 davor. Dann isses wasserdicht. Wozu? Lass' ihn doch pegelgesteuert aufwachen, das geht schon! Den INT kann man ja bis zum nächsten Schlafenlegen sperren, um versehentlich ausgelöste INTs zu vermeiden.
Nebenbei bemerkt: Den HC14 kann man sich sparen, AVRs haben generell Schmitt-Trigger-Eingänge. Externe SRs sind unnötig. Gruss Jadeclaw.
@Sonic >>Einfach ein C (sagen wir 100nF)und einen grossen Pull-Up (sagen wir >>100k), dann passt das schon. Ein Problem könnte das unsaubere Schalten >>eines einfachen Phototransistors sein. Also besser einen 74HC14 davor. >>Dann isses wasserdicht. >Wozu? Lass' ihn doch pegelgesteuert aufwachen, das geht schon! Den INT Ja eben, und um einen LOW Pegel ausreichender Dauer zu garantieren braucht es den C. Denn theoretisch könnte der Phototransistor nur einen kurzen Puls auf LOW gehen und dann ist das Aufwachen unsicher. Jaja, Phototransitoren sind nicht sonderlich schnell, aber schnell genug um unter ungünstigen Umständen komische Effekte zu erzeugen. >kann man ja bis zum nächsten Schlafenlegen sperren, um versehentlich >ausgelöste INTs zu vermeiden. Das ist nicht das Problem. @Jadeclaw Dinosaur > Nebenbei bemerkt: > Den HC14 kann man sich sparen, AVRs haben generell > Schmitt-Trigger-Eingänge. Externe SRs sind unnötig. Stimmt, hab ich vergessen. MfG Falk
Der Pin-Change Interrupt geht für das Problem genauso, wie ein normaler Level-Interrupt, nur sollte man einen Punkt beachten (über den ich vor ein paar Wochen bei einem Tiny26 gestolpert war): Man kann die AVRs sehr gut schlafen legen (sleep im power-down mode) und sie auf ein Ereignis (Pin-Change etc.) warten lassen. Hat man alle nicht-benötigten Komponenten (Analog-Komparator, ADC, BOD und Watchdog) abgeschaltet, dann brauchen sie nur 0.5-1uA. Wenn alle Eingangspins "fest" liegen!! Fängt ein Eingangspin an, die Spannung zu verändern (laden/entladen eines Kondensators, Dein Fototransistor etc.), dann wird die Eingangsstufe dieses Pins aktiv und verbraucht mal eben 100uA! Im Manual steht: "If the input buffer is enabled and the input signal is left floating or have an analog signal level close to VCC/2, the input buffer will use excessive power." Ich war darüber gestolpert, weil ich einen extrem stromsparenden "Wecktimer" mit 5MOhm und 2uF (Folie) gebaut hatte, weil mir die 10uA des Watchdog zu viel waren! Das Resultat waren die oben erwähnten 100uA!
@ Matti > Der Pin-Change Interrupt geht für das Problem genauso, wie ein normaler > Level-Interrupt, nur sollte man einen Punkt beachten (über den ich vor Glaub ich nicht so sehr, denn wenn der AVR wirklich schäft (nicht nur Idle oder Power down) ist der Takt angehalten -> nix mit Pin Change. > Ich war darüber gestolpert, weil ich einen extrem stromsparenden > "Wecktimer" mit 5MOhm und 2uF (Folie) gebaut hatte, weil mir die 10uA > des Watchdog zu viel waren! Das Resultat waren die oben erwähnten 100uA! Wozu brauchst du einen Watchdog? Hast du einen 32kHz Quarz benuzt? MfG Falk
@Falk "Glaub ich nicht so sehr, denn wenn der AVR wirklich schäft (nicht nur Idle oder Power down) ist der Takt angehalten -> nix mit Pin Change." Glauben heisst "nicht wissen" (beliebter Oberlehrer Spruch)! Glaub mir, der Pin-Change funktioniert prima zum Aufwecken. Ich hab's schon -zig Mal probiert und es steht auch in allen Manuals! "Wozu brauchst du einen Watchdog? Hast du einen 32kHz Quarz benuzt?" Häh? Ich glaube, ich verstehe Deine Rückfrage genauso wenig, wie Du wahrscheinlich meine Anwendung. Hier nur kurz zur Erläuterung: Ich habe eine Lipo-Laderegelung mit Solarzellen programmiert, bei der der AVR fest am Akku hängt und auch die Steuerung des Verbrauchers übernimmt (Forderung: minimaler Stromverbrauch!). Dafür sollte der AVR die ganze Zeit Schlafen (Verbrauch < 1uA) und nur ca. alle 1-10min. Aufwachen und die Akku- und die Solarspannung messen. Mein selbstgebauter "Watchdog" hat dann über 1MOhm+2uF alle ca. 10s einen Pin-Change-Interrupt ausgelöst und alle 6-60 Interrupts habe ich die Messung gemacht. Aus o.g. Gründen (100uA Stromverbrauch) habe ich jetzt auf den internen Watchdog gewechselt (Verbrauch jetzt: 9uA) und lasse mich halt alle 2.2s Wecken. (man muß einen Watchdog nicht zwangsläufig auch als Watchdog benutzen...)
Stimmt, PinChange geht immer, auch im tiefsten Schlaf, da dieser auf Pegel und nicht auf Flanken reagiert. Bei meinen Tiny2313s in IR-Fernbedienungen funktioniert das bestens.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.