Forum: Mikrocontroller und Digitale Elektronik Arduino Pro Mini Software RTC


von Daniel E. (danebn)


Lesenswert?

Hallo,

ich habe gerade ein Problem und hoffe ihr könnt mir helfen, falls es 
überhaupt eine Lösung dafür gibt.

Ich benutze einen Arduino Pro Mini, welcher einmal am Tag die aktuelle 
Uhrzeit per NTP abfragt. In der Zwischenzeit soll er über millis() die 
aktuelle Uhrzeit, bis zum nächsten mal aktualisieren, halten können.
Die Zeit muss nicht 100% genau sein, ca. 1 - 2 min Abweichung auf 24h 
sind kein Problem.
Das funktioniert auch bereits gut, allerdings möchte ich auch Energie 
sparen und somit LowPower verwenden.
Dabei bleibt allerdings millis() nicht aktiv.

Kennt jemand von euch eine Möglichkeit, um trotzdem während dem Sleep 
noch möglichst genau mitzuzählen?

Danke für eure Antworten

von Kilo S. (kilo_s)


Lesenswert?


von Sebastian R. (sebastian_r569)


Angehängte Dateien:

Lesenswert?

Du bräuchtest entweder einen Sleep-Modus, in dem die Timer-Clock-Source 
weiter läuft. millis() wird von Timer0 generiert.

Ansonsten bliebe nur noch der WDT, um den Controller in regelmäßigen 
Abständen (1x pro Sekunde oder so) aufzuwecken. Dazu muss man ihn halt 
so konfigurieren, dass er einen Interrupt auslöst und kein System Reset 
durchführt, wenn er triggert.

: Bearbeitet durch User
von Daniel E. (danebn)


Lesenswert?


von Daniel E. (danebn)


Lesenswert?

Sebastian R. schrieb:
> Ansonsten bliebe nur noch der WDT, um den Controller in regelmäßigen
> Abständen (1x pro Sekunde oder so) aufzuwecken. Dazu muss man ihn halt
> so konfigurieren, dass er einen Interrupt auslöst und kein System Reset
> durchführt, wenn er triggert.

Gibt es dafür irgendwo eine Anleitung?
Ich finde nur welche, um einen Reset auszuführen.

von Sebastian R. (sebastian_r569)


Lesenswert?

Da wirst du dich entweder von den fertigen Arduino-Libs trennen müssen 
oder du modifizierst eine WDT-Library so, dass sie eben nur einen 
Interrupt ausführt.

Schau dir mal im Datenblatt das WDIE-Bit, das WDE-Bit und das damit 
verbundene WDTCSR-Register an.

Es schadet nicht, trotz Arduino auch ein bisschen Bare-Metal mit dem AVR 
zu können. Ein bisschen Bitschubsen in Konfigurationsregistern ist 
definitiv praktisch zu beherrschen :)

Es gibt sicherlich auch normale C-Beispiele für WDT-Interrupts, die 
kannst du 1:1 so auch in deinen Arduino-Sketch übernehmen.

Zum Beispiel:
https://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard#Pennen_bis_der_Hund_bellt

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Sebastian R. schrieb:
> von den fertigen Arduino-Libs trennen müssen

Soweit mir bekannt, wird das mit dem "tennen" schwierig, da es keine 
fertige WDT Lib von Arduino gibt.
Vielleicht gibts eine, von irgendwem, im Netz.

Üblicherweise verwendet man die WDT Funktionen/Macros aus der AVR Libc.

Der RC Oszillator des WDT ist übrigens sehr ungenau und nicht 
kalibirierbar.

---

Da auch der Pro Mini, kein Stromsparwunder ist, ohne ihn zu 
modifizieren, wäre es evtl. angesagt eher einen nackten ATMega328p zu 
verwenden, und anstatt des übliche 8 oder 16MHz Quarzes/Resonators, 
einen Uhrenquarz einzusetzen.
Dafür dann Timer2 im asynchronen Modus betreiben.
Und den µC mit dem internen RC Oszillator, bei zb. 1 oder 8MHz 
betreiben.

Ein rudimentäres Beispiel könnte ich zeigen, wenn gewünscht.

von Daniel E. (danebn)


Lesenswert?

Ok, ich glaube das mit dem Watchdog Interrupt bekomme ich hin.

Aber wie kann ich dann die Zeit weiterzählen?
Oder soll ich mich einfach darauf verlassen, dass der Watchdog wirklich 
genau 1s braucht?

von Sebastian R. (sebastian_r569)


Lesenswert?

Der Watchdog wird nicht genau eine Sekunde brauchen. Wie ufuf schon 
sagte, ist der Oszillator für den WDT sehr ungenau und nicht 
kalibrierbar.

Im Prinzip ist es bei jedem Aufwachen eine Variable zu inkrementieren.

Müsstest halt ausprobieren, wie genau der Oszillator ist.

von Reiner Gast (Gast)


Lesenswert?

Daniel E. schrieb:
> Ok, ich glaube das mit dem Watchdog Interrupt bekomme ich hin.
>
> Aber wie kann ich dann die Zeit weiterzählen?
> Oder soll ich mich einfach darauf verlassen, dass der Watchdog wirklich
> genau 1s braucht?

Ich habe das bei Bedarf (allerdings ohne Arduino Umgebung) so gemacht:

Den WDT benutzen, um 1 Sekunde schlafen zu gehen und im Anschluss die 
Uptime das Controllers (durch eine eigene globale Variable erfasst) 
einfach um eine Sekunde manuell erhöht.

BTW: Eine gute Routine für die WDT Nutzung zum Schalfenlegen findest 
sich hier: https://jeelabs.org/pub/docs/jeelib/

von Daniel E. (danebn)


Lesenswert?

Reiner Gast schrieb:
> Den WDT benutzen, um 1 Sekunde schlafen zu gehen und im Anschluss die
> Uptime das Controllers (durch eine eigene globale Variable erfasst)
> einfach um eine Sekunde manuell erhöht.

Ok so ähnlich habe ich es mir auch schon gedacht, wusste nur nicht, ob 
das genau genug ist.

Zur Zeit verwende ich LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF).
Müsste also thoretisch auch das selbe sein, wenn ich nach dem Aufwachen 
einfach 8s zu meine Zeit addiere oder?

von Reiner Gast (Gast)


Lesenswert?

Daniel E. schrieb:
> Zur Zeit verwende ich LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF).
> Müsste also thoretisch auch das selbe sein, wenn ich nach dem Aufwachen
> einfach 8s zu meine Zeit addiere oder?

Sollte dann so funktionieren...
Und wie du geschrieben hast, kommt es auf den gesamten Tag ja nicht so 
sehr auf die Genauigkeit an, d.h. ein bisschen Abweichung kann 
auftreten.

Beitrag #5687124 wurde von einem Moderator gelöscht.
Beitrag #5687158 wurde von einem Moderator gelöscht.
Beitrag #5687176 wurde von einem Moderator gelöscht.
Beitrag #5687193 wurde von einem Moderator gelöscht.
Beitrag #5687201 wurde von einem Moderator gelöscht.
von Schuppeste (Gast)


Lesenswert?

Der timer ist wirklich blöd gewählt.. Kann man aber ändern.

Hab da mal was gemacht, keine Ahnung ob das mit der neuen die 
funktioniert.

https://github.com/schuppeste/Arduino-Timer-Switch

von Ralph S. (jjflash)


Lesenswert?

Daniel E. schrieb:
> ca. 1 - 2 min Abweichung auf 24h

Auch wenn man es nicht glauben mag: 1 - 2 Min. / 24h mittels internem 
Oszillator, millis() und WDT ist schon "sportlich".

1% Abweichung vom Takt sind am Tag schon 864 Sekunden ( = 14,4 Minuten) 
falsch !!!

von Daniel E. (danebn)


Lesenswert?

Ich habe es jetzt so probiert.
Kann jemand sehen, wieso ich dabei jedes Mal beim Uhrzeit aktualisieren 
ca. 750ms verliere und somit schon nach ein paar Minuten zu viel 
Abweichung habe?

Zur Erklärung:
i_NTP_millis= gespeicherte Millis beim Empfangen der Uhrzeit vom Server
i_actual_millis = aktive Zeit des Arduinos
l_actual_time_millis = die vergangenen millis ab dem Empfangen der 
Uhrzeit vom Server
i_actual_seconds /i_actual_minutes /i_actual_hours = Umgerechnete Zeit 
aus l_actual_time_millis
1
void setup() {
2
  //...
3
  // Hier wird vorher die Uhrzeit im void setup vom NTP Server geladen
4
  NTP_Time = RtcDateTime(str_Jahr.toInt(),str_Monat.toInt(),str_Tag.toInt(),str_Stunde.toInt(),str_Minute.toInt(),str_Sekunde.toInt());
5
6
  l_actual_time_millis = (millis() - i_NTP_millis);
7
  i_actual_millis = millis();
8
}
9
10
void loop() { 
11
  //aktuelle Zeitdifferenz berechnen
12
  int i_actual_seconds = ((l_actual_time_millis / 1000) % 60);
13
  int i_actual_minutes = ((((l_actual_time_millis / 1000) - i_actual_seconds) / 60) % 60);
14
  int i_actual_hours = (((((l_actual_time_millis / 1000) - i_actual_seconds) / 60) - i_actual_minutes) / 60);
15
16
  //Überlauf kontrollieren und übertragen
17
  if ((NTP_Time.Second() + i_actual_seconds) >= 60) {
18
    i_actual_seconds = (NTP_Time.Second() + i_actual_seconds - 60);
19
    i_actual_minutes += 1;
20
  }
21
  else {
22
    i_actual_seconds = (NTP_Time.Second() + i_actual_seconds);
23
  }
24
  
25
  if ((NTP_Time.Minute() + i_actual_minutes) >= 60) {
26
    i_actual_minutes = (NTP_Time.Minute() + i_actual_minutes - 60);
27
    i_actual_hours += 1;
28
  }
29
  else {
30
    i_actual_minutes = (NTP_Time.Minute() + i_actual_minutes);
31
  }
32
33
  if ((NTP_Time.Hour() + i_actual_hours) >= 24) {
34
    i_actual_hours = ((NTP_Time.Hour() + i_actual_hours) % 24);
35
  }
36
  else {
37
    i_actual_hours = (NTP_Time.Hour() + i_actual_hours);
38
  }
39
40
  //aktuelle Zeit speichern
41
  actual_Time = RtcDateTime(NTP_Time.Year(),NTP_Time.Month(),NTP_Time.Day(),i_actual_hours,i_actual_minutes,i_actual_seconds);
42
43
  Serial.print(String(actual_Time.Hour()));
44
  Serial.print(F(":"));
45
  Serial.print(String(actual_Time.Minute()));
46
  Serial.print(F(":"));
47
  Serial.println(String(actual_Time.Second()));
48
49
  Serial.flush();
50
  i_actual_millis = (millis() - i_actual_millis);
51
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
52
  
53
  l_actual_time_millis = (l_actual_time_millis + 8000 + i_actual_millis);
54
  i_actual_millis = millis();
55
}

von Daniel E. (danebn)


Lesenswert?

Ralph S. schrieb:
> 1% Abweichung vom Takt sind am Tag schon 864 Sekunden ( = 14,4 Minuten)
> falsch !!!

Ok, so hab ich es noch nicht gerechnet :(

von Spaßverderber (Gast)


Angehängte Dateien:

Lesenswert?

Daniel E. schrieb:
> Kann jemand sehen, wieso ich dabei jedes Mal beim Uhrzeit aktualisieren
> ca. 750ms verliere und somit schon nach ein paar Minuten zu viel
> Abweichung habe?

Weil
> LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

eben keine 8 Sekunden sind, sondern nur so Pi-Mal-Daumen ±50%

die leiten sich aus dem 128kHz WDT-Oszillator ab, und der ist nochmal um 
Größenordnungen ungenauer als der integrierte 8MHz-Oszi.

von Einer K. (Gast)


Lesenswert?

Daniel E. schrieb:
> Ich habe es jetzt so probiert.

Um den Millis Wert um 8 Sekunden zu erhöhen, damit die millis() Funktion 
möglichst genaue Werte liefert:
1
// in eine Funktion, nach dem Wecken
2
extern volatile unsigned long timer0_millis;
3
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
4
{
5
  timer0_millis += 8000;
6
}

Den hier konstanten Wert 8000 kann man auch noch Temperaturabhängig 
anpassen.
Damit wirds etwas genauer ...

von Daniel E. (danebn)


Lesenswert?

Arduino Fanboy D. schrieb:
> Um den Millis Wert um 8 Sekunden zu erhöhen, damit die millis() Funktion
> möglichst genaue Werte liefert:
> // in eine Funktion, nach dem Wecken
> extern volatile unsigned long timer0_millis;
> ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
> {
>   timer0_millis += 8000;
> }
>
> Den hier konstanten Wert 8000 kann man auch noch Temperaturabhängig
> anpassen.
> Damit wirds etwas genauer ...

Danke, aber ich habe die Befürchtung das nicht genau genug hin zu 
bekommen.
Werde vermutlich beim RTC-Modul bleiben müssen.

von Einer K. (Gast)


Lesenswert?

Daniel E. schrieb:
> Werde vermutlich beim RTC-Modul bleiben müssen.

Wie schon gesagt, die Alternative ist ein Uhrenquarz.
Denn weitreichendes Stromsparen ist mit einem unmodifizierten Pro Mini 
nicht zu machen.

Alleine Regler und PowerLED ziehen ein zigfaches des Stroms im Schlaf.
Die LED des RTC Moduls, falls vorhanden, noch gar nicht mit 
eingerechnet.
Auch die I2C Kommunikation braucht Zeit, und damit Strom.

von Hunting (Gast)


Lesenswert?

wie kann denn der NTP ohne Netzwerkanschluß??

von Daniel E. (danebn)


Lesenswert?

Hunting schrieb:
> wie kann denn der NTP ohne Netzwerkanschluß??

GSM Modul

von Daniel E. (danebn)


Lesenswert?

Arduino Fanboy D. schrieb:
> Wie schon gesagt, die Alternative ist ein Uhrenquarz.
> Denn weitreichendes Stromsparen ist mit einem unmodifizierten Pro Mini
> nicht zu machen.
>
> Alleine Regler und PowerLED ziehen ein zigfaches des Stroms im Schlaf.
> Die LED des RTC Moduls, falls vorhanden, noch gar nicht mit
> eingerechnet.
> Auch die I2C Kommunikation braucht Zeit, und damit Strom.

Bekomme ohne Power LED und mit MCP1703 statt dem Spannungsregler,
RTC ebenfalls ohne Power LED,
GSM Modul nur wenn gebraucht über LT1529 geschaltet

mit 4x1,5V AA Batterien bereits eine sehr gute Laufzeit zusammen.

Der erste Test läuft seid einem Monat im Freien (natürlich in einem 
Gehäuse) und die Lithium Batterien haben noch 6,75V.
Dabei ist es alle 8s aktiv, um einen Sensor zu checken und sendet einmal 
am Tag ein SMS (deshalb hätte ich auch einmal am Tag die Zeit über NTP 
aktualisiert)


Mich hat nur immer die zusätzliche Batterie am RTC-Modul gestört, aber 
mit der werde ich leben müssen, solange ich keinen größeren Umbau machen 
möchte

von Christian J. (Gast)


Lesenswert?

Daniel E. schrieb:
> GSM Modul

GSM stellt dir eine Uhrzeit bereit! Ich habe genau das gleiche Problem 
gehabt wie du und mache das über den wdt Timer, manuell!

Moment....

/* RTC Zeit aktivieren (erzeugt einiges an Ausgaben) */
SIM800_SendAT("AT+CLTS=1\r\n", "OK");
1
int SIM800_GetTimeDate(timestamp_t *timestamp)
2
{
3
  char  answer[64];
4
  
5
  flags.TimeStampIsValid = false;
6
  
7
  SIM800_GetResponse("AT+CCLK?\r\n",answer);
8
  if (!strstr(answer, "OK")) 
9
    return 0;
10
  
11
  /* Ziehe von allen Zeichen '0' ab = Offset der Zahlen in ACII */
12
  for (uint8_t i = 0; i < sizeof(answer)-1; i++)
13
    answer[i] = answer[i]- '0';
14
  
15
  timestamp->year   =  (answer[10] * 10 + answer[11]);
16
  timestamp->month =  (answer[13] * 10 + answer[14]);
17
  timestamp->day   =  (answer[16] * 10 + answer[17]);
18
  timestamp->hour   =  (answer[19] * 10 + answer[20]);
19
  timestamp->min   =  (answer[22] * 10 + answer[23]);
20
  timestamp->sec   =  (answer[25] * 10 + answer[26]);  
21
  
22
  flags.TimeStampIsValid = true;
23
  
24
  return 1;
25
}
26
27
void Init_WDT()
28
{
29
    /*** Setup the WDT ***/
30
    cli();
31
    /* Clear the reset flag. */
32
    MCUSR &= ~(1<<WDRF);
33
    /* In order to change WDE or the prescaler, we need to
34
     * set WDCE (This will allow updates for 4 clock cycles).
35
     */
36
    WDTCSR |= (1<<WDCE) | (1<<WDE);
37
    /* set new watchdog timeout prescaler value */
38
    WDTCSR = 1<<WDP1 | 1<<WDP2; /* 1 seconds */
39
    /* Enable the WD interrupt (note no reset). */
40
    WDTCSR |= _BV(WDIE);
41
    sei();
42
}
43
44
void enterSleep(void)
45
{
46
  Set_LED(LED_GRN,AUS);
47
48
  /* Serielle muss runter gefahren werden */
49
  #ifdef DEBUG
50
    Serial.flush();
51
    while (Serial.available());          // Serial auslutschen
52
    Serial.end();                // Serial abschalten
53
  #endif
54
55
  /* Die CPU wacht nach 1 Sekunden wieder auf */
56
  wdt_reset();
57
  set_sleep_mode(SLEEP_MODE_PWR_SAVE);
58
  sleep_enable();
59
60
  /* ---------- Now enter sleep mode. -------- */
61
  sleep_mode();
62
  sleep_disable();
63
  /* ---------- Exit sleep mode. ------------- */
64
65
  #ifdef DEBUG
66
    Serial.begin(BAUDRATE);
67
    while(!Serial);
68
  #endif
69
  Set_LED(LED_GRN,EIN);
70
71
}

von Uhrmacher (Gast)


Lesenswert?

Daniel E. schrieb:
> Mich hat nur immer die zusätzliche Batterie am RTC-Modul gestört,

Was ist daran so schlecht? Die Batterie hält Jahre!
Da hast du inzwischen deinen Controller schon mehrmals
wieder in die Hand genommen.

von Christian J. (Gast)


Lesenswert?

Wenn er ein GSM Modul verwendet ist da eine RTC drin, die nach der 
Atomuhr gestellt wird und auch allein weiterläuft! Die Uhrzeit wird 
automatisch im 2G Netz beim einloggen bereit gestellt und mit der 
internen RTC synchronisiert. Die Anfrage kann jederzeit passieren, auch 
bei deakiviertem GSM Modul (HF Teil aus)

AT+CCLK?
<cr><lf>+CCLK: "18/12/08,16:45:56+04"
OK

geschrieben auf "Pro Mini", AVR 328P mit Arduino IDE...

von Bastler (Gast)


Lesenswert?

Daniel E. schrieb:
> möchte aber eigentlich von der zusätzlichen
> Batterie wegkommen.

Die RTC funktioniert wunderbar auch ohne Batterie - solange Strom da 
ist. Also würde sie auch neben dem schlafenden Arduino weiter laufen. 
Das Konstrukt würde genauso wie eine Lösung nur im Arduino halt bei 
Strom weg die Zeit verlieren. Die Batterie in der RTC ist nur dafür da 
dass die auch ohne externe Versorgung weiter läuft...

von Christian J. (Gast)


Lesenswert?

Sebastian R. schrieb:
> Müsstest halt ausprobieren, wie genau der Oszillator ist.

???

Der "Pro Mini 3.3v" in der besseren Version vom deutschen Vertrieb hat 
einen 8 Mhz Quarz drauf. Die 5V Version den 16 Mhz. Die Chinesen 
verzichten darauf und nehmen den internen 8 mhz Oszillator, dafür 
billigen. Mit der Oszi Version läuft nicht mal die Serielle genau, 
holpert und stolpert je nachdem wie warm und kalt es grad ist.

Lese ich dann noch, dass das Ding draußen liegt dürfte das nicht mehr 
als ein Schätzeisen sein, auch für eine externe RTC. Die sind auch nur 
so genau wie die Temperaturen stabil sind.

Aber alles firlefanz, die RTC ist schon da und sie ist atomgenau.

von Daniel E. (danebn)


Lesenswert?

Christian J. schrieb:
> GSM stellt dir eine Uhrzeit bereit! Ich habe genau das gleiche Problem
> gehabt wie du und mache das über den wdt Timer, manuell!

Frage die Zeit auch mit AT+CCLK? ab, nur das GSM-Modul wird nur einmal 
am Tag eingeschaltet.

Uhrmacher schrieb:
> Was ist daran so schlecht? Die Batterie hält Jahre!
> Da hast du inzwischen deinen Controller schon mehrmals
> wieder in die Hand genommen.

Das schon, aber plötzlich ist sie leer, wenn vlt gerade die Batterien 
gewechselt wurden und dann muss man nochmal ran ;)

Christian J. schrieb:
> Wenn er ein GSM Modul verwendet ist da eine RTC drin, die nach der
> Atomuhr gestellt wird und auch allein weiterläuft! Die Uhrzeit wird
> automatisch im 2G Netz beim einloggen bereit gestellt und mit der
> internen RTC synchronisiert. Die Anfrage kann jederzeit passieren, auch
> bei deakiviertem GSM Modul (HF Teil aus)

Da ich das GSM-Modul immer komplett stromlos mache läuft auch die RTC 
nicht weiter und somit muss ich es wieder erst mit dem Netz verbinden.

Bastler schrieb:
> Die RTC funktioniert wunderbar auch ohne Batterie - solange Strom da
> ist. Also würde sie auch neben dem schlafenden Arduino weiter laufen.
> Das Konstrukt würde genauso wie eine Lösung nur im Arduino halt bei
> Strom weg die Zeit verlieren. Die Batterie in der RTC ist nur dafür da
> dass die auch ohne externe Versorgung weiter läuft...

Muss ich mal probieren, wie hoch der Stromverbrauch bei dauerhafter 
Versorgung über die AA Batterien ist.

von Daniel E. (danebn)


Lesenswert?

Christian J. schrieb:
> Der "Pro Mini 3.3v" in der besseren Version vom deutschen Vertrieb hat
> einen 8 Mhz Quarz drauf. Die 5V Version den 16 Mhz. Die Chinesen
> verzichten darauf und nehmen den internen 8 mhz Oszillator, dafür
> billigen. Mit der Oszi Version läuft nicht mal die Serielle genau,
> holpert und stolpert je nachdem wie warm und kalt es grad ist.
>
> Lese ich dann noch, dass das Ding draußen liegt dürfte das nicht mehr
> als ein Schätzeisen sein, auch für eine externe RTC. Die sind auch nur
> so genau wie die Temperaturen stabil sind.
>
> Aber alles firlefanz, die RTC ist schon da und sie ist atomgenau.

Werde vermutlich sowieso auch mit RTC-Modul die Zeit jeden Tag per NTP 
aktualisieren

von Bulli (Gast)


Lesenswert?

So wie ich das gelesen habe, hat das RTC Modul eine Ladeschaltung, da 
sollte also keine normale CR2032 Batterie sondern ein Akku rein. D.h. du 
solltest die Batterie sowieso weglassen, oder falls doch als Backup 
erforderlich, einen Elko oder Supercap nehmen.

von Daniel E. (danebn)


Lesenswert?

Bulli schrieb:
> So wie ich das gelesen habe, hat das RTC Modul eine Ladeschaltung, da
> sollte also keine normale CR2032 Batterie sondern ein Akku rein. D.h. du
> solltest die Batterie sowieso weglassen, oder falls doch als Backup
> erforderlich, einen Elko oder Supercap nehmen.

Ladeschaltung ist entfernt und läuft mit CR2032

von Einer K. (Gast)


Lesenswert?

Christian J. schrieb:
> Der "Pro Mini 3.3v" in der besseren Version vom deutschen Vertrieb hat
> einen 8 Mhz Quarz drauf. Die 5V Version den 16 Mhz. Die Chinesen
> verzichten darauf und nehmen den internen 8 mhz Oszillator, dafür
> billigen. Mit der Oszi Version läuft nicht mal die Serielle genau,
> holpert und stolpert je nachdem wie warm und kalt es grad ist.

So ist das?
Ich kann dir leider nicht glauben.


Aus meiner Sicht stellt sich die Situation so dar:
A: Die originalen Pro Mini sind mit Keramik  Resonatoren ausgestattet.
B: Viele der Chinesischen Clone werden mit Quarz ausgeliefert.
C: Ein Pro Mini Clon, der mit dem internen RC Oszillator ausgeliefert 
wird, also ohne Quarz/Resonator, ist mir nicht bekannt. Wäre auch nicht 
kompatibel, da er nach brennen des originalen Bootloaders versagen 
würde.

von Christian J. (Gast)


Lesenswert?

Daniel E. schrieb:
> Da ich das GSM-Modul immer komplett stromlos mache läuft auch die RTC
> nicht weiter und somit muss ich es wieder erst mit dem Netz verbinden.

Ja, alles geht nicht, das eine oder das andere. Und 0.8ma im Standby 
sind wirklich nicht viel. RTC draußen kannste jedenfalls vergessen.

Klinke mich daher aus jetzt.

von Christian J. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Ich kann dir leider nicht glauben.

Dann lass es. Ich habe mich damit lange genug befasst und kaufe nur bei 
Maker-Shop, mit Quarz (!), nicht Keramik Resonator, NICHT interne 8 Mhz. 
Wer billig kauft, kauft eben zweimal, Und der Bootloader ist angepasst, 
bzw die Konfig Bits. Die China Kracher kann man nicht neuem Boot Loader 
bespielen, ohne einen externen Quarz an zu bringen, der Vorr. dafür ist. 
Ich habe den Müll einfach weg geworfen.

von Cyblord -. (cyblord)


Lesenswert?

Christian J. schrieb:
> kaufe nur bei
> Maker-Shop

Tzz also ich kaufe nur in der Maker-Manufaktur. Jedes Modul wird vom 
Chef-Hipster persönlich gesegnet (mit Soja Latte) und dann in Fairtrade 
Öko Schafwolle eingepackt.

von Einer K. (Gast)


Lesenswert?

Christian J. schrieb:
> Die China Kracher kann man nicht neuem Boot Loader
> bespielen, ohne einen externen Quarz an zu bringen,

Das würde ich mir gerne anschauen...
Hast du mal einen Link zu einem Pro Mini Clon ohne externem Oszillator, 
oder ein Bild davon?

von Christian J. (Gast)


Lesenswert?

Deutscher Händler, guter Mann! Sehr kulant und freundlich:

https://www.ebay.de/itm/Pro-Mini-3-3V-8Mhz-Arduino-komp-Board-Stromsparend/253093645576?epid=12024554124&hash=item3aed8e8d08:g:8OIAAOSwAWtb4LA2:rk:2:pf:0

China Müll mit "8 Mhz" aus RC (Verpol Diode auch noch eingespart)
https://www.ebay.de/itm/Pro-Mini-atmega168-3-3V-8M-Arduino-kompatibler-Nano-replace-Atmega328/152895006858?hash=item239940a88a:g:vh4AAOSwBp9aeDPD:rk:23:pf:0

Man muss genau hingucken, ob der Quarz drauf ist oder nicht.

Der Bootloader ist angepasst durch die Chinesen. Habe einen zerschossen 
durch zu viel stöpseln, anfassen etc. Liess sich nicht mehr neu brennen 
mit dem Diamex Programmer. Logisch, geht ja nur mit Quarz dran

von Cyblord -. (cyblord)


Lesenswert?

Christian J. schrieb:
> Deutscher Händler, guter Mann! Sehr kulant und freundlich:

Klar so kennt man die. Es geht nichts über den Teutschen Händler. Der 
schafft es magische Module zu haben, die niemand sonst anbieten kann.
Und das nur zum 4 fachen Preis. Wahnsinn.
Der Bootloader ist perfekt ausbalanciert, der Quarz schimmert viel 
stärker als beim Chinamann, dessen Module verursachen darüber hinaus 
Juckreiz im Hintern. Nicht kaufen!

> Man muss genau hingucken, ob der Quarz drauf ist oder nicht.

Du meinst das größte Bauteil auf dem ganzen Board? Ja da muss man schon 
Fuchs und Hase sein um das zu erkennen.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Cyblord -. schrieb:
> Klar so kennt man die. Es geht nichts über den Teutschen Händler. Der
> schafft es magische Module zu haben, die niemand sonst anbieten kann.

Ich lese deinen Schwachsinn schon lange nicht mehr. Lohnt sich daher 
nicht überhaupt auf mich zu reagieren. Geh woanders spielen....

von Cyblord -. (cyblord)


Lesenswert?

Christian J. schrieb:
> Der Bootloader ist angepasst durch die Chinesen. Habe einen zerschossen
> durch zu viel stöpseln, anfassen etc. Liess sich nicht mehr neu brennen
> mit dem Diamex Programmer. Logisch, geht ja nur mit Quarz dran

Du meinst du hast aus eigener Schuld die Fuses vom internen Oszillator 
auf externen Quarz umgestellt und maulst jetzt rum weil ein Board ohne 
Quarz nicht mehr funktioniert? Und irgendwie ist der Chinese jetzt dran 
schuld? Ich find dich echt niedlich irgendwie.
Aber trotzdem, versuch es mal mit Skill, dann weißt du was da so 
passiert und musst nicht auf halbgare Pauschalisierungen abheben. Wissen 
ist Macht.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Bulli schrieb:
> So wie ich das gelesen habe, hat das RTC Modul eine Ladeschaltung, da
> sollte also keine normale CR2032 Batterie sondern ein Akku rein. D.h. du
> solltest die Batterie sowieso weglassen, oder falls doch als Backup
> erforderlich, einen Elko oder Supercap nehmen.

Man darf sich die Schaltung auch mal ansehen (oder richtig lesen), die 
Ladeschaltung totlegen und eine CR2032 verwenden.

Christian J. schrieb:
> Deutscher Händler, guter Mann! Sehr kulant und freundlich:
> Ebay-Artikel Nr. 253093645576
>
> China Müll mit "8 Mhz" aus RC (Verpol Diode auch noch eingespart)
> Ebay-Artikel Nr. 152895006858

Auf beiden Bildern sehe ich einen Resonator bzw. Quarz, aber 
unterschiedliche Controller.

von Einer K. (Gast)


Lesenswert?

Christian J. schrieb:
> Ebay-Artikel Nr. 253093645576
> Ebay-Artikel Nr. 152895006858
> ...
> Man muss genau hingucken, ob der Quarz drauf ist oder nicht.

Der eine ist mit Resonator und der andere mit Quarz ausgestattet.

253093645576 Resonator
152895006858 Quarz

Also voll kompatibel, und mit dem original Bootloader lauffähig.
Aus der Ecke sind keine Probleme zu erwarten.


Manfred schrieb:
> aber unterschiedliche Controller.
Das ist eigentlich ok.
Auch das Original gibts mit beiden Controllern.

von Cyblord -. (cyblord)


Lesenswert?

Arduino Fanboy D. schrieb:
> Der eine ist mit Resonator und der andere mit Quarz ausgestattet.

Das kommt noch dazu. Beide Boards laufen ohne internen Oszi.
Die Variante mit Mini-Resonator (wird so was ähnliches wie die CSTCE 
Reihe sein) ist IMO sogar die kompaktere und modernere Variante.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Manfred schrieb:
>> aber unterschiedliche Controller.
> Das ist eigentlich ok.
> Auch das Original gibts mit beiden Controllern.

Ich weiß - aber sie wollen unterschiedliche Bootloader und Settings, 
schaue mal in der A*-IDE in die Boards.txt.

von Cyblord -. (cyblord)


Lesenswert?

Manfred schrieb:

> Ich weiß - aber sie wollen unterschiedliche Bootloader und Settings,
> schaue mal in der A*-IDE in die Boards.txt.

Was ganz normal ist, weil es eben unterschiedliche Controller sind. Aber 
wo ist jetzt nochmal genau das Problem?

von Manfred (Gast)


Lesenswert?

Cyblord -. schrieb:
>> aber sie wollen unterschiedliche Bootloader und Settings,
> Was ganz normal ist, weil es eben unterschiedliche Controller sind. Aber

> wo ist jetzt nochmal genau das Problem?
Da, war es wirklich der böse Chinese oder saß das Problem vor dem PC:
Christian J. schrieb:
> Der Bootloader ist angepasst durch die Chinesen.

Und na ja ...
Christian J. schrieb:
> Habe einen zerschossen durch zu viel stöpseln, anfassen etc. Liess sich nicht 
mehr neu brennen

So einen gibt es hier auch, weil der schlicht und einfach kaputt 
geschossen wurde, da kann der Chinalieferant garnichts für.

von Christian J. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:

> Der eine ist mit Resonator und der andere mit Quarz ausgestattet.
>
> 253093645576 Resonator
> 152895006858 Quarz

Ich hatte welche hier, die jetzt aber weg sind, wo der Resonator Platz 
leer war. Nur der Footprint war da. Und die auf 8Mhz liefen aber ständig 
Fehler in der Seriellen Ausgabe hatten. Finde die nicht mehr bei ebay. 
Man bekommt ja nicht unbed das was man bestellt. Das Problem ist aber 
weg jetzt seit ich die mit Quarz habe bzw Resonator.....

Den ARM kannste ja mit dem internen Osz laufen lassen, nur die Frage wie 
genau das noch ist. Für ne RTC reicht es nicht. Der 407 hier aber läuft 
mit dem Takt aus dem 16 Mhz schon seit einem Jahr sehr genau, keine 4 
Minuten Abweichungen seit letztem März.

von PittyJ (Gast)


Lesenswert?

Ein Kumpel hat mir eine RTC mit Goldcap aufgebaut.
Epson I2C RTC Chip und Goldcap zur Überbrückung der spannungslosen Zeit.
Der Chip ist recht genau, und er hält locker eine Woche durch, was das 
Ziel war.
Es geht auch ohne Batterie.

von Einer K. (Gast)


Lesenswert?

Christian J. schrieb:
> wo der Resonator Platz leer war.
Ich kann es immer noch nicht glauben.
Aber davon mal ab...

Wenn es so wäre:
Dann sind das ja genau die richtigen Kameraden um einen Uhrenquarz unter 
zu bringen.

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.