Nach Umstieg auf UNO R4 WiFi finde ich parity.h nicht

Hallo,

ich bin mit meinem Projekt von einem Uno R3 auf einen R4 WiFi gewechselt. Ich betreibe dabei eine DCF77 Uhr. Dazu benötige ich die Funktion parity_even_bit, die bislang in der util/parity.h zu finden war. Nun nicht mehr. Wie löse ich das Problem? Könnt ihr helfen?

Viele Grüße

Wolfgang

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Darf man fragen warum?

Dann schau dir doch die besagte Library an und versuche die für drine UNO R4 nachzubauen.

Hallo,

zunächst mal vielen Dank für die schnellen Reaktionen.

Ich bin auf den R4 WiFi umgestiegen, weil ich Daten über das Internet (ftp) senden will.

Ich habe es bislang so verstanden, dass die util/parity.h zu den sogenannten Core-Files gehört. Für den Uno R3: ja - für den R4: nein? Ich dachte, dass ich möglichweise nun noch irgenetwas nachladen muss...

Ein Nachtrag zum "Nachbau". Ich habe bei github gefunden, dass besagte Funktion dort in Assembler geschrieben ist. Wenn ich es richtig verstanden habe, gibt es beim R4 einen anderen Prozessor. D. h., dr "alte" Code geht nicht mehr.

die ist vermutlich in Assembler für den R3 geschrieben. Das wird für den R4 sowieso nicht passen.

lies mal hier:

DCF77 - Funkuhr • Wolles Elektronikkiste

und dann

Wenn ihr kein AVR Board (Arduino UNO, Nano, Mega, etc.) verwendet, dann bindet parity.h nicht mit ein und entkommentiert die Ersatzfunktion am Ende dieses und der folgenden Sketche.

für die Nachwelt:

//  source: https://wolles-elektronikkiste.de/dcf77-funkuhr
// use the following lines if you don't use an AVR MCU
bool parity_even_bit(uint8_t val){
 val ^= val >> 4;
 val ^= val >> 2;
 val ^= val >> 1;
 val &= 0x01;
 return val;
}

Oh nein! Den Artikel kenne ich natürlich und habe mich an ihm abgearbeitet - aber diesen Hinweis geflissentlich überlesen.

DANKE!!!!!

Wenn du damit eh am Internet bist, warum nutzt du dann nicht besser NTP, da sparst du den DCF77 komplett.

Gute Anregung - ich habe zunächst einfach nur mal die vorhandene Schaltung genommen. Dann hatte ich überlegt, sowohl das DCF77-, als auch das RTC-Modul zu ersetzen. Bin dann aber doch zu dem Schluss gelangt, die Zeit normalerweise aus der RTC zu nehmen und DCF77 - oder auch NTP - zum justieren zu nutzen. Es ist alles noch work in progress und ich bin für jede Anregung dankbar.
Übrigens: das ganze ist eine Zisternen-Überwachung (mit Ultraschall und Schwimmerschalter). Die Wasserstände möchte ich jetzt mit ftp auf einem NAS an der FritzBox speichern, um sie mit den Daten aus meinem Netatmo-Regensensor zu vergleichen. Daraus will ich Hinweise auf z. B. verstopfte Zulauffilter generieren....

Ok, bei mir läuft ähnliches, allerding aktuell auf einem ESP8266, zukünftig auf einem ESP32-S3. Und ich verwende ausschließlich NTP, ohne RTC. Anzeige auf einem Webserver mit Speicherung im Dateisystem (LittleFS) des ESP.

Gcc hat auch __builtin_parity() eingebaut... z.B. __builtin_parity(minutes)
ergibt 1 bei ungerader bzw. 0 bei gerader Bit-Zahl.
Außerdem gibt es noch __builtin_parityl(). Die kann 32 Bit. Damit kann die Parität vom Datum in einem Rutsch ermittelt werden.

Sicher?

Die Anzeige auf einem Webserver interessiert mich natürlich. Ich habe eine eigene domain mit eine Joomla Webseite. Irgendwie habe ich gehofft, dort ein modul zu finden, das mir Daten anzeigt, die ich per GET dorthin sende. Aber - ich bin nicht fündig geworden. Und so etwas selbst zu programmieren - da fehlt mir (inzwischen) zu viel Wissen.....

Nein ... verdammt ...wäre ja auch zu einfach gewesen. Beim AVR ist es drin...

Du kannst in Joomla auch eigene HTML- bzw. PHP-Seiten einbinden.
Ich habe das vor vielen Jahren mal gemacht, um für eine gewählte Klasse die Klassenarbeiten als PDF zu erstellen und auszugeben, damit die Eltern sich informieren können. Das Ganze basierte auf einer MySQL/MariaDB.

Also mal die Suchmaschine Deiner Wahl anwerfen.

Gruß Tommy

Da fehlt mir die Erfahrung, ich nutze die Website auf dem ESP im Filesystem nach den Beispielen von Fips.

Ich muss um Verzeihung bitten.
Der R4 kennt die Funktion sehrwohl!

#include <Streaming.h> // die Lib findest du selber ;-)
Print &cout = Serial; // cout Emulation für "Arme"

void setup()
{
  Serial.begin(9600);
  cout << F("Start: ") << F(__FILE__) << endl;

}

byte i;
void loop()
{
  cout << i << "   " << __builtin_parity(i) << endl;
  delay(1000);
  i++;
}

Sagt:

Start: E:\Programme\arduino\portable\sketchbook\sketch_jul22e\sketch_jul22e.ino
0   0
1   1
2   1
3   0
4   1
5   0
6   0
7   1
8   1
9   0
10   0
11   1
usw.

Na, dann kann ich das Durchgestrichene ja wieder durchstreichen :wink:

Ja, manchmal lohnt sich ein Test, wenn es auch die Doku so nicht unmittelbar hergibt.
Wenn man tiefer buddelt wird man das sicherlich auch finden.

z.B. Bit Operation Builtins (Using the GNU Compiler Collection (GCC))