allgem. Frgen Atmega

Persönliche Seite #1363254
Lesenswert?

Timo P schrieb:
> Hallo!
>
> 1) ist es möglich, einen codeblock als volatile zu definieren? WINAVR

In C gibt es keine closures. Daher: nein.

> 2) kann man via SW den Controller stoppen bis er ein hardware reset
>   bekommt? ich will Energiesparen, wenn der Controller seine Werte via
>   UART weggesendet hat.

Da waere eher der Sleep-Modus Dein Freund. Aber mit dem watchdog laesst 
sich per SW auch ein reset herbeifuehren. HW-Reset heisst hier dass der 
reset-Vektor ausgeloest wird. Bei manchen AVR laeuft der watchdog dann 
allerdings weiter und muss in einer fruehen init-Phase (am besten vor 
main) wieder zurueckgesetzt werden.

Michael
#1364126
Lesenswert?

Timo P. schrieb:
> Der atmega wird bestromt, macht sein ding und geht aus
> geht erst wieder an, wenn er neu vcc bekommt. So der Plan. Wie es sich
> hier anhört, ist es nicht möglich, den Controller auszuschlaten, sondern
> anscheinend *nur* in einen sleep-modus zu versetzen.
>
> Ist dies korrekt?

Ja.

Allerdings kann sich der Controller durchaus auch selbst die 
Versorgungsspannung abschalten :-)
Du brauchst nur eine Möglichkeit die Versorgungsspannung schaltbar zu 
machen. Wenn der µC dann diesen Schalter bedienen kann ....
#1364226
Lesenswert?

m. keller schrieb:
> wer soll ihn denn wieder anschalten?

Ein anderer Controller schaltet ihn wieder an. Bevor jetzt die Frage 
kommt: "HAHA, dann kann der schaltende Controller doch den, den er 
anschaltet auch ausschalten..." Da antworte ich dann: ne dann brauche 
ich für 6 "schaltbare" Controller ja 6 verschiedene VCC-Leitungen. Der 
Master schaltet zeitgleich alle device-controller an. Diese brauchen 
unterschiedlich lange für ihre Aufgaben und sollen deswegen selbst 
bestimmen, wann sie ausgehen.



Karl heinz Buchegger schrieb:

>Allerdings kann sich der Controller durchaus auch selbst die
>Versorgungsspannung abschalten :-)
>Du brauchst nur eine Möglichkeit die Versorgungsspannung schaltbar zu
>machen. Wenn der µC dann diesen Schalter bedienen kann ....

Ok wenn ich eine art flipflop aufbaue, die der Controller selbst 
ausschalten kann per portpin, dann habe ich das Problem, dass es per SW 
nicht geht, einfach umgangen, muss aber mehr Hardwareaufwand in kauf 
nehmen
#1364301
Lesenswert?

Timo P. schrieb:

> Ok wenn ich eine art flipflop aufbaue, die der Controller selbst
> ausschalten kann per portpin, dann habe ich das Problem, dass es per SW
> nicht geht, einfach umgangen, muss aber mehr Hardwareaufwand in kauf
> nehmen

Muss ja kein Flip-Flip sein. Ein Transistor, Basiswiderstand und 2 
Dioden könnten ja schon reichen.
Die beiden Dioden bilden ein Wired-OR und schalten den Transistor durch, 
welcher die Versorgungsspannung schaltet. Jeweils der Master und der 
Slave hängen am anderen Ende der Dioden. Der Master kann damit mit einer 
1 an seiner Diode den Transi durchschalten und damit den Slave 
aufwecken. Wird der Slave aufgeweckt, schaltet er als erstes den 
Selbsthaltepin ebenfalls auf 1, damit kann dann der Master den Pin 
loslassen, der Transi bleibt durchgesteuert. Ist der Slave fertig, geht 
sein Selbsthaltepin auf 0 und er dreht sich selbst den Saft ab.

Ob sich der Aufwand lohnt?
Kommt drauf an. Im Sleep Mode verbrauchen die Dinger so wenig Strom .... 
Da verbraucht dir das Flip-Flop wahrscheinlich schon mehr Strom :-)
#1364319
Lesenswert?

Batteriebetrieben vllt. nur Knopfzellen. Sede Sekunde wacht ein
ultra low power msp430 auf und bestromt ca 6 device-controller,
die alle ihre Messungen machen müssen. Das zieht dann strom!
Und ich will und muss an allen ecken strom sparen.

Mir ist als eher hardwarefremder nicht ganz klar wie ich die Schaltung 
aufbaue. VCC ist die einzige Leitung zum Controller hin(abgesehen von
RX,TX) diese VCC Leitung ist dauernd auf high. Nun brauche ich eine 
Schaltung, die ich per dauerVCC einschalte, aber per Portpin wieder 
ausschalte. Genau das ist mein Problem per Portpin ausschalten. WIE?!?

