Forum: Mikrocontroller und Digitale Elektronik Arduino put() get() ein ppar Fragen dazu.


von oldeurope O. (Gast)


Lesenswert?

https://www.arduino.cc/en/Reference/EEPROMPut

Ich möchte zwei int Werte speichern.

Da habe ich schon zwei Fragen zu:
Im link steht
1
  float f = 123.456f;  //Variable to store in EEPROM.
2
  int eeAddress = 0;   //Location we want the data to be put.

Warum steht da ein f hinter der Zahl?

Welche Adresse benötige ich für den zweiten int-Wert?
1
int eeAdress = 2;

Oder nehme ich da mehr Sicherheitsabstand?
1
eeAddress += sizeof(float); //Move address to the next byte after float 'f'.
Und welche Adresse hat er sich dann ausgesucht?
Die muss ich doch für get() wissen, oder?


LG
old.

von Einer K. (Gast)


Lesenswert?

Stopfe die Daten ins EEPROM.
Überlasse die Adressberechnung dem Compiler.
1
float EEMEM f = 123.456f; // Arduino legt *.eep Datei an 
2
3
float fImRam = 0.0d;
4
5
EEPROM.get((int)&f,fImRam);


> Warum steht da ein f hinter der Zahl?
Schaffe dir ein C++ Buch an.

von oldeurope O. (Gast)


Lesenswert?

Dann wähle ich einfach zwei weit auseinander liegende Adressen.

Hinter die Zahl schreibe ich keinen Buchstaben, mal sehen was passiert.

LG
old.

von Einer K. (Gast)


Lesenswert?

Uneinsichtig.

von c r (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Uneinsichtig.

Jo, der gehört wahrscheinlich auch zu den Leuten, die mit 2m Lücke 
Parken.

Aus der W. schrieb:
> Sicherheitsabstand?

Sicherheitsabstand.

von oldeurope O. (Gast)


Lesenswert?

Funktioniert das so?
1
#include <EEPROM.h>
2
int drehungenende = 1200;                             // Maximale Tischhöhe 118cm Hub 55cm  
3
int drehungenlinks;
4
int drehungenrechts; 
5
void setup() {
6
drehungenlinks = drehungenende;
7
drehungenrechts = drehungenende;  
8
  EEPROM.put( 0, drehungenlinks);
9
  EEPROM.put(60, drehungenlinks);
10
}
11
void loop() {                                
12
}

Dieser Code kommt zuerst rein,
danach der Haupt-Sketch.
Ich hoffe mal, beim Sketchhochladen wird das EEPROM nicht gelöscht.

LG
old.

von c r (Gast)


Lesenswert?

Aus der W. schrieb:
> Ich hoffe mal, beim Sketchhochladen wird das EEPROM nicht gelöscht.

Es ist ja allgemein bekannt, dass Halbleiter das tun, was man "hofft"

von oldeurope O. (Gast)


Lesenswert?

c r schrieb:
> Es ist

Ich werde berichten ob das so klappt.
Nachher ist man immer schlauer.

LG
old.

Beitrag #6124086 wurde von einem Moderator gelöscht.
von Einer K. (Gast)


Lesenswert?

Man man man ...

Nicht nur eine C++ Buch lese Hemmung, sondern auch noch eine Datenblatt 
lese Schwäche obendrauf.

Aber immerhin kann es Adressen im EEPROM willkürlich festsetzen.

Scheinbar resistent gegen alles.

Beitrag #6124103 wurde von einem Moderator gelöscht.
von Heinz (Gast)


Lesenswert?

Oft ist es sinnvoll, nicht mit Eeprom Offset Adressen zu arbeiten 
sondern stattdessen eine Struktur zu definieren und diese dann ins 
eeprom zu schreiben bzw zu lesen. Als ersten Wert in der Struktur nehme 
ich gerne
eine Versionsnummer, damit das Programm bei Programmerweiterungen und 
Änderung der Eeprom-Datenstruktur in der Lage ist, auch Daten aus dem 
Eeprom zu lesen, die mit einer alten Programmversion hineingeschrieben 
wurden:

struct EEP_DATA
{
  uint32 version;
  float  wertA;
  int32  wertB;
};

Gelesen wird somit zunächst die Versionsnummer:
4 Bytes abAdresse 0

Dann abhängig von der Versionsnummer die passende Struktur befüllen:
immer ab Eeprom Adresse 0 mit dem passenden sizeof(EEPDATA).

Schreiben erfolgt ebenfalls mit dem aktuellen sizeof(EEPDATA) ab Adresse 
0.

Es empfiehlt sich, in der Struktur erst die 32Bit Variablen, dann die 
16Bit Variablen und erst am Ende die 8Bit Variablen zu  definieren, um 
Füllbytes aufgrund von Alignment zu vermeiden.

von Dirk B. (dirkb2)


Lesenswert?

Aus der W. schrieb:
> Warum steht da ein f hinter der Zahl?

Das ist ein Suffix. Damit kannst du den Typ des Literals festlegen.
122.456 ist erstmal ein double. Mit dem f zwingst du das auf float.

Das ist hier aber überflüssig, da dies bei der Zuweisung an die Variable 
f automatisch passiert.

Man braucht das für Berechnungen um z.B. Überläufe zu verhindern

Es gibt auch Suffixe für Integer-Typen 
https://www.c-plusplus.net/forum/topic/322583/was-ist-ein-suffix

von Hans (Gast)


Lesenswert?

>Man man man ...

>Nicht nur eine C++ Buch lese Hemmung, sondern auch noch eine Datenblatt
>lese Schwäche obendrauf.

>Aber immerhin kann es Adressen im EEPROM willkürlich festsetzen.

>Scheinbar resistent gegen alles.

Deine Sprache ist unfreundlich. Gewöhne Dir bitte eine höfliche 
Ausdrucksweise an. Mache Dir Gedanken, wie Deine Ausdrucksweise auf 
andere wirkt und welche Folgen sie hier im Thread hat.

Danke im Voraus.

von InterWebz (Gast)


Lesenswert?

Dirk B. schrieb:
> Das ist ein Suffix. Damit kannst du den Typ des Literals festlegen.
> 122.456 ist erstmal ein double. Mit dem f zwingst du das auf float.
>
> Das ist hier aber überflüssig, da dies bei der Zuweisung an die Variable
> f automatisch passiert.
>
> Man braucht das für Berechnungen um z.B. Überläufe zu verhindern
>
> Es gibt auch Suffixe für Integer-Typen
> https://www.c-plusplus.net/forum/topic/322583/was-ist-ein-suffix

Danke an Dirk, mir war dies neu.
Aber ich hab ja auch kein Buch.... ;-)

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Aus der W. schrieb:
> Dieser Code kommt zuerst rein,
> danach der Haupt-Sketch.
> Ich hoffe mal, beim Sketchhochladen wird das EEPROM nicht gelöscht.

Funktioniert ufb. War aber ein Fehler drin,
muss heißen EEPROM.put(60, drehungenrechts);

Belegt werden bei int nur zwei Bytes.
Also Adressen 0,2,4, und so fort kann wählen,
wenn man die Speicherplätze lückenlos hintereinander
belegen will. Mit 0 und 60 geht auch.
Anbei der Test-Sketch. Wenn mp HIGH, leuchtet die LED und
die Werte sind korrekt gespeichert und gelesen.
Mit den Adressen 0 und 1 leuchtet sie nicht, was zu erwarten war.
Könnt Ihr auch auf einem UNO-Board testen.
Als nächstes baue ich das in den Code ein.

Dirk B. schrieb:
> Das ist hier aber überflüssig

Danke. In dem Beispiel-Sketch sind Inhalte die mich
verwirren und überfordern. Die Funktion put und get
ist ja genial einfach. Genau mein Ding,
tnx Arduino.

LG
old.

von Dirk B. (dirkb2)


Lesenswert?

InterWebz schrieb:
> Aber ich hab ja auch kein Buch.... ;-)

Das ist schlecht.

Meist werden aber auch nur die Integer-Suffixe behandelt.

von Einer K. (Gast)


Lesenswert?

Dirk B. schrieb:
> Es gibt auch Suffixe für Integer-Typen
Auch für Zeiten!

Und wenn man Hunger auf Suffixe hat, kann man sich selber welche bauen, 
die einem besser schmecken als die vordefinierten.

Heinz schrieb:
> Dann abhängig von der Versionsnummer die passende Struktur befüllen:
> immer ab Eeprom Adresse 0 mit dem passenden sizeof(EEPDATA).
>
> Schreiben erfolgt ebenfalls mit dem aktuellen sizeof(EEPDATA) ab Adresse
> 0.
put und get benötigen kein externes sizeof(). Das haben sie selber im 
Bauch.
offsetof() ist da viel interessanter und oftmals sehr nützlich

Heinz schrieb:
> Es empfiehlt sich, in der Struktur erst die 32Bit Variablen, dann die
> 16Bit Variablen und erst am Ende die 8Bit Variablen zu  definieren, um
> Füllbytes aufgrund von Alignment zu vermeiden.
Dafür gibts das Attribut packed.
Das Ganze macht nur auf einem AVR8 herzlich wenig Sinn.
Etwas struct ist natürlich völlig ok, aber die Anordnung ist auf einem 
AVR8 wurscht.

Hans schrieb:
> Deine Sprache ist unfreundlich. Gewöhne Dir bitte eine höfliche
> Ausdrucksweise an.

Tut mir leid, wenn es deine Gefühle verletzt.
Aber noch freundlicher kann ich meine Verachtung für so viel Ignoranz 
leider nicht formulieren.

Merke:
Die GGC Entwickler haben uns die .eeprom Section geschenkt.
Und die Möglichkeit damit strukturiert umzugehen.
Die Arduino EEPROM Klasse mit ihren put und get ist eine nette Hilfe 
dabei.

Das kann man natürlich alles in den Wind schlagen ignorieren und 
ausblenden. Aber "Vorbildlich" ist das ganz sicher nicht.

Den TE interessiert ja noch nicht mal, "Warum?" seine EEPROM Daten beim 
Chip Erase erhalten bleiben. Das führt dazu, dass er beim nächsten AVR 
evtl. damit auf die Nase fällt.
Ausprobieren ist da aus meiner Sicht KEINE Option.

von oldeurope O. (Gast)



Lesenswert?

Ziel: Bei Netzstecker raus schnell noch die beiden int-Werte
speichern.
Dazu habe ich mir erstmal den bool spggutflanke gemacht.
Sieht schonmal gut aus.
Das Monoflop verlängert den Impuls zur Sichtkontrolle.
Das entfällt dann. Vor A4 liegen noch 110K, hab ich vergessen
einzuzeichnen.

Arduino Fanboy D. schrieb:
> Tut mir leid, wenn es deine Gefühle verletzt.
> Aber noch freundlicher kann ich meine Verachtung für so viel Ignoranz
> leider nicht formulieren.

Ich roll mich ab vor Lachen.

LG
old.

von oldeurope O. (Gast)



Lesenswert?

Offenbar nimmt der Speichervorgang etwas mehr Zeit in
Anspruch als ich dachte.

Also eine neue Lösung.
Ich lasse nachschauen ob die Halbwellen vom Netz da sind
und ob sie eine Mindestgröße erreichen.
Wenn nein, das ist der Fall wenn man Netz trennt, wird
gespeichert. Das funktioniert so.

Soll ich das so machen oder habe ich etwas übersehen?

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Was haltet Ihr davon auf eine Adresse einen float wert zu schreiben,
der mit einem Wert im Sketch verglichen wird.

Diesen Kontrollwert häufiger schreiben als die wichtigen Werte.
Also ihn mit EEPROM.write()und nicht update wie bei put schreiben.

Wenn der Float Wert nicht mehr stimmt, also das EEPROM platt ist,
den  Prozessor in einer Betriebsart ohne speichern arbeiten lassen.

In meinem Fall müsste man nach jeder Netztrennung den Tisch runterfahren
zum Initialisieren um weiter hoch fahren zu können.

So könnte ich sicher stellen, dass bei EEPROM-Defekt die
Mechanik nicht kaputtgefahren werden kann.

LG
old.

von Joachim B. (jar)


Lesenswert?

Aus der W. schrieb:
> Ziel: Bei Netzstecker raus schnell noch die beiden int-Werte
> speichern.

dafür gibt es schon Lösungen auch hier vorgestellt und beschrieben.
Die Frage die offen ist, willst du nach dem "Kaputtschreiben" des 
EEPROMs lieber den µC wechseln oder lieber ein I2C EEPROM als DIP im 
8-pol Sockel?

Ich hatte mich bei diversen Arduino Nano lieber dafür entschieden das 
EEPROM eines RTC3231 Modul zu beschreiben welche es billiger als Ersatz 
gibt, noch billiger wären nur externe I2C EEPROMs.
Oder mit mehr Softwareaufwand die Schreibpositionen ständig verändern.

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> lieber den µC wechseln

https://www.mikrocontroller.net/attachment/443574/20200129b.jpg

Ich meine, da ist keine Frage offen.


Joachim B. schrieb:
> Oder mit mehr Softwareaufwand die Schreibpositionen ständig verändern.

Hört sich interessant an. Beispielsketch parat?

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Wenn dem Teil vier mal am Tag der Saft abgedreht wird,
sind die garantierten Zyklen nach etwa 6 Jahren erreicht.

Habe mir folgendes überlegt:
Einen dritten int-Wert hinzufügen.
Alle drei Werte aufaddiert müssen z.B. 5000 ergeben.
Erst dann werden die beiden Werte aus dem EERPOM verwendet.
Vor dem Speichern wird der dritte Wert berechnet.

Das kann ich hoffentlich umsetzen. Mal sehen.



LG
old.

von Wolfgang (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> float fImRam = 0.0d;

Was soll DAS denn sein?
https://www.ibm.com/support/knowledgecenter/en/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/language_ref/lit_fltpt.html

Aus der W. schrieb:
> Hinter die Zahl schreibe ich keinen Buchstaben, mal sehen was passiert.

Es darf jeder selber auf die Schnauze fallen. Spätestens wenn du das 
Produkt zweier größerer Ganzzahlkonstanten berechnest, wirst du dich 
hoffentlich an soetwas wie die Existens von Literal suffixes erinnern.

von Einer K. (Gast)


Lesenswert?

Wolfgang schrieb:
> Was soll DAS denn sein?

Naja, zumindest ist es eine (kleine) Provokation.
Und du reagierst ja auch prächtig darauf.

Ansonsten, ist es auch nur eins der Suffixe, welches der Gcc 
versteht/akzeptiert.

Wolfgang schrieb:
> Spätestens
Das interessiert den doch alles nicht.

Der baut ja auch Tische ohne Endschalter, die bei verschlissenem EEPROM 
die Mechanik verbiegen.

von Joachim B. (jar)


Lesenswert?

Aus der W. schrieb:
> Hört sich interessant an. Beispielsketch parat?

habe keine Beispiele gefunden, alle reden davon das Prinzip ist logisch 
aber Beispiele finden gelang mir nicht, aber:

http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren

wenn du suchen magst
Wear Leveling
http://mat.midlight.eu/index.php/EEPROM_Wear_Leveling_(AVR101)

code
http://ww1.microchip.com/downloads/en/AppNotes/AVR101.zip

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Der baut ja auch Tische ohne Endschalter, die bei verschlissenem EEPROM
> die Mechanik verbiegen.

Du scheinst ja solche Tische zu kennen.
Aber, so blöd bin ich ich dann doch nicht.
Bei verschlissenem EEPROM wird der Höchstwert
angesetzt und der Tisch fährt nur noch runter.
Erst wenn der Initialisierungspunkt erreicht
wurde, kann man bis zum höchsten Punkt fahren.

So hatte ich es ja auch gemacht, als ich noch nicht
im EEPROM speichern konnte.
Lästig war dann halt, dass man nach Netzstecker ziehen,
einmal ganz runter, zum Initialisieren, fahren musste.


LG
old.

von oldeurope O. (Gast)


Lesenswert?

Aus der W. schrieb:
> Einen dritten int-Wert hinzufügen.
> Alle drei Werte aufaddiert müssen z.B. 5000 ergeben.
> Erst dann werden die beiden Werte aus dem EERPOM verwendet.

Bis dahin klappt das schonmal.
1
unsigned long ueberlastvz = 5000;
2
bool haltlinks;
3
bool haltrechts;
4
bool halt;
5
bool strompuls = LOW;
6
bool strompulsa = LOW;
7
byte strompulszahl = 0; 
8
void setup() {
9
pinMode(ueberlastpin, INPUT_PULLUP);
10
pinMode(lhallpin, INPUT);
11
pinMode(rhallpin, INPUT);
12
pinMode(mp, OUTPUT);
13
pinMode(piep, OUTPUT);
14
pinMode(relaishpin, OUTPUT);
15
pinMode(relaisrpin, OUTPUT);
16
analogWrite(iset,200);
17
anlaufvz = drehtvz - 100;
18
  EEPROM.get(0, getlinks);
19
  EEPROM.get(2, getrechts);
20
  EEPROM.get(4, getpruef);
21
pruefsumme = ((getlinks + getrechts) + getpruef);
22
if (pruefsumme == 5431){
23
  drehungenlinks = getlinks; drehungenrechts = getrechts; digitalWrite(mp,HIGH);}
24
  else{drehungenlinks = drehungenende; drehungenrechts = drehungenende; digitalWrite(mp,LOW);}  
25
}
26
void eepromschreiben(){
27
if(hoch == HIGH){                                                          //speichert nach Netzausfall während des Hochfahrens den max Wert
28
  EEPROM.put(0, drehungenende);                                            // und kommt beim Wiedereinschalten nur Runter zum initialisieren.
29
  EEPROM.put(2, drehungenende);}                                          
30
  else{
31
  EEPROM.put(0, drehungenlinks);
32
  EEPROM.put(2, drehungenrechts);}  
33
}
34
void loop() {
35
if(analogRead(acpin) > 500){volt = HIGH;}                                  // >12V Tatfo hat 15VAC an Steuerwicklung
36
  else{volt = LOW;}
37
if(volt == LOW){spggutist = millis();                                      // Monoflop
38
  if(spggutist - spggutstart > spggutvz){spggut = LOW;}}
39
  else{spggutstart = millis(); spggut = HIGH;} 
40
if(spggut != spgguta){                                                     // Puls bei abfallender Flanke
41
   if(spgguta == HIGH){speichern =HIGH;}}
42
   else{speichern = LOW;}  
43
spgguta = spggut;
44
if(speichern == HIGH){ eepromschreiben();}

Jetzt geht es ans Schreiben mit Prüfsumme.
Der Tisch läuft momentan im EEPROM kaputt Modus.

LG
old.

von Erwin D. (Gast)


Lesenswert?

Aus der W. schrieb:
> LG
> old.

Benutze doch bitte die Code-Tags.
1
[c] und [/c]

von oldeurope O. (Gast)


Lesenswert?

Erwin D. schrieb:
> Aus der W. schrieb:
>> LG
>> old.
>
> Benutze doch bitte die Code-Tags.
1
 und
1
unsigned long ueberlastvz = 5000;
2
bool haltlinks;
3
bool haltrechts;
4
bool halt;
5
bool strompuls = LOW;
6
bool strompulsa = LOW;
7
byte strompulszahl = 0; 
8
void setup() {
9
pinMode(ueberlastpin, INPUT_PULLUP);
10
pinMode(lhallpin, INPUT);
11
pinMode(rhallpin, INPUT);
12
pinMode(mp, OUTPUT);
13
pinMode(piep, OUTPUT);
14
pinMode(relaishpin, OUTPUT);
15
pinMode(relaisrpin, OUTPUT);
16
analogWrite(iset,200);
17
anlaufvz = drehtvz - 100;
18
  EEPROM.get(0, getlinks);
19
  EEPROM.get(2, getrechts);
20
  EEPROM.get(4, getpruef);
21
pruefsumme = ((getlinks + getrechts) + getpruef);
22
if (pruefsumme == 5431){
23
  drehungenlinks = getlinks; drehungenrechts = getrechts; digitalWrite(mp,HIGH);}
24
  else{drehungenlinks = drehungenende; drehungenrechts = drehungenende; digitalWrite(mp,LOW);}  
25
}
26
void eepromschreiben(){
27
if(hoch == HIGH){                                                          //speichert nach Netzausfall während des Hochfahrens den max Wert
28
  EEPROM.put(0, drehungenende);                                            // und kommt beim Wiedereinschalten nur Runter zum initialisieren.
29
  EEPROM.put(2, drehungenende);}                                          
30
  else{
31
  EEPROM.put(0, drehungenlinks);
32
  EEPROM.put(2, drehungenrechts);}  
33
}
34
void loop() {
35
if(analogRead(acpin) > 500){volt = HIGH;}                                  // >12V Tatfo hat 15VAC an Steuerwicklung
36
  else{volt = LOW;}
37
if(volt == LOW){spggutist = millis();                                      // Monoflop
38
  if(spggutist - spggutstart > spggutvz){spggut = LOW;}}
39
  else{spggutstart = millis(); spggut = HIGH;} 
40
if(spggut != spgguta){                                                     // Puls bei abfallender Flanke
41
   if(spgguta == HIGH){speichern =HIGH;}}
42
   else{speichern = LOW;}  
43
spgguta = spggut;
44
if(speichern == HIGH){ eepromschreiben();}

danke :)

von oldeurope O. (Gast)


Lesenswert?

Aus der W. schrieb:
> Habe mir folgendes überlegt:
> Einen dritten int-Wert hinzufügen.
> Alle drei Werte aufaddiert müssen z.B. 5000 ergeben.
> Erst dann werden die beiden Werte aus dem EERPOM verwendet.
> Vor dem Speichern wird der dritte Wert berechnet.
>
> Das kann ich hoffentlich umsetzen. Mal sehen.

Das ging ja leichter als gedacht:
1
void setup() {
2
pinMode(ueberlastpin, INPUT_PULLUP);
3
pinMode(lhallpin, INPUT);
4
pinMode(rhallpin, INPUT);
5
pinMode(mp, OUTPUT);
6
pinMode(piep, OUTPUT);
7
pinMode(relaishpin, OUTPUT);
8
pinMode(relaisrpin, OUTPUT);
9
analogWrite(iset,200);
10
anlaufvz = drehtvz - 100;
11
  EEPROM.get(0, getlinks);
12
  EEPROM.get(2, getrechts);
13
  EEPROM.get(4, getpruef);
14
pruefsumme = ((getlinks + getrechts) + getpruef);
15
if (pruefsumme == 5431){
16
  drehungenlinks = getlinks; drehungenrechts = getrechts; digitalWrite(mp,HIGH);}
17
  else{drehungenlinks = drehungenende; drehungenrechts = drehungenende; digitalWrite(mp,LOW);}  
18
}
19
void eepromschreiben(){
20
pruefsumme = (5431 - (drehungenlinks + drehungenrechts));  
21
if(hoch == HIGH){
22
  EEPROM.put(0, drehungenende);
23
  EEPROM.put(2, drehungenende); 
24
  EEPROM.put(4, 0);}  
25
  else{
26
  EEPROM.put(0, drehungenlinks);
27
  EEPROM.put(2, drehungenrechts); 
28
  EEPROM.put(4, pruefsumme); 
29
}}  
30
void loop() {
31
if(analogRead(acpin) > 500){volt = HIGH;}                                  // >12V Tatfo hat 15VAC an Steuerwicklung
32
  else{volt = LOW;}
33
if(volt == LOW){spggutist = millis();                                      // Monoflop
34
  if(spggutist - spggutstart > spggutvz){spggut = LOW;}}
35
  else{spggutstart = millis(); spggut = HIGH;} 
36
if(spggut != spgguta){                                                     // Puls bei abfallender Flanke
37
   if(spgguta == HIGH){speichern =HIGH;}}
38
   else{speichern = LOW;}  
39
spgguta = spggut;
40
if(speichern == HIGH){ eepromschreiben();}

LG
old.

von Wolfgang (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Ansonsten, ist es auch nur eins der Suffixe, welches der Gcc
> versteht/akzeptiert.

Akzeptiert ist wohl richtig. Genauso könntest du auch schreiben:
1
float fImRam = 0.0q;
Ich zitiere mal aus der oben verlinkten Beschreibung:
"If a suffix is not specified, the floating-point constant has a type 
double."

von oldeurope O. (Gast)


Angehängte Dateien:

Lesenswert?

Anbei Bilder von der "Hardware".
Das UNO-Board ohne Atmega dient zum Sketchhochladen.
Die LED an mp zeigt, dass die Prüfsumme korrekt erkannt
wurde, also das EEPROM in Ordnung ist.

Noch ein Bild vom Innenleben eines Tischbeins.
Dort befindet sich ein Magnetring und zwei Hallelemente.
Am Ausgang ist das, was auch ein Rotary bereitstellt.
Ich brauche keine Rotary-lib. Ein Hallelement reicht mir
weil ich die Drehrichtung kenne.

LG
old.

von Einer K. (Gast)


Lesenswert?

Wolfgang schrieb:
> Akzeptiert ist wohl richtig. Genauso könntest du auch schreiben:float
> fImRam = 0.0q;

Du irrst!
1
sketch_feb01a:3:1: error: unsupported non-standard suffix on floating constant
2
    3 | float fImRam = 0.0q;
3
      | ^~~~~
4
5
exit status 1
6
unsupported non-standard suffix on floating constant



Ich möchte dir raten, das Zeugs, was du da verlinkst und zitierst, 
selber mal aufmerksam zu lesen und zu versuchen es zu verstehen.

von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> Oder mit mehr Softwareaufwand die Schreibpositionen ständig verändern.

Das wäre jetzt noch das I-Tüpfelchen.
Bitte um Arduino-Beispiele dafür,
oder strickt das bitte in den Code hier.

LG
old.

von Joachim B. (jar)


Lesenswert?

Aus der W. schrieb:
> Bitte um Arduino-Beispiele dafür,
> oder strickt das bitte in den Code hier.

etwas Arbeit lasse ich dir
Beitrag "Re: Arduino put() get() ein ppar Fragen dazu."

von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> etwas Arbeit lasse ich dir

Guter Witz. Ich mache hier die ganze Arbeit,
der einzig hilfreiche Beitrag von Euch:
Beitrag "Re: Arduino put() get() ein ppar Fragen dazu."
Dafür viel Trollbegleitung.
Ohne den Thread hier wäre ich genau so weit.
Mögen meine Beiträge anderen helfen, die sich erstmalig
mit dem EEPROM befassen.

Wenn ich das mit der Adressenrotation irgendwann mal
hinbekomme, bringe ich hier ein Beispiel.
Da dürft ihr euch dann auch drüber ärgern.
Das kleine Wissen darf ja nicht an die Öffentlichkeit, lach.

LG
old.

von Hugo H. (hugohurtig1)


Lesenswert?

Aus der W. schrieb:
> Guter Witz. Ich mache hier die ganze Arbeit,

Und für wen machst Du das?

Ist wohl einer Deiner üblichen Threads ...

von Einer K. (Gast)


Lesenswert?

Aus der W. schrieb:
> Mögen meine Beiträge anderen helfen, die sich erstmalig
> mit dem EEPROM befassen.

Bitte nicht!

Was du hier abgelassen hast, kann man vielleicht als "schlechtes 
Beispiel" weiterverwenden.
Aber mehr auch nicht.

Am Besten:
Man ignoriert das noch nicht einmal.

von oldeurope O. (Gast)


Lesenswert?

Hugo H. schrieb:
> Und für wen machst Du das?

Für mich. Und damit man im Netz eine Lösung findet.

Hugo H. schrieb:
> Ist wohl einer Deiner üblichen Threads ...

In dem das (kleine) Wissen öffentlich gemacht wird.

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Was du hier abgelassen hast, kann man vielleicht als "schlechtes
> Beispiel" weiterverwenden.
> Aber mehr auch nicht.

Danke für die Blumen. Dann ist meine Lösung sehr gut. :)

LG
old.

von Hugo H. (hugohurtig1)


Lesenswert?

Aus der W. schrieb:
> Für mich. Und damit man im Netz eine Lösung findet.

Quatsch - Du versuchst wieder andere machen zu lassen, was Du nicht 
kannst.

von oldeurope O. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Der baut ja auch Tische ohne Endschalter, die bei verschlissenem EEPROM
> die Mechanik verbiegen.

Anscheinend bin ich ja schon besser als so mancher Originalcode.
Freut mich. :)

LG
old.

von Einer K. (Gast)


Lesenswert?

Aus der W. schrieb:
> Anscheinend bin ich ja schon besser als so mancher Originalcode.
> Freut mich. :)

Merke dir:
> Manche Behauptungen sind so dermaßen falsch,
> dass noch nicht mal das Gegenteil wahr ist.

von oldeurope O. (Gast)


Lesenswert?

Nun ist auch die Betriebs- und EEPROM ok Anzeige
eingebaut.
1
void setup() {
2
pinMode(ueberlastpin, INPUT_PULLUP);
3
pinMode(lhallpin, INPUT);
4
pinMode(rhallpin, INPUT);
5
pinMode(mp, OUTPUT);
6
pinMode(piep, OUTPUT);
7
pinMode(relaishpin, OUTPUT);
8
pinMode(relaisrpin, OUTPUT);
9
analogWrite(iset,200);
10
anlaufvz = drehtvz - 100;
11
  EEPROM.get(0, getlinks);
12
  EEPROM.get(2, getrechts);
13
  EEPROM.get(4, getpruef);
14
pruefsumme = ((getlinks + getrechts) + getpruef);
15
if (pruefsumme == 5431){
16
  drehungenlinks = getlinks; drehungenrechts = getrechts; boolpruefsumme = HIGH;}
17
  else{drehungenlinks = drehungenende; drehungenrechts = drehungenende; boolpruefsumme = LOW;}  
18
}
19
void eepromschreiben(){  
20
if(hoch == HIGH){pruefsumme = (5431 - (drehungenende * 2));         // Für Netztrennung während dem Hochfahren
21
  EEPROM.put(0, drehungenende);
22
  EEPROM.put(2, drehungenende); 
23
  EEPROM.put(4, pruefsumme);}  
24
  else{pruefsumme = (5431 - (drehungenlinks + drehungenrechts));
25
  EEPROM.put(0, drehungenlinks);
26
  EEPROM.put(2, drehungenrechts); 
27
  EEPROM.put(4, pruefsumme);} 
28
}  
29
void loop() {
30
if(analogRead(acpin) > 500){volt = HIGH;}                            // >12V Tatfo hat 15VAC an Steuerwicklung
31
  else{volt = LOW;}
32
if(volt == LOW){spggutist = millis();                                // Monoflop
33
  if(spggutist - spggutstart > spggutvz){spggut = LOW;}}
34
  else{spggutstart = millis(); spggut = HIGH;} 
35
if(spggut != spgguta){                                               // Puls bei abfallender Flanke
36
   if(spgguta == HIGH){speichern =HIGH;}}
37
   else{speichern = LOW;}  
38
spgguta = spggut;
39
if(speichern == HIGH){ eepromschreiben();}
40
if(speichern == LOW){hzsist = millis();                             // Halt zum Speichern um Stromverbrauch zu reduzieren
41
  if(hzsist - hzsstart > hzsvz){hzs = LOW;}}
42
  else{hzsstart = millis(); hzs = HIGH;}
43
  digitalWrite(mp, (!hzs && boolpruefsumme));                       // Betriebs- und EEPROM ok Anzeige

Wirklich klasse was man mit Arduino machen kann.
Das macht Freude, ein Erfolg nach dem anderen. :-)

Aber wie so oft im Leben, was des einen Freud ist
des anderen Leid.
Sieht man sehr schon an den Trollbeiträgen hier

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Aus der W. schrieb:
> Wenn dem Teil vier mal am Tag der Saft abgedreht wird,
> sind die garantierten Zyklen nach etwa 6 Jahren erreicht.

Hopa, nach über 60 Jahren bei 100000 Zyklen.

Joachim B. schrieb:
> willst du nach dem "Kaputtschreiben" des
> EEPROMs lieber den µC wechseln oder lieber ein I2C EEPROM als DIP im
> 8-pol Sockel?

Nach 60 Jahren mal ein Update mit anderen Adressen machen.
Wenn das eeprom vorher defekt ist, kann man einen
Adresswechsel versuchen.

Joachim B. schrieb:
> Ich hatte mich bei diversen Arduino Nano lieber dafür entschieden das
> EEPROM eines RTC3231 Modul zu beschreiben welche es billiger als Ersatz
> gibt,
Wenn Du unnötige Löschzyklen machst, musst Du das eben auf Deine
Art lösen.

Aber danke für den Hinweis auf dieses interessante Modul.

LG
old.

von Joachim B. (jar)


Lesenswert?

Aus der W. schrieb:
> Wenn Du unnötige Löschzyklen machst

wer sagt das mit den unnötigen Löschcyclen?
Ach egal du pöbelst munter weiter, Hilfe willst du also nicht wirklich 
auch weil niemand dir hilft und du Programmiergott sowieso alle Probleme 
selber löst!

von W.S. (Gast)


Lesenswert?

Aus der W. schrieb:
> Wirklich klasse was man mit Arduino machen kann.
> Das macht Freude, ein Erfolg nach dem anderen. :-)
>
> Aber wie so oft im Leben, was des einen Freud ist
> des anderen Leid.
> Sieht man sehr schon an den Trollbeiträgen hier
>
> LG

Aus meiner Sicht ist das nicht 'klasse'. sondern eher bedenklich. Auch 
wenn es dir Freude macht (die ich dir selbstvertsändlich gönne).

Du hast im Laufe dieses Threads also eine Funktionalität hingekriegt, 
die dir gefällt - aber ich muß dich hier mal fragen, was du dabei 
tatsächlich gelernt hast.

Das Bedenkliche bei der ganzen Sache ist nämlich, daß die ganze 
Arduino-Welt ihre Benutzer dazu verführt, nach dem Benutzen all der 
vorgefertigten Dinge zu glauben, sie seien ab jetzt Fachleute und 
wüßten, wie die Dinge funktionieren, die sie grad eben benutzt haben.

Nein, zumeist wissen all diese Leute lediglich, welches Shield und 
welche Lib sie benutzen müssen - aber sie erlangen dabei keinerlei 
Fachwissen. Das ist der eigentliche Punkt.

Und? Was an Fachwissen hat du jetzt damit erlangt?

Nochwas:
Flash-ROMs und EEPROMs sind Speicher, die sich im Laufe der Zeit durch 
Lösch/Schreib-Vorgänge verbrauchen. Wenn dein Projekt lediglich ein paar 
Wochen halten soll, dann wirst du deren Lebensdauer wohl nicht 
überschreiten. Aber wenn es länger halten soll, mußt du dir Gedanken 
machen, wie du mit Schreibvorgängen sparsam umgehen solltest. Ich 
benutze für sowas eine Art verzögertes Schreiben: Jeder Schreibvorgang 
in das im RAM vorgehaltene struct, wo alles wichtige drin steht, setzt 
auch ein boolean, was anzeigt, DASS da was geschrieben worden ist. 
Zugleich wird ein Softwaretimer gestartet, der nach einer sinnvollen 
Zeit - z.B. 5 Sekunden oder nach Abschluß einer betreffenden Aktion - 
veranlaßt, daß der struct im RAM byteweise mit dem im EEPROM verglichen 
wird und bei Ungleichheit das betreffende Byte im EEPROM aktualisiert 
wird.

W.S.

von Einer K. (Gast)


Lesenswert?

W.S. schrieb:
> Das Bedenkliche bei der ganzen Sache ist nämlich, daß die ganze
> Arduino-Welt ihre Benutzer dazu verführt, nach dem Benutzen all der
> vorgefertigten Dinge zu glauben, sie seien ab jetzt Fachleute und
> wüßten, wie die Dinge funktionieren, die sie grad eben benutzt haben.
>
> Nein, zumeist wissen all diese Leute lediglich, welches Shield und
> welche Lib sie benutzen müssen - aber sie erlangen dabei keinerlei
> Fachwissen. Das ist der eigentliche Punkt.
>
> Und? Was an Fachwissen hat du jetzt damit erlangt?

Bitte!

Der TE ist keinesfalls der übliche Arduino User.
Nimm ihn bitte nicht als Maßstab.


Ansonsten ist das wieder das übliche Arduino Bashing
Basierend auf unbewiesenen Behauptungen, welche als Fakten verkauft 
werden.
Diskriminierendes Gewäsch.



W.S. schrieb:
> veranlaßt, daß der struct im RAM byteweise mit dem im EEPROM verglichen
> wird und bei Ungleichheit das betreffende Byte im EEPROM aktualisiert
> wird.
EEPROM.put() nutzt intern EEPROM.update(), welches genau diesen 
Vergleich macht. Offensichtlich ist dein Wissen über die Arduino Welt 
mangelhaft, sonst wäre dir das klar.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

@ufuf:
Du weist doch, dass W.S. von nix ne Ahnung hat, dass zeigt er doch auch 
in allen anderen Threads.
Auch wenn ich Failduino für nichts gutes halte, aber mit korrekten 
Fakten sollte man eben schon kommen anstatt mit dem WSschen gelaber.

von Einer K. (Gast)


Lesenswert?

Mw E. schrieb:
> für nichts gutes halte

Im Grunde ist mir das völlig wurscht, was der W.S. oder auch du, von 
Arduino haltet.

Ein bisschen ist es wie mit dem Pflaumenkuchen.
Einer mag ihn, der nächste halt nicht.
Aber ihn nicht zu mögen, kann niemandem das Recht geben, alle 
Pflaumenkuchenesser, oder Bäcker, zu diskriminieren.

von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> wer sagt das mit den unnötigen Löschcyclen?
Du, siehe Beitragszitat..

> Hilfe willst du also nicht wirklich
> auch weil niemand dir hilft und du Programmiergott sowieso alle Probleme
> selber löst!

Glaubst du ich setze mich hier heulend in die Ecke,
weil die Programmierarschlöcher hier ihr kleines Wissen
nicht weiter geben wollen oder können?

W.S. schrieb:
> Und? Was an Fachwissen hat du jetzt damit erlangt?

Ich kann Zahlen zuverlässig im EEPROM ablegen,
und kontrollieren ob der ausgelesene Wert plausibel ist.

W.S. schrieb:
> z.B. 5 Sekunden oder nach Abschluß einer betreffenden Aktion -
> veranlaßt, daß der struct im RAM byteweise mit dem im EEPROM verglichen
> wird und bei Ungleichheit das betreffende Byte im EEPROM aktualisiert
> wird.
Damit würdest Du häufiger als ich das EEPROM neu beschreiben.
Meine Methode wird ja auch im wiki hier, wenn auch nicht so ausgefeilt,
empfohlen.
Und was, wenn Du vor dem Zeitablauf den Netzstecker ziehst?
Dann ist ein alter Wert drin. Bei meiner Anwendung u.U. fatal.
Letzteres ist in put() schon dabei. Das sollte man Wissen,
wenn man den Oberlehrer macht. Und geschrieben hatte ich das hier
auch schon in anderem Zusammenhang:

Aus der W. schrieb:
> …. update wie bei put …

Ich wette, Du hast den Sketch weder gelesen noch verstanden
oder auch nur ansatzweise mitbekommen worum es sich handelt.

Arduino ist lernen durch Beispiele.

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Joachim B. schrieb:
> Programmiergott

Übrigens hatte vorher solche Lösungen gefunden:
http://shelvin.de/eine-integer-zahl-in-das-arduiono-eeprom-schreiben/
und dachte DAS bekomme ich nie hin.
Hatte schon versucht den int-Wert durch fünf zu Teilen
um mit Byte auszukommen.
Dann habe ich zum Glück den Kommentar von "Lemar" gelesen.
Und dann hier weiter gefragt.
Also von "Programmiergott" bin ich meilenweit entfernt.

Ich vermute die Befehle put() und get() sind später hinzugekommen,
damit Leute wie ich auch das EEPROM benutzen können.

LG
old.

von oldeurope O. (Gast)


Lesenswert?

Mw E. schrieb:
> @ufuf:
> Du weist doch, dass W.S. von nix ne Ahnung hat, dass zeigt er doch auch
> in allen anderen Threads.

Sagt einer, der hier noch gar nichts gebracht hat.
W.S. hat es zumindest versucht.
Offenbar zerfleischen sich die Zeh-Nerds hier gegenseitig.

Arduino Fanboy D. schrieb:
> Ansonsten ist das wieder das übliche Arduino Bashing

Den Fanboy kauft dir niemand mehr ab.
Du machst dir einen Spaß draus, Arduino-Nutzer zu veräppeln.
Bei mir schaffst du das nicht (mehr), was du ja inzwischen
gemerkt hast.

Sei froh, dass ich nicht als Gast schreiben kann.
(IP-Sperre)

LG
old.

von Carl D. (jcw2)


Lesenswert?

Wie man es aus der Werkstatt kennt:

- was nicht wissen und fragen.         -> OK
- (auch gute) Antworten bekommen.      -> OK
- Antworten nicht verstehen (wollen).  -> typisch
- es irgendwie hinbekommen (wenn auch schräg)     -> Glück gehabt
- Kommentare zur gefundenen "Lösung" "verbeißen". -> typisch
- sich als Märtyrer wähnen                        -> typisch

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

Carl D. schrieb:
> - (auch gute) Antworten bekommen.      -> OK
> - Antworten nicht verstehen (wollen).  -> typisch

Zeig mal ein Beispiel.

von W.S. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Ansonsten ist das wieder das übliche Arduino Bashing
> Basierend auf unbewiesenen Behauptungen, welche als Fakten verkauft
> werden.
> Diskriminierendes Gewäsch.

Nein, ist es eben nicht.

Es ist ne nette Leistung, so ein System aufzuziehen.
Es ist auch für ne Menge Zeugs benutzbar.
Das ist alles unbestritten.

ABER: Lies dir den Eröffnungpost nochmal durch:
Fragen über die grundlegendsten Dinge.
Ich räume ein, daß gerade C und C++ keine wirklich angenehmen 
Programmiersprachen sind und daß ich (sofern es mir möglich wäre) mir 
bessere Programmiersprachen für die diversen µC wünschen würde. Ist aber 
eben nur ein Wunschtraum und keine Realität.

Es ist, wie ich es geschrieben habe: Da wird Leuten die Möglichkeit 
eröffnet, daß sie damit alles mögliche realisieren können, ohne wirklich 
zu verstehen, was sie da tun. Das als solches ist ja nix Verwerfliches, 
aber indem man den Einsteigern den Weg so glattbügelt, lernen die eben 
auch nur, nach den bereits fertig vorgekauten Shields und Libs zu rufen. 
DAS IST DER KERN all dessen, was unsereinem an der ganzen Arduino-Welt 
eben nicht gefällt: Der fehlende Ansporn, die Dinge selbst zu verstehen.

Mir ist klar, daß die Faulheit einer unserer grundlegenden menschlichen 
Charakterzüge ist. Und wenn man mit dem Ruf nach einer Lib im Moment 
erfolgreicher ist, als sich selbst so weit zu bilden, daß man es selber 
kann, dann siegt eben die Faulheit.

Aber auf lange Sicht ist das ganz übelst, denn da entstehen Generationen 
von Leuten, die eben nur das benutzen können, was Andere ihnen zuvor 
schon mal vorgekaut haben. Wir hier in Europa leben genau davon, daß wir 
in vielen Dingen noch immer die Vorreiter sind, also Dinge realisieren, 
die zuvor eben noch niemand gekonnt hat. Arduino ist das Gegenteil 
davon: Benutzen, was Andere schon längst gekonnt haben.

Verstehe das mal in seiner vollen Bedeutung.

W.S.

von oldeurope O. (Gast)


Lesenswert?

Hugo H. schrieb:
> Ist wohl

Carl D. schrieb:
> Wie man

Eure Methoden erklärt:

"(1) Zu den Zersetzungsmethoden der Stasi gehörte die psychologische 
Vernichtung des Gegners. In der »Richtlinie Nr. 1/76 zur Entwicklung und 
Bearbeitung Operativer Vorgänge« vom Januar 1976 wird als Ziel 
beschrieben, Oppositionelle u.a. durch die »(…) systematische 
Diskreditierung des öffentlichen Rufes, des Ansehens und des Prestiges 
auf der Grundlage miteinander verbundener wahrer, überprüfbarer und 
diskreditierender, sowie unwahrer, glaubhafter, nicht widerlegbarer und 
damit ebenfalls diskreditierender Angaben; systematische Organisierung 
beruflicher und gesellschaftlicher Mißerfolge zur Untergrabung des 
Selbstvertrauens einzelner Personen (…)« zu zermürben."

Quelle:
https://www.facebook.com/Bjoern.Hoecke.AfD/posts/2551778641730073?


LG
old.

von W.S. (Gast)


Lesenswert?

Aus der W. schrieb:
> W.S. schrieb:
>> Und? Was an Fachwissen hat du jetzt damit erlangt?
>
> Ich kann Zahlen zuverlässig im EEPROM ablegen,
> und kontrollieren ob der ausgelesene Wert plausibel ist.

OK, das ist ja erstmal was.


> W.S. schrieb:
>> z.B. 5 Sekunden oder nach Abschluß einer betreffenden Aktion -
>> veranlaßt, daß der struct im RAM byteweise mit dem im EEPROM verglichen
>> wird und bei Ungleichheit das betreffende Byte im EEPROM aktualisiert
>> wird.
> Damit würdest Du häufiger als ich das EEPROM neu beschreiben.

Nein. Definitiv NICHT.
Denke mal nach:
Solange im struct im RAM nix geändert wird, entfällt auch die 
Notwendigkeit, den im EEPROM zu aktualisieren.
Solange ein Byte im struct im EEPROM nicht anders sein soll als es ist, 
entfällt auch die Notwendigkeit, es neu zu schreiben. Das trifft z.B. 
auf Variablen zu, die wie int oder long vielleicht nur an einer Stelle 
sich ändern. Also wenn z.B. ein int um 256 erhöht wird, bleibt da 
Lowbyte wie es ist. Sowas eben.

Und wenn die Aktualisierung bei deiner Anwendung (die hier keiner 
wirklich kennt) sofort vonnöten sein sollte, dann mußt du das eben 
berücksichtigen. Aber nimm mal einen Radio-Empfänger als Beispiel: Da 
dreht jemand an der Abstimmung auf der Suche nach einem Sender, der ihm 
gefällt. Sowas sollte man nicht sofort speichern. Da ist es gut, erst 
nach einigen Sekunden Stillstand am Drehknopf zu speichern, sonst ist 
der EEROM binnen weniger Wochen ausgeleiert.

W.S.

von oldeurope O. (Gast)


Lesenswert?

W.S. schrieb:
> Da wird Leuten die Möglichkeit
> eröffnet, daß sie damit alles mögliche realisieren können, ohne wirklich
> zu verstehen, was sie da tun. Das als solches ist ja nix Verwerfliches,
> aber indem man den Einsteigern den Weg so glattbügelt, lernen die eben
> auch nur, nach den bereits fertig vorgekauten Shields und Libs zu rufen.

https://www.mikrocontroller.net/attachment/443574/20200129b.jpg

Wo ist denn da das vorgekaute Shield? Ja ich habe die

#include <EEPROM.h>

verwendet. Dann ärgere Dich halt drüber, ich danke Arduino dafür.

LG
old.

von Einer K. (Gast)


Lesenswert?

W.S. schrieb:
> ABER: Lies dir den Eröffnungpost nochmal durch:

Ich sachte ja schon, lass den TE da raus.
Den kannste bestenfalls als abschreckendes Bespiel verwenden.
Aber doch nicht als Messlatte.

Der Rest ist wieder das übliche Arduino Bashing.
Gespickt mit unbewiesene Behauptungen und Diskriminierungen.

Denke da bitte noch mal (etwas sorgfältiger) drüber nach.

Tipp:
Je öfter du dir den Mist selber vorplapperst, desto fester glaubst du da 
selber dran.
Aber wahrer, wirds davon nicht.

von Carl D. (jcw2)


Lesenswert?

W.S. schrieb:
...
> Mir ist klar, daß die Faulheit einer unserer grundlegenden menschlichen
> Charakterzüge ist. Und wenn man mit dem Ruf nach einer Lib im Moment
> erfolgreicher ist, als sich selbst so weit zu bilden, daß man es selber
> kann, dann siegt eben die Faulheit.
>
> Aber auf lange Sicht ist das ganz übelst, denn da entstehen Generationen
> von Leuten, die eben nur das benutzen können, was Andere ihnen zuvor
> schon mal vorgekaut haben. Wir hier in Europa leben genau davon, daß wir
> in vielen Dingen noch immer die Vorreiter sind, also Dinge realisieren,
> die zuvor eben noch niemand gekonnt hat. Arduino ist das Gegenteil
> davon: Benutzen, was Andere schon längst gekonnt haben.
>
> Verstehe das mal in seiner vollen Bedeutung.
>
> W.S.

Zu meiner Schulzeit gab es einen vom 60, der sich mit so komischem Zeug, 
das mit Strom rechnet, befasst hat. Heute machen alle (ok, 50%) was mit 
Arduino und merken daß da was geht. Um denen die Libs zu bauen, reicht 
der eine (wie schon früher) aus. Aber der hat plötzlich 30, die sein 
Zeug nicht nur benutzen, sondern damit neues bauen. Das skaliert. Wir 
müssen das nicht so machen, das werden andere Weltregionen für uns 
übernehmen.
Als jemand, der die Grundlage für die Arbeit anderer schaffen kann (was 
bei W.S. sicher zutrifft) sollte man sich freuen und sich nicht darüber 
ärgern, daß die auch was hinbekommen. Und falls die einen "Höhenflug" 
bekommen, muß man sie halt auch mal wieder "erden". Meist ist das nicht 
besonders schwer.

von oldeurope O. (Gast)


Lesenswert?

W.S. schrieb:
> Und wenn die Aktualisierung bei deiner Anwendung (die hier keiner
> wirklich kennt) sofort vonnöten sein sollte, dann mußt du das eben
> berücksichtigen. Aber nimm mal einen Radio-Empfänger als Beispiel:

Warum? Du kennst meine Anwendung und hast Bilder davon.

Und wo Du über Radio-Empfänger sprichst, den AD7C VFO werde ich,
für meine Anwendungen, entsprechend dem hier umschreiben.

LG
old.

von Carl D. (jcw2)


Lesenswert?

Aus der W. schrieb:
> Hugo H. schrieb:
>> Ist wohl
>
> Carl D. schrieb:
>> Wie man
>
> Eure Methoden erklärt:
>
> "(1) Zu den Zersetzungsmethoden der Stasi gehörte die psychologische
> Vernichtung des Gegners. In der »Richtlinie Nr. 1/76 zur Entwicklung und
> Bearbeitung Operativer Vorgänge« vom Januar 1976 wird als Ziel
> beschrieben, Oppositionelle u.a. durch die »(…) systematische
> Diskreditierung des öffentlichen Rufes, des Ansehens und des Prestiges
> auf der Grundlage miteinander verbundener wahrer, überprüfbarer und
> diskreditierender, sowie unwahrer, glaubhafter, nicht widerlegbarer und
> damit ebenfalls diskreditierender Angaben; systematische Organisierung
> beruflicher und gesellschaftlicher Mißerfolge zur Untergrabung des
> Selbstvertrauens einzelner Personen (…)« zu zermürben."
>
> Quelle:
> https://www.facebook.com/Bjoern.Hoecke.AfD/posts/2551778641730073?
>
>
> LG
> old.

Also auch der letzte Punkt bestätigt.

Ich habe in der Schule gelernt, neben dem reinen Text auch die Quelle in 
eine Beurteilung mit einfließen zu lassen. Und diese ist seit Jahrzenten 
verbrannt. Mir wurde in der Schule nicht von den bösen Faschisten hinter 
der Mauer erzählt, sondern von denen, die unsere Vorfahren waren und was 
die getan haben. Da kann man den Grundton unter der hellblauen Tünche 
nicht so leicht übersehen.

Steht da eigentlich auch, daß jemanddem, regelmäßig anderen auf den 
Wecker geht, dies nicht vorgehalten werden darf?

von Hugo H. (hugohurtig1)


Lesenswert?

Aus der W. schrieb:
> Hugo H. schrieb:
>> Ist wohl
>
> Eure Methoden erklärt:
>
> "(1) Zu den Zersetzungsmethoden der Stasi gehörte die psychologische ...
> Quelle:
> https://www.facebook.com/Bjoern.Hoecke.AfD/posts/2551778641730073?

Mit der Stasi kennst Du Dich ja scheinbar aus und AfD-Nähe passt zu Dir 
und Deinem Benehmen.

Aus der W. schrieb:
> Sei froh, dass ich nicht als Gast schreiben kann.
> (IP-Sperre)
>
> LG
> old.

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

Hugo H. schrieb:
> Deinem Benehmen.

Genau das beschreibt H..

Als Gast hätte man mir ungewollt geholfen.
(Das steht auch so in meinem Blog!)
Um das zu vermeiden müssten die Moderatoren Euch
jedes mal die Identität der Gäste mitteilen was nicht geht.
Deshalb die IP-Sperre.

Du suggerierst bewusst was anderes, das ist die
beschriebene Stasimethode.

von Einer K. (Gast)


Lesenswert?

Aus der W. schrieb:
> Carl D. schrieb:
>> - (auch gute) Antworten bekommen.      -> OK
>> - Antworten nicht verstehen (wollen).  -> typisch
>
> Zeig mal ein Beispiel.

Kannst du doch selber nachlesen.

z.B. mein erstes Posting hier, wo ich dir gezeigt habe, wie man die 
.eeprom Section nutzt damit der Compiler die Adressberechnng selber 
durchführen kann.

Auch wurde dir das Ablegen der Daten in Strukturen empfohlen und 
offsetof()

Deine Antworten dazu:

Aus der W. schrieb:
> Dann wähle ich einfach zwei weit auseinander liegende Adressen.

Aus der W. schrieb:
> Du machst dir einen Spaß draus, Arduino-Nutzer zu veräppeln.

Das zeigt mehr als klar, dass du gute Antworten bekommen hast, sie aber 
in den Wind schlägst.
Über das "Warum du dich so verhältst?" kann ich nur spekulieren.
Aber es ist nicht das erste mal, dass du dich so anstellst.

von oldeurope O. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Das zeigt mehr als klar, dass du gute Antworten

Deine Antwort ist Müll.

Aus der W. schrieb:
> Welche Adresse benötige ich für den zweiten int-Wert?

Korrekte Antwort:
put() erkennt int und belegt zwei Adressen pro int Wert.
Also die übernächste Adresse.

Deine Antwort:
Stopfe die Daten ins EEPROM.                  (logisch!)
Überlasse die Adressberechnung dem Compiler.  (keine Antwort)

Warum frage ich?
Weil put() ja auch grundsätzlich float belegen könnte.
So habe ich es halt ausprobiert.

LG
old.

von Einer K. (Gast)


Lesenswert?

Aus der W. schrieb:
> Deine Antwort ist Müll.
Is klar...

von Carl D. (jcw2)


Lesenswert?

Arduino Fanboy D. schrieb:
> Aus der W. schrieb:
>> Deine Antwort ist Müll.
> Is klar...

Das darfst du ihm schon glauben, da kennt er sich aus ;-)

von Einer K. (Gast)


Lesenswert?

Carl D. schrieb:
> da kennt er sich aus ;-)

Ja?

David Dunning:
> Wenn jemand inkompetent ist, dann kann er nicht wissen,
> dass er inkompetent ist. […] Die Fähigkeiten, die man braucht,
> um eine richtige Lösung zu finden, [sind] genau jene
> Fähigkeiten, die man braucht, um eine Lösung als
> richtig zu erkennen.
Quelle Wikipedia

Da bietet man ihm eine Lösung, dicht am Ideal, und er nimmt sie noch 
nicht mal wahr.
Ich finde das schade.
So ist das eben, da hat jeder seinen eigenen Horizont.
Aber das dann als Müll zu bezeichnen, nur weil er es nicht versteht, 
oder verstehen will, ist schon gründlich daneben, wenn nicht gar schon 
etwas irre.

von oldeurope O. (Gast)


Lesenswert?

Jetzt blöden sie wieder zu und klopfen sich gegenseitig auf die
Schultern weil ich zuletzt einen guten Beitrag abgeliefert habe.

von Einer K. (Gast)


Lesenswert?

Kognitive Verzerrung?

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
Noch kein Account? Hier anmelden.