Hallo,
Ich taste mit der Schaltung meinen µC "ein" (über GND), der µC macht die
Selbsthaltung und schaltet sich selbst wieder "aus". Jetzt möchte ich
gerne den Taster mit dem µC abfragen wenn die Schaltung eingeschaltet
ist. Nur wie mache ich das am elegantesten? µC ist ein attiny24,
konstruktionsbedingt kann ich nur diesen Taster nutzen. Über eine
Anregung wäre ich sehr dankbar :)
lg Malte
> Ich taste mit der Schaltung meinen µC "ein" (über GND), der µC macht die> Selbsthaltung und schaltet sich selbst wieder "aus".
Also ein Interrupt-Sleep Verhalten?
Es spricht technisch nix dagegen, den Pin von Interrupt-Eingang während
der Einschaltphase wie einen normalen Input-Pin zu pollen. Die
Interruptfunktion ist dann abzuschalten und erst wieder zu aktivieren
bevor es ans Schlafen geht.
Johannes Adler schrieb:> if (PINC & (1<<PC0))> {> PORTD = 0b00000001;> _delay_ms(100);> PORTD &= ~ 0b00000001;> _delay_ms(100);> }> else if (PINC & (1<<PC1))> {> PORTD = 0b00000010;> _delay_ms(100);> PORTD &= ~ 0b00000010;> _delay_ms(100);> }> else if (PINC & (1<<PC0) | (1<<PC1))> {> PORTD = 0b00000011;> _delay_ms(100);> PORTD = ~ 0b00000011;> _delay_ms(100);> }
Dein Controller arbeitet die Schleife ab und stößt auf die obere else if
anweisung. Wenn PINC & (1<<PC0) == true ist, wird die Anweisung darunter
abgearbeitet. Den else if Zweig darunter mit (PINC & (1<<PC1)) oder PINC
& (1<<PC0) | (1<<PC1) (Setz mal sicherheitshalber ein paar mehr
Klammern) müsste der Controller dann ignorieren, weil er schon einen
passenden fall in deinem IF-Konstrukt gefunden hat. (Priorisierung von
IF-Cases)
Also, entweder tauschen oder:
if ...
end if
if ...
end if
(also ohne else!)
Benjamin Utz schrieb:> if ...> end if> if ...> end if
Error 5 'end' undeclared (first use in this function)
D:\Elektronik\avr\Projekte\Tests\Test_1\main\main.c 20 2 main
brauch ich dafür eine header datei.?
mmm ich habe mich wohl etwas missverständlich ausgedrückt... ich denke
so ist es verständlicher. Drücke ich den Taster so leitet der Mosfet,
der µC startet und macht über den Transistor die Selbsthaltung. An Akku
+ liegt 12V
Jetzt möchte ich, wenn der µC die Selbsthaltung geschaffen hat und meine
Schaltung arbeitet, den Taster gerne weiter auswerten.
Benjamin Utz schrieb:> (Setz mal sicherheitshalber ein paar mehr> Klammern) müsste der Controller dann ignorieren, weil er schon einen> passenden fall in deinem IF-Konstrukt gefunden hat.
und wo soll ich mehr klammern setzen.?
Mit einem ADC die Spannung an 2 des Tasters messen.
Die sollte bei aktiver Selbsthaltung und offenem Taster wg. T5 leicht
über GND liegen und bei gedrücktem Taster auf GND.
Hallo, das mit ADC... ich habe dort bei der Selbsthaltung ~30mV
Differenz und meine Akkuspannung variiert auch. 5V/1024 macht ne
Auflösung von 4mV das wird glaube ich nicht sauber funktionieren.
Das mit der Diode habe ich noch nicht ganz verstanden...
lg Malte
Wenn du zwischen Taster und R10 eine Diode mit Kathode zum Taster
schaltest, bekommt der IRF GND über Taster und Diode.
Der µC schaltet den Transistor und der IRF bekommt GND darüber.
Wenn du nun zwischen Diode und Schalter auf einen Eingang des µC gehst,
PullUp aktivieren, hast du high wenn Taste nicht gedrückt oder low, wenn
TAste gedrückt.
~30mV, differentiell gemessen und mit Gain 20x, und 1.1V ADC Voltage
Reference, beim Attiny24 geht das ja... Ich würde nicht grundsätzlich
ausschliessen un mal im Prototyp probieren.
Hubert G. schrieb:> Ich würde auch den internen PullUp des µC verwenden, den schaltest du> doch erst im Betrieb ein.
Bleibt aber noch das ich dann ja am Pin 12V-5V habe und ich bekomme so
keine 5 auf den I/O... also das scheint nicht zu Funktionieren...
aber danke :).
Die Idee von Hubert ist gut, du musst sie aber mit der Software aber
richtig bedienen.
1. vom µC aus Selbsthaltung einschalten. Dadurch sieht die Anode der
Diode ~GND.
2. jetzt den internen Pull-Up am µC einschalten und die Kathode der
Diode (und Pin 2 des Tasters) sehen ~5V.
3. Der Taster ist jetzt active-low, d.h. du an mit einem LOW Pegel am µC
Pin erkennen dass der Taster gedrückt ist.
4. Bevor der µC die Selbsthaltung löst, ist der interne Pull-Up wieder
auszuschalten.
dann probier mal die Schaltung aus, einschalten mit Low an D6, zum
Ausschalten muss Low an D8.
Auszug aus der Schaltung vom portablen Mikrokoptertool.
Christian
mach was drauss,die Schaltung funktioniert so. an C21 liegen übrigens
3,2-4,2V, die werden beim Einschalten mit Low(GND) über den FET an den
Spannungswandler geschaltet, der FET hält sich selbst über R43/T43 und
kann dann über Low an der Basis von T43 wieder abgeschaltet werden.
Christian
mmm ok ich schau mir das mal an... wobei ich ja nicht nur ein/abschalten
will, das funktioniert ja. Ich will gleichzeitig noch den Taster mit dem
µC auswerten... wenn die Selbsthaltung aktiv ist.
ok, dann bekommst Du den Rest auch noch, Key_plus findest Du in dem
anderen Bild wieder.
Genau das mache ich da, Taste Key_plus zum Einschalten und danach wird
die Taste als Taste benutzt.
Christian
Herzlichen Dank ich hatte da eben einen Knoten im Kopf bezüglich des
Pullups.
R41, R40 und C23 bilden denke ich ein Low Pass filter zum entprellen,
C23 wird über R40 entladen und R41 wieder geladen wenn der Transistor
nicht mehr durchschaltet, liege ich da richtig?
Danke für den Wink...
Ne einfach "portablen Mikrokoptertool" gegooglet und gut ;). Aber
Mikrokopter stehen auch noch auf meiner Liste... Komme eher aus der
Flächenflieger ecke ;)
Ich dank dir und ein Schönen Abend.