wenn ich sowas wie die selbsthaltung aufbauen würde, könnte ich nen 
Transistor in Emmitterschaltung nehmen, rückführen auf die Basis als 
Selbsthaltung und nen weiteren transistor als Öffner fürs ausschalten. 
Das Ausschalten müsste aber pemanent sein, also controller aus, 
auschalten bleibt aus, bis vcc auf low geht.
komm irgendwie nicht aus dem kreis raus, dass der controller schön nen 
Pin toggeln kann, aber wenn er ausgeht ist der pin auf low, wenn er high 
sein muss für controller ein, dann läuft der controller aber der pin 
braucht bis her hi ist und dann geht die schaltung net

stehe voll auf dem schlauch!
#1364367
Lesenswert?

Die Beispielschaltung habe ich verstanden. Dazu brauche ich aber eine 
zusätzliche Steuerleitung, nämlich die, die die Basis ansteuert.
Zusätzlich heißt zusätzlich zur VCC, die der Controller während seinen 
Aufgaben ja benötigt, klar... Evtl. kann ich es hier durchsetzten, dass 
ich wieder eine weitere Leitung nutzen darf..

dann hätte ich schon

RX
TX
GND
VCC
VCC controll
VCC2 special

die ich durch alle daugtherboards schicken muss :(


dann nehm ich die VCC-controll an die Basis wie folgt:



         -----------------------------|
         |                            |
         |      VCC                   |
         |       |                    |
         |   |---|        |------|    |
VCC-cltl-----|            |  pin |----|
             |->-|        |      |
                 |        |      |
                 |--------|VCC µC|
                          |------|
Gast #1364393
Lesenswert?

Mal ueberlegt, ob das wirklich dein zentrales Problem ist? Bring doch 
erstmal die Grundsoftware zum Laufen. Und dann kannst du ja in Ruhe mal 
ausprobieren, ob dich der Sleepmode mehr Strom kostet, als den ganzen 
Kontroller staendig aus und ein zu schalten...
Gast #1364403
Lesenswert?

Dein Master müsste messen, ob noch eine gewisse Menge Strom fließt.
Im Sleepmode sollte der Betrag wesentlich geringer sein, als im 
laufenden Betrieb.
Oder:
Man misst vorher die Zeit, die ein Slave (maximal) braucht und stellt 
die Versorgungsspannung über den Master entsprechend lange zur 
Verfügung.
Oder:
Wenn der Master sowieso mit dem Slave in beide Richtungen kommuniziert, 
könnte der Slave auch einfach dem Master schreiben "Licht aus!"

>VCC ist die einzige Leitung zum Controller hin(abgesehen von
>RX,TX) diese VCC Leitung ist dauernd auf high. Nun brauche ich eine
>Schaltung, die ich per dauerVCC einschalte, aber per Portpin wieder
>ausschalte. Genau das ist mein Problem per Portpin ausschalten. WIE?!?

Wenn die VCC-Leitung (zum Slave) nicht geschaltet werden darf, dann 
kannst du die Sachen nur mit einem Sleepmode regeln.
#1364627
Lesenswert?

> Wenn der Master sowieso mit dem Slave in beide Richtungen kommuniziert,
> könnte der Slave auch einfach dem Master schreiben "Licht aus!"

Das hatte ich ja vor, und dann den Controller aus(geht ja net)


> Wenn die VCC-Leitung (zum Slave) nicht geschaltet werden darf, dann
> kannst du die Sachen nur mit einem Sleepmode regeln.

Das haben wir ja vorhin festgestellt, dass es nicht geht.
ich werde mir mal überlegen, ob ich den Controller wenigstens in den 
sleep-mode versetzte
Gast #1364692
Lesenswert?

Bei neueren AVR Controllern (z.B. Mega88PA) gibt es auch sleep modes wo 
der Stromverbrauch deutlich unter 1 µA (Im Bereich 0,1 µA) geht. Man muß 
dazu aber ohne Brownout detektor auskommen. Also vorsicht mit EEPROM 
Addresse 0 und einem Bootloader. Wenn man eine UART nutzen will, muß man 
aber mit dem Takt etwas aufpassen, denn der interne RC Takt reicht oft 
nicht, und ein Quarz braucht lange zum Starten.

Bei dem Strom wird sich ein externes Auschalten kaum noch lohnen. Da ist 
dann kaum noch ein Unterschied zu aus.

Es könnte dann sogar sinnvol sein den µC gar nicht wirklich neu zu 
starten, sonern einfach nur aufwecken, denn im Reset zustand braucht der 
µC recht viel Strom.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren