Hallo,
ich habe eine einfache Schaltung: An einen Attiny ist eine LED und ein
Taster angeschlossen. Beim Betätigen des Tasters geht die LED an. Über
millis() ist ein einfacher "Timer" realisiert, der die LED nach 10
Sekunden wieder ausschaltet. Die Ungenauigkeit dieser Lösung spielt
keine Rolle.
Alternativ lässt sich die LED auch per Taster wieder ausschalten.
if(altButton&&!aktButton)// wenn Taster gedrückt wurde...
17
{
18
aktiv=!aktiv;
19
delay(100);
20
startTime=millis();// für den Timer
21
}
22
23
if(!altButton&&aktButton)// wenn Taster losgelassen wurde...
24
{// was passieren soll, wenn Taster losgelassen wird könnte hier stehen
25
delay(100);
26
}
27
28
if(aktiv==true){
29
if(millis()-startTime<interval){// wenn die Zeit noch nicht abgelaufen ist...
30
digitalWrite(LEDPin,HIGH);
31
}
32
else{// wenn die Zeit bereits abgelaufen ist
33
aktiv=false;
34
}
35
}
36
else{// wenn aktiv == false
37
digitalWrite(LEDPin,LOW);
38
}
39
}
Jetzt versuche ich, das Abschalten der LED einfach durch einen Sleepmode
zu ersetzen. Per Taster soll der Sleepmode dann wieder beendet werden
und die LED wieder eingeschaltet werden.
/* detach Interrupt, damit er nur einmal auftritt */
12
detachInterrupt(digitalPinToInterrupt(SwitchPin))
13
}
14
15
voidenter_sleep(void)
16
{
17
attachInterrupt(0,INT_PINisr,LOW);
18
/* Arduino schlafen legen */
19
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
20
sleep_enable();
21
sleep_mode();
22
sleep_disable();
23
}
24
25
voidsetup(){
26
pinMode(LEDPin,OUTPUT);
27
pinMode(SwitchPin,INPUT_PULLUP);
28
}
29
30
voidloop(){
31
altButton=aktButton;
32
aktButton=digitalRead(SwitchPin);
33
34
if(altButton&&!aktButton)// wenn Taster gedrückt wurde...
35
{
36
aktiv=!aktiv;
37
delay(100);
38
startTime=millis();// für den Timer
39
}
40
41
if(!altButton&&aktButton)// wenn Taster losgelassen wurde...
42
{// was passieren soll, wenn Taster losgelassen wird könnte hier stehen
43
delay(100);
44
}
45
46
if(aktiv==true){
47
if(millis()-startTime<interval){// wenn die Zeit noch nicht abgelaufen ist...
48
digitalWrite(LEDPin,HIGH);
49
}
50
else{// wenn die Zeit bereits abgelaufen ist
51
aktiv=false;
52
}
53
}
54
else{// wenn aktiv == false
55
//digitalWrite(LEDPin, LOW);
56
enter_sleep();
57
}
58
}
Problem: Es funktioniert nicht. Er geht nichtmal in den Sleep Mode, die
LED leuchtet nach Ablauf des "Timers" weiter. Ich hab das Beispiel schon
vereinfacht und auf den Interrupt verzichtet, aber enter_sleep() scheint
nicht zu funktionieren.
Sieht nach einer Mischung von Arduino und GCC aus?
Was auffällt ist das die Interrupts nicht freigegeben sind:
#include <avr/interrupt.h>
sei(); Interrupts aktiv
cli(); Interrupts inaktiv
Stefan ⛄ F. schrieb:> Alle Ausgänge bleiben im Sleep Modus aktiv.>> Dein "digitalWrite(LEDPin, LOW)" ist daher weiterhin nötig.
Krass, ich bin natürlich davon ausgegangen, es wäre dann alles aus. Das
hieße ja, ich könnte - wenn der Timer so 30 Minuten laufen soll - in den
Sleep Mode gehen und nur alle 5 Minuten per Watchdog aufwachen,
überprüfen ob Timer die 30 Minuten schon erreicht hat, und ihn wieder
schlafen legen - und spare damit noch mehr Energie(?)
Sorry für die Unbedarftheit, ich durchforste seit gestern das Netz nach
Infos über den Sleep Mode und habe trotzdem das Gefühl, ich habs noch
nicht verstanden. Daher besten Dank!
Peter D. schrieb:> Sven H. schrieb:>> An einen Attiny>> Welcher denn?>> Für attachInterrupt solltest Du auch noch sagen, welches Board.>> https://www.arduino.cc/reference/de/language/functions/external-interrupts/attachinterrupt/
Attiny13A! :-)
Lg
> ich durchforste seit gestern das Netz nach Infos über den Sleep Mode
Stattdessen erstmal das Datenblatt "durchforsten"? Als Primärquelle?
> ich bin natürlich davon ausgegangen, es wäre dann alles aus.
7.4.6 Port Pins
When entering a sleep mode, all port pins should be configured to use
minimum power. The most important thing is then to ensure that no pins
drive resistive loads.
Sven H. schrieb:> Das hieße ja, ich könnte ... und spare damit noch mehr Energie(?)
Ja könntest du. Oder nur die Taktfrequenz reduzieren, das spart nämlich
auch eine Menge und hat weniger Seiteneffekte.
Bein ATtiny13A kann man zusätzlich den ADC abschalten, das macht auch
noch ca. 300 nA aus. Auch das passiert im Sleep Modus nicht automatisch,
soweit ich weiß.
> zusätzlich den ADC abschalten
Ist der denn eingeschaltet?
Überhaupt sollte Sven H. das ganze Kapitel '7. Power Management and
Sleep Modes' lesen; wenn es um Energiesparen geht speziell '7.4
Minimizing Power Consumption'.
S. Landolt schrieb:>> Standardmäßig ja.> Aha. Nun gut, ich kenne den Arduino nicht.
Du meinst den ATtiny13A, das ist kein Arduino. Der gezeigte Motor ist
auch kein Auto.
> Du meinst den ATtiny13A
Eben! Was hat das jetzt mit einem Auto zu tun?
Wenn in der Arduino-Umgebung der ADC standardmäßig eingeschaltet ist,
okay. Im nackten ATtiny13A ist er es nicht.
S. Landolt schrieb:> Eben! Was hat das jetzt mit einem Auto zu tun?
Es ging die ganze Zeit um den Tiny13A.
Und du sagst "Ich kenne den Arduino nicht".
Deshalb der Wink mit dem Zaunpfahl von Stefan...
an realist:
Ich dachte, wegen void setup() und void loop(), und auch andere waren
wohl dieser Meinung.
Also bleibt es dabei: im ATtiny13A ist der ADC nach einem Reset nicht
eingeschaltet - Kapitel 7.4 lesen: '7.4.1 Analog to Digital Converter:
If enabled, the ADC will be enabled in all sleep modes'.
IF ...
S. Landolt schrieb:> Ich dachte, wegen void setup() und void loop(), und auch andere waren> wohl dieser Meinung.
Der allererste Satz des TO lautete:
Sven H. schrieb:> ich habe eine einfache Schaltung: An einen Attiny ist eine LED und ein> Taster angeschlossen.
Und nirgendwo wurde ein Arduino erwähnt.
Nur weil jemand mit der Arduino-Software arbeitet, heißt das nicht, daß
ein Arduino-Board im Spiel ist, oder sehe ich das falsch?
S. Landolt schrieb:>> Du meinst den ATtiny13A> Eben! Was hat das jetzt mit einem Auto zu tun?
Der ATtiny13A entspricht dem kleinen Motor. "Der Arduino" entspricht dem
Auto (z.B. "der Ford"), welches aus mehr als einem Motor besteht und
zudem ist es ein wesentlich größerer.
S. Landolt schrieb:> Wenn in der Arduino-Umgebung der ADC standardmäßig eingeschaltet ist,> okay. Im nackten ATtiny13A ist er es nicht.
doch, siehe Screenshot vom Datenblatt.
S. Landolt schrieb:>> doch,> Das sehe ich anders - der 'initial value' von ADCSRA.ADEN ist 0.
Schau dir doch bitte wenigstens den Screenshot an, den ich für dich
gemacht habe. Du bist da beim falschen Register.
Stefan ⛄ F. schrieb:> S. Landolt schrieb:>> Wenn in der Arduino-Umgebung der ADC standardmäßig eingeschaltet ist,>> okay. Im nackten ATtiny13A ist er es nicht.>> doch, siehe Screenshot vom Datenblatt.
Ihr habt irgendwie beide Recht. Der ADC ist per default inaktiv, aber
Teile seines analogen Geraffels sind durchaus aktiv, inbesondere auch
die mit anderen analogen Baugruppen geteilten, sprich: den AC(s).
Das gilt übrigens im Prinzip für alle AVR8. Bei den neueren mit PRR kann
man nun auch noch dieses analoge Geraffel abschalten.
S. Landolt schrieb:> Also ich weiß ja nicht - ich habe keinen ATtiny13A, aber beim ATtiny85> fließen im Power-down-Modus 0.48 uA, egal ob PRR angefasst wurde oder> nicht.
An welchem Potential lagen die IO-Pins bei der Messung?
> An welchem Potential lagen die IO-Pins bei der Messung?
?
Offen.
'In sleep modes where both the I/O clock (clkI/O) and the ADC clock
(clkADC) are stopped, the input buffers of the device will be disabled.
This ensures that no power is consumed by the input logic when not
needed.'
Folglich sind es immer noch 0.48 uA, auch wenn ich PORTB komplett auf 1
setze.
S. Landolt schrieb:> 'In sleep modes where both the I/O clock (clkI/O) and the ADC clock> (clkADC) are stopped, the input buffers of the device will be disabled.
Was den Schluss zuläßt, dass die Wirkung des PRR-Bits wohl auf die
Sleepmodi beschränkt sein wird, bei denen einer der beiden Takte noch
läuft, also beim Tiny85 Idle oder ADC-Noise-Reduction, wovon letzterer
aus Gründen der praktischen Nützlichkeit wohl in diesem Zusammenhang
entfällt.
Sprich: du musst im Idle messen (sinnvollerweise bei sehr geringem
Systemtakt), um den Nutzen des PRR-Bits zu erkennen.
> du musst im Idle messen
Also gut:
5.0 V, 1 MHz: 0.57 mA ohne, 0.53 mA mit PRR.PRADC=1.
Und wenn Sven H. nicht mit dem Watch-dog arbeiten will, benötigt er in
der Tat den Idle-Modus.
Woher aber Stefan Frings'
> das macht auch noch ca. 300 nA aus
kommen, bleibt mir unklar.
S. Landolt schrieb:> Woher aber Stefan Frings'>> das macht auch noch ca. 300 nA aus> kommen, bleibt mir unklar.
Wünsche hochgerechnet auf Messfehler, würde ich mal vermuten.
S. Landolt schrieb:> The most important thing is then to ensure that no pins> drive resistive loads.
Das macht natürlich nur Sinn, z.B. wenn die LED im Schlaf auch wirklich
aus sein soll.
Holger L. schrieb:> Sieht nach einer Mischung von Arduino und GCC aus?
Arduino ist keine eigene Sprache sondern z.Zt. C++11, mit dem Gcc
übersetzt.
Also auch keine Mischung.
Holger L. schrieb:> Was auffällt ist das die Interrupts nicht freigegeben sind:> #include <avr/interrupt.h>> sei(); Interrupts aktiv> cli(); Interrupts inaktiv
Das ist eigentlich kein Problem, erstmal, weil sei() in der main()
stecken sollte. Also zum Arduino Framework gehört. Standardmäßg.
S. Landolt schrieb:> Woher aber Stefan Frings'>> das macht auch noch ca. 300 nA aus> kommen, bleibt mir unklar.
Das habe ich aus einem der Diagramme abgelesen, wo die Stromaufnahme des
ADC gezeichnet war. Aber das Diagramm gilt wohl nur für den aktiven
Betrieb.
Die Beschreibung dieses PRR.PRADC Bits ist ziemlich dürftig, finde ich.
Stefan ⛄ F. schrieb:> Die Beschreibung dieses PRR.PRADC Bits ist ziemlich dürftig, finde ich.
Der gesamte Analogteil ist bei allen AVR8 leider traditionell nur recht
dürftig beschrieben. Und das ist bei der neuen Generation der
XMega-Erben eher noch weitaus dürftiger geworden.
Was insofern unschön ist, dass man gesamte Wissen "über das DB hinaus",
was man bei den klassischen AVR8 im Laufe der Zeit gewonnen hatte, als
Vollverlust abschreiben kann. So gut wie nichts davon ist auf die neuen
Modellreihen anwendbar.
an Stefan Frings:
Ich muss zugeben, völlig klar waren mir die Verhältnisse bis heute
nicht. Lag wohl daran, dass ich bei stromkritischen Anwendungen
Standard-Programmvorlagen verwende, in denen PRR komplett gesetzt ist,
und wo ich dann nur die jeweils benötigte Peripherie 'aktiviere'.
Solange aber Sven H. seine "einfache Schaltung"
> nur alle 5 Minuten per Watchdog aufwachen
lassen will, spielt PRR wohl ohnehin keine große Rolle.
> Wissen ... Vollverlust abschreiben ...
Tja, c-hater, der Satz "Junge, lern was, was du einmal gelernt hast,
kann dir keiner mehr nehmen", den ich als Kind oft genug hörte, ist
natürlich richtig, nur - nach einer gewissen Zeit gibt es keinen mehr,
der mir den alten Mist wegnehmen wollte. Oder moderner ausgedrückt: die
Halbwertszeit von Wissen wird immer kürzer.
Und das gilt leider auch für Methoden & Verfahren.
S. Landolt schrieb:>> Du meinst den ATtiny13A> Eben! Was hat das jetzt mit einem Auto zu tun?>> Wenn in der Arduino-Umgebung der ADC standardmäßig eingeschaltet ist,> okay. Im nackten ATtiny13A ist er es nicht.
Um hier einmal Klarheit reinzubringen. :-) Es ist vollkommen egal ob man
einen nackten µC oder ein Arduino Board in der Arduino IDE programmiert.
Sobald man der Arduino IDE das entsprechende µC Package einspielt und
mit dem Arduino typischen setup(), loop() handiert, greifen bestimmte
Mechanismen unter der Haube wie Serial- und Timerkonfiguration usw. auch
der ADC wird vorkonfiguriert. Ob alle Timer, außer Timer 0 wegen millis,
und der ADC aber wirklich schon aktiv sind weiß ich auch nicht aus dem
Kopf. Man müßte das entsprechende Register auslesen ... das ist
zumindestens der einfachste Weg. :-)
Das habe ich einmal auf meinem ATmega2560 gemacht und man sieht Bit 7 in
ADCSRA ist gesetzt. Diese ADC Konfig ist Default wenn man nichts weiter
macht.
[c]
ADMUX: 0b0000'0000
DIDR0: 0b0000'0000
DIDR1: 0b0000'0000
DIDR2: 0b0000'0000
ADCSRA: 0b1000'0111
ADCSRB: 0b0000'0000
[c]
Jetzt wäre zu prüfen ob der ATtiny13A Package Programmierer das bei sich
auch so gemacht hat. Denn verallgemeinern kann man das bei Fremden
"Plugins" nicht.
Stefan ⛄ F. schrieb:> Die Beschreibung dieses PRR.PRADC Bits ist ziemlich dürftig, finde ich.
Was bitte ist daran dürftig? Steht doch glasklar da was das Bit macht
und was beachtet werden muss.
• Bit 0 – PRADC: Power Reduction ADC
Writing a logic one to this bit shuts down the ADC. The ADC must be
disabled before shut down. The analog comparator cannot be used when the
ADC is shut down.
Veit D. schrieb:> Jetzt wäre zu prüfen ob der ATtiny13A Package Programmierer das bei sich> auch so gemacht hat.
Das haben wir doch schon geklärt.
Zur Erinnerung: Es geht hier um das PRR.PRADC Bit, nicht um ADCSRA.ADEN.
Auch dich möchte ich bitten, den Screenshot anzuschauen, den ich um
16:41 gezeigt habe. Da steht ganz klar, dass der ADC standardmäßig
eingeschaltet ist.
S. Landolt schrieb:> deshalb schrieb ich auch> "Arduino-Umgebung".
Welche leider geheim ist, denn Arduino kennt von Hause aus keinen t13.
Wenn sie nicht geheim wäre, könnte man die Konfiguration betrachten.
Veit D. schrieb:> Was bitte ist daran dürftig? Steht doch glasklar da was das Bit macht> und was beachtet werden muss.
Dann kannst du uns sicher die Stelle im DB zeigen wo steht, wie viel
Strom man damit im normalen Betrieb und wie viel im SLEEP_MODE_PWR_DOWN
spart, und inwiefern das von Versorgungsspannung und Eingangsspannung
abhängt.
Immerhin ist ja die spezielle picoPower® version des Chips, da kann man
doch klare Angaben zur Stromaufnahme erwarten.
Stefan ⛄ F. schrieb:> Dann kannst du uns sicher die Stelle im DB zeigen wo steht, wie viel> Strom man damit im normalen Betrieb und wie viel im SLEEP_MODE_PWR_DOWN> spart
Das wird natürlich nirgendwo stehen (können), weil es dieses Symbol aus
Sicht des DB überhaupt nicht gibt. Das ist eine reine Erfindung der
Arduidioten. Schlimmerweise eine Erfindung nicht der Endnutzer (von
denen kann man sowieso kein sinnvolles Konzept erwarten), sondern der
unsäglichen Abstrahierer dieser Idioten-Spielwiese.
c-hater schrieb:> Das wird natürlich nirgendwo stehen (können), weil es dieses Symbol aus> Sicht des DB überhaupt nicht gibt. Das ist eine reine Erfindung der> Arduidioten.
Geht das unqualifizierte Arduino Bashing wieder los? Dieses Symbol
befindet in der avr libc Bibliothek, in Datei iotn13a.h:
c-hater schrieb:> Das ist eine reine Erfindung der> Arduidioten.
Du irrst!
SLEEP_MODE_PWR_DOWN ist in avr/sleep.h definiert.
Schaue nach und gestehe dann demütig dein Versagen ein.
Stefan ⛄ F. schrieb:> Veit D. schrieb:>> Was bitte ist daran dürftig? Steht doch glasklar da was das Bit macht>> und was beachtet werden muss.>> Dann kannst du uns sicher die Stelle im DB zeigen wo steht, wie viel> Strom man damit im normalen Betrieb und wie viel im SLEEP_MODE_PWR_DOWN> spart, und inwiefern das von Versorgungsspannung und Eingangsspannung> abhängt.>> Immerhin ist ja die spezielle picoPower® version des Chips, da kann man> doch klare Angaben zur Stromaufnahme erwarten.
Die Frage hat aber nichts mit Beschreibung der Bit Funktion wie ich sie
rauskopiert habe und du im Screenshot zeigst zu tun. Du meinst die
Wirkung des Bits bzw. die Wirkung des ADC Power Down. Das ist etwas
völlig anderes.
Dazu kann man im Kapitel 19.1 "Additional Current Consumption (Absolute)
for Peripherals" die Tabelle lesen. Je nach Takt und Spannung benötigt
das ADC Modul, wenn aktiv/idle zwischen 180...460µA was man mittels
Power Down einsparen kann.
Desweiteren mutmaßt ihr bis jetzt ob der ADC von diesem µC in der
Arduino IDE defaultmäßig eingeschalten ist oder nicht. Erst wenn ihr das
Register vom ATtiny13A auslest wisst ihr es ganz genau. Oder man wühlt
sich durch den Code vom Package, nur dazu bräuchte den Link. Register
auslesen geht einfacher.
c-hater schrieb:> Das wird natürlich nirgendwo stehen (können), weil es dieses Symbol aus> Sicht des DB überhaupt nicht gibt. Das ist eine reine Erfindung der> Arduidioten. Schlimmerweise eine Erfindung nicht der Endnutzer (von> denen kann man sowieso kein sinnvolles Konzept erwarten), sondern der> unsäglichen Abstrahierer dieser Idioten-Spielwiese.
Sag mal, kannst du dich mal wieder zügeln? Das geht mir langsam auf den
Sack. Wenn du Arduino Nutzer als Idioten hinstellst, aber selbst nicht
mit der ADC Doku klarkommst, dann solltest du dich mal fragen wer hier
der Idiot ist. Zusätzich kennst du nicht einmal die avr-gcc
Standardfunktionen. Man oh man!
Stefan ⛄ F. schrieb:> Geht das unqualifizierte Arduino Bashing wieder los? Dieses Symbol> befindet in der avr libc Bibliothek, in Datei iotn13a.h:>
1
>#defineSLEEP_MODE_PWR_DOWN(0x02<<3)
2
>
In den Assembler-Includes gibt es dieses Symbol nicht, damit existiert
es nicht wirklich.
Es existiert allenfalls in den Includes des avrgcc. Unwichtiges Zeug.
Zumindest hat keine normative Kraft, was in der Include-Hölle
irgendeines Compilers irgendwo in einer finsteren Versenkung existiert.
> Und im Datenblatt steht es auch.
Wo? In deinem Screenshot jedenfalls nicht. Und auch sonst nirgendwo im
DB. Du kannst dich mit der Suchfunktion deines PDF-Viewers sehr leicht
davon überzeugen.
Veit D. schrieb:> Du meinst die Wirkung des Bits bzw. die Wirkung des ADC Power Down.
Ja die meine ich. Zur Beschreibung des Bits gehören dessen Auswirkungen
- meinetwegen auch in einem anderen Kapitel.
Ansonsten kann ich dir auch sagen: Da an der Wand ist ein weißer
schalter. Damit kannst du etwas schalten.
Veit D. schrieb:> Du meinst die Wirkung des Bits bzw. die Wirkung des ADC Power Down.
Ja die Wirkung ist mir zu dürftig dokumentiert.
> zwischen 180...460µA was man mittels> Power Down einsparen kann.
So hatte ich das auch interpretiert doch S. Landolt hat nur 40 µA
gemessen.
c-hater schrieb:> In den Assembler-Includes gibt es dieses Symbol nicht, damit existiert> es nicht wirklich.
Du spinnst doch!
Es geht hier um C++, nicht um Assembler. Das weißt du ganz genau. Wenn
du keinen Bock hast, dich mit C/C+ zu befassen, dann halte dich bitte
aus entsprechenden Diskussionen heraus. Deine bescheuerte Ignoranz
interessiert hier niemanden. Halte mal deinem Spiegel einen Vortrag, der
hört dir vielleicht zu.
>> Und im Datenblatt steht es auch.> Wo? In deinem Screenshot jedenfalls nicht.
Dann wasche mal dein Gesicht und mache Licht an, dann siehst du auch
etwas.
Veit D. schrieb:> Wenn du Arduino Nutzer als Idioten hinstellst
Das sind sie in überwältigender Mehrheit. Der Beweis dafür findet sich
hier in diesem Forum in unzähliger Mannigfaltigkeit.
> aber selbst nicht> mit der ADC Doku klarkommst
Häh? Wieso sollte ich damit nicht klarkommen?
> Zusätzich kennst du nicht einmal die avr-gcc> Standardfunktionen.
Dem ist wohl nichts hinzuzufügen. Allein "avr-gcc" und "Standard"
zusammen zu verwenden, bescheinigt dir bereits vollständige Inkompetenz.
Und dann auch noch bezüglich eines Symbols irgenwelche "Funktionen" in's
Spiel zu bringen, vertieft das nur.
Du hast so wenig Ahnung, dass du einfach mal die Fresse halten solltest.
> So hatte ich das auch interpretiert doch S. Landolt> hat nur 40 µA gemessen.
Schon, aber bei einem ATtiny85 (da ich keinen 13A habe); bei diesem sind
die im Datenblatt angegebenen Werte deutlich geringer.
Damit verabschiede ich mich, wünsche allerseits einen schönen Abend und
ein frohes Wochenende.
EAF schrieb:> Deine Worte sagten, dass es eine Arduino Erfindung ist.>> Gestehe!> Übe Demut.
OK, das stimmt. Das war keine Arduino-Erfindung, sondern eine
avrgcc-Erfindung, Der Arduino-Kram hat das nur benutzt.
Naja, in der Tiefe dieser ganzen schwachsinnigen Abstraktionen kann man
sich schonmal verirren.
c-hater schrieb:> Dem ist wohl nichts hinzuzufügen. Allein "avr-gcc" und "Standard"> zusammen zu verwenden, bescheinigt dir bereits vollständige Inkompetenz.
Es geht nicht um den avr-gcc sondern um die avr libc. Und die ist
Standard. Atmel und Microchip haben nie eine andere C Bibliothek für
diesen Chip angeboten.
c-hater schrieb:> Der Arduino-Kram hat das nur benutzt.> Naja, in der Tiefe dieser ganzen schwachsinnigen> Abstraktionen kann man sich schonmal verirren.
Halt doch mal deine Klappe wenn du keine Ahnung hast. Das Arduino
Framework benutzt die Sleep Funktionen überhaupt nicht. Deswegen hat
diese Diskussion mit Arduino auch überhaupt gar nichts zu tun.
Da hat Holger ein Trigger-Wort geäußert und du flippst nun total aus.
Was du hier veranstaltest, das ist schwachsinnig.
c-hater schrieb:> Veit D. schrieb:>>> Wenn du Arduino Nutzer als Idioten hinstellst> Das sind sie in überwältigender Mehrheit. Der Beweis dafür findet sich> hier in diesem Forum in unzähliger Mannigfaltigkeit.
Du hast ja keine Ahnung. Wirklich nicht.
>> aber selbst nicht mit der ADC Doku klarkommst> Häh? Wieso sollte ich damit nicht klarkommen?Beitrag "Re: Attiny: LED aus durch Sleepmode">> Zusätzich kennst du nicht einmal die avr-gcc Standardfunktionen.> Du hast so wenig Ahnung, dass du einfach mal die Fresse halten solltest.
Wenn du meinst ...
c-hater schrieb:> EAF schrieb:>>> Deine Worte sagten, dass es eine Arduino Erfindung ist.>>>> Gestehe!>> Übe Demut.>> OK, das stimmt. Das war keine Arduino-Erfindung, sondern eine> avrgcc-Erfindung, Der Arduino-Kram hat das nur benutzt.>> Naja, in der Tiefe dieser ganzen schwachsinnigen Abstraktionen kann man> sich schonmal verirren.
Gut, das war immerhin schon mal ein Eingeständnis.
Nur das mit der Demut, das klappt noch nicht so richtig....
Versuche es nochmal!
Veit D. schrieb:>>> Wenn du Arduino Nutzer als Idioten hinstellst>> Das sind sie in überwältigender Mehrheit. Der Beweis dafür findet sich>> hier in diesem Forum in unzähliger Mannigfaltigkeit.>> Du hast ja keine Ahnung. Wirklich nicht.
Wie würdest du dann diese schiere Masse von Post offensichtlich völlig
Unwissender erklären? Oft auch noch mit dem Kontext, überhaupt nix
anderes als Arduino zu kennen, weil es nichtmal erwähnt wird, dass es um
Arduino geht und man das nur aus dem weiteren Gelalle des jeweiligen TO
entnehmen kann.
>>> aber selbst nicht mit der ADC Doku klarkommst>> Häh? Wieso sollte ich damit nicht klarkommen?>> Beitrag "Re: Attiny: LED aus durch Sleepmode"
Wie soll das deine Argumentation stützen? Du bist sogar zu dumm und
unwissend, um zu erkennen, dass es das keinesfalls tut...
> Wenn du meinst ...
Ja, das meine ich, deswegen sage ich es. Immer und immer wieder, trotz
Zensoren und Idioten.
c-hater schrieb:> Wie würdest du dann diese schiere Masse von Post offensichtlich völlig> Unwissender erklären? Oft auch noch mit dem Kontext, überhaupt nix> anderes als Arduino zu kennen, weil es nichtmal erwähnt wird, dass es um> Arduino geht und man das nur aus dem weiteren Gelalle des jeweiligen TO> entnehmen kann.
Sorry, aber der "lallende TO", also meine Wenigkeit, hat gar nicht
über Arduino geschrieben. Der Begriff kommt nichtmal im Ursprungspost
vor. Es geht um den Attiny13A.
Wenn ich mir irgendwann vornehme, in einem Forum in das sinnlose
Beleidigen von Nutzern einzusteigen, werde ich mich vorher registrieren.
Würde ich dir auch empfehlen.
@ TO Sven,
welches µC Package verwendest du?
Zufällig das von MCUdude? https://github.com/MCUdude/MicroCore
Ich gehe mal davon aus, weil das recht bekannt ist.
Dabei fällt mir auf, dass diese Zeilen nicht zusammenpassen.
1
constintSwitchPin=3;
2
detachInterrupt(digitalPinToInterrupt(SwitchPin))
3
attachInterrupt(0,INT_PINisr,LOW);
Entweder verwendest du generell die Interrupt Nummer oder die Pinnummer.
Bei der Pinnummer mußte dann wie bei attach geschehen immer die
zusätzliche Funktion digitalPinToInterrupt( ) verwenden. Ansonsten
stimmt der Interrupt zum Pin nicht.
Denn die INT0 in
1
attachInterrupt(0,INT_PINisr,LOW);
zeigt ja nicht auf Arduinopin 3. Das ist Arduinopin 1 bzw. Gehäusepin 6
/ PB1.
Das müßte demzufolge so aussehen damit erstmal die Pinzuordnug passt.
Danach solltest du nochmal deine Tasterabfrage und das speichern des
letzten Zustandes überdenken. Wann wird der Zustand aktualisiert und
wann sollte er eigentlich wirklich aktualisiert werden damit ein
sinnvoller Vergleich möglich ist.
Sven H. schrieb:> Sorry, aber der "lallende TO", also meine Wenigkeit, hat *gar nicht*> über Arduino geschrieben. Der Begriff kommt nichtmal im Ursprungspost> vor. Es geht um den Attiny13A.
Ich sehe die Funktionen setup und loop. Damit ist mir klar, du
verwendest die Arduino IDE zum programmieren deines ATtiny13A. Oder
sollte ich mich irren? Wenn doch, wie programmierst du deinen µC?
Sven H. schrieb:> meine Wenigkeit, hat gar nicht> über Arduino geschrieben. Der Begriff kommt nichtmal im Ursprungspost> vor. Es geht um den Attiny13A.Sven H. schrieb:> /* Arduino schlafen legen */
Das ist doch der Ursprungspost-Post, oder nicht?
Wie dem auch sei, lass dich vom c-hater nicht unterkriegen. Den kann man
schon lange nicht mehr ernst nehmen. Aber er hilft, wenn du kurz vorm
einschlafen bist und wach bleiben musst. Für einen Adrenalin-Schub ist
er immer gut.
Hallo,
ich dachte man kann retten was zu retten ist. Wie du schon sagst, man
muss c-hater ignorieren lernen, dann bleiben die Threads auch ziemlich
sauber. Sofern Sven noch mitmacht und alle sich nur auf sein Problem
konzentrieren kann der Thread weitergeführt werden und am Ende
hoffentlich zur Lösung führen. Soweit meine Gedankengänge.
Veit D. schrieb:> man> muss c-hater ignorieren lernen
Klar, wenn man von Fakten und Hardware nix hören will, kann man mich
getrost ignorieren. Nur sollte man sich dann nicht wundern, wenn man zu
keiner Lösung kommt...
Da kann man dann weiter beliebig idiotisch mit C/C++/Arduinio (in
aufsteigender Reihenfolge der schwachsinnigen Überabstraktionen
primitivster Hardware) rumfrickeln...
c-hater schrieb:> Veit D. schrieb:>>> man>> muss c-hater ignorieren lernen>> Klar, wenn man von Fakten und Hardware nix hören will, kann man mich> getrost ignorieren. Nur sollte man sich dann nicht wundern, wenn man zu> keiner Lösung kommt...>
Das mit dem Ignorieren stimmt, denn Deine Beiträge zu Problemlösungen
bestehen zu 80% aus Beleidigungen und die restlichen 20% - Schwamm
drüber
c-hater schrieb:> Veit D. schrieb:>>> man>> muss c-hater ignorieren lernen>> Klar, wenn man von Fakten und Hardware nix hören will, kann man mich> getrost ignorieren. Nur sollte man sich dann nicht wundern, wenn man zu> keiner Lösung kommt...>> Da kann man dann weiter beliebig idiotisch mit C/C++/Arduinio (in> aufsteigender Reihenfolge der schwachsinnigen Überabstraktionen> primitivster Hardware) rumfrickeln...
Meine letzte Antwort an dich. Dann schalte ich vom Toleriermode in den
Ignormode. Frage dich einmal wann du im gesamten Forum jemals irgendwas
zu einer Lösung beigetragen hast. Von dir kommt nur heiße Luft sonst
nichts. Selbst in Threads wo es um bare metal Programmierung geht, wo du
vielleicht durch Hardwarekenntnisse punkten könntest kommt absolut
nichts von dir. Wo bist du denn wenn es zum Bsp. um den AVRxxDBxx geht.
Letztens ging es um deren Timer. Da war absolute Funkstille von dir. Da
musste S.Landolt, ich und Co ran. Bei S.Landolt weiß ich das er
Assembler programmieren kann und das er Ahnung hat. Du hast beides
nicht. S.Landolt schätze ich. Dich ignoriere ich. Es gibt nie auch nur
Ansatzweise einen Satz zur Problemlösung von dir. Immer wieder nur
dummes Gelaber und Stänkern von dir. Wahrscheinlich spielt niemand mit
dir. Ich kann es verstehen.
Zurück zum Thema. Sven was ist der Stand der Dinge?
Veit D. schrieb:> Selbst in Threads wo es um bare metal Programmierung geht, wo du> vielleicht durch Hardwarekenntnisse punkten könntest kommt absolut> nichts von dir.
Das sehe ich anders. Manchmal hilft er wirklich, sogar wenn es um C
geht. Auch damit kennt er sich aus - unabhängig von seinem Gemecker und
der lächerlichen Wortwahl.
Veit D. schrieb:> Das müßte demzufolge so aussehen damit erstmal die Pinzuordnug> passt.> const int SwitchPin = 1;> detachInterrupt(digitalPinToInterrupt(SwitchPin))> attachInterrupt(digitalPinToInterrupt(SwitchPin), INT_PINisr, LOW);
const byte SwitchPin = 2; // oder 3
Gestern war ich bei meinem Therapeuten. Der hat mir versucht zu sagen,
dass meine C++ und Arduino Ablehnung auf meiner eigenen Unfähigkeit
beruht, mich auf diese Thema einzulassen. Angeblich vertrage ich es
nicht, wenn Arduino Kinder besser mit C++ umgehen können, als ich.
Dem habe ich einen auf die Glocke gehauen.
Therapie, so ein Schwachsinn!
Sven H. schrieb:> und nur alle 5 Minuten per Watchdog aufwachen
Muss häufiger geschehen: ca. 8 Sekunden ist das längste Time-out beim
WDT vom ATtiny13A.
c-hater schrieb:> Gestern war ich bei meinem Therapeuten. Der hat mir versucht zu sagen,> dass meine C++ und Arduino Ablehnung auf meiner eigenen Unfähigkeit> beruht, mich auf diese Thema einzulassen. Angeblich vertrage ich es> nicht, wenn Arduino Kinder besser mit C++ umgehen können, als ich.>> Dem habe ich einen auf die Glocke gehauen.> Therapie, so ein Schwachsinn!
Sehr lustig. Nun, jeder Nichtvollidiot wird problemlos erkennen können,
dass das nicht von c-hater (the only trustworthy) stammen kann.
Und dem Rest ist eh' nicht zu helfen.
c-hater schrieb:> Sehr lustig. Nun, jeder Nichtvollidiot wird problemlos erkennen können,> dass das nicht von c-hater (the only trustworthy) stammen kann.
Schon klar, MaWin...
pnp schrieb:> Schon klar, MaWin...
Was hat WaWin damit zu tun? Ausser der Tatsache, dass er (wie ich
selber) bevorzugt, pseudonym zu bleiben?
Ja, es gibt da die Möglichkeit von Trittbrettfahrern, die Ergüsse mit
falscher Identität abliefern. Muß man mit leben. Ich kann das
weitgehend, MaWin scheinbar nicht. Liegt natürlich auch ein wenig daran,
dass er schon länger und umfassender auf dieser Ebene angegriffen wird.
Ich werde derartiges (anders als WaWin) in Zukunft einfach vollständig
ignorieren. Ich verlasse mich einfach auf die Eigenkompetenz der Leser,
wer von denen nicht erkennt, von wem ein Posting kommt, ist sowieso
ausserhalb des Bereiches, den ich ansprechen will. Das sind "homo
sapiens" mit der Betonung auf "sapiens".
Schade, daß gewisse Personen immer wieder Threads absichtlich zerstören
müssen.
Die Frage war eigentlich ganz einfach. Wenn man Arduino Funktionen
benutzt, dann muß man auch die Doku dazu lesen. Für Attachinterrupt gibt
es eine Übersetzerfunktion, die aus der Arduino-Nummer des Pins den
passenden Vector ermittelt.
Nur wird der TO schon lange nicht mehr mitlesen.
Das Arduino detach und attach mit einem ISR Callback macht richtig Sinn,
wenn die Routine zur Laufzeit ausgetauscht werden soll.
In anderen Fällen kann man ihr auch ein wenig Komfort zuschreiben, da es
mit allen µC funktioniert, welche das ermöglichen und es eine Arduino
Integration gibt.
Hier führt es eher zu Fehlern, wie man sieht, und kostet Flash(Push+Pop
Kaskaden) und RAM(Pointer+Stack), welches beides auf dem t13 eher knapp
ist.