Hallo,
ich habe ein DCF-Empfangsmodul von Pollin
(https://www.pollin.de/p/dcf-77-empfangsmodul-dcf1-810054?gclid=EAIaIQobChMIgaf6jLqx6gIVh6ztCh03FQcaEAQYASABEgJ2avD_BwE)
Der Atmega läuft mit 3,3V. Auch das DCF-Empfangsmodul läuft mit der
selben Spannungsversorgung.
Die habe ich wie folgt an meinem Atmega328P/ Platine angeschlossen:
DCF - ATmega
VCC - 3,3V
GND - Masse
TCO - PB0
PON - PD7 (ist auf low)
zwischen VCC und GND am Empfangsmodul habe ich einen 10uF Elko
Mein Atmega hat einen externen 8MHz quarz
Das Signal taste ich alle 20 ms ab und berechne mir dann die Uhrzeit
(ist zumindest der plan).
Dies funktioniert leider nicht, da der Input am Atmega die ganze zeit
auf low ist.
Ich lasse mir in der ISR den Zustand des Input pins ausgeben
in main:
1
/* PB0 als Eingang fuer DCF (TCO) */
2
DCF77_TCO_REGISTER&=~(1<<DCF77_TCO_PIN);// PB0 als Eingang
Erst bin ich davon ausgegangen, dass der Empfänger defekt ist. Am
Logicanalyzer bekomme ich allerdings noch die Signale empfangen.
Anbei mal den schaltplan wie ich den empfänger angebunden habe.
Habe alles schon öfters nachgemessen und kontrolliert.
Es ist keine brücke eingelötet, die Verbindungen sind nur zu den Pins wo
sie hin sollen und Spannung und Masse ist auch richtig verbunden.
Woran könnte es liegen, dass der Input die ganze Zeit low ist?
Messe den Spannungspegel nach. Für High müssen es mindestens 2 Volt
sein.
Bei den mir bekannten Modulen darfst du keinen Pull-Up Widerstand
verwenden, weil dieser das DCF Modul zu stark belastet.
Allerdings sagst du, dass du keinen High Pegel bekommst. Wenn der
Pull-Up Widerstand zu stören würde, dann hättest du immer High und
keinen Low Pegel.
Johannes schrieb:> /* PB0 als Eingang fuer DCF (TCO) */> DCF77_TCO_REGISTER &= ~(1<<DCF77_TCO_PIN); // PB0 als Eingang> DCF77_TCO_PORT |= (1<<DCF77_TCO_PIN); // Interner Pull-up einschalten
Laut Beschreibung/Kommentaren braucht er einen PullDown am Ausgang.
Wo ist der in deiner Hardware?? Antwort: Nirgends.
Stattdessen programmierst du einen PullUp?
> Der Atmega läuft mit 3,3V. Auch das DCF-Empfangsmodul läuft mit der> selben Spannungsversorgung. Die würde ich zur Sicherheit etwas niedriger setzen.
Du bist an der Max.-Grenze.
Johannes schrieb:> Woran könnte es liegen, dass der Input die ganze Zeit low ist?
Warum fragst du dasselbe noch einmal in einem neuen Thread?
Die Sachlage hat sich doch nicht geändert seit dem letzten. Dauer-Low
ist nur durch ein Hardwareproblem erklärbar, also Kurzer zwischen PB0
und GND und/oder defekter Empfänger.
Ansonsten müßte sich Dauer-High ergeben, weil du hier:
> DCF77_TCO_PORT |= (1<<DCF77_TCO_PIN); // Interner Pull-up einschalten
den Pullup aktivierst.
Das kann doch nicht so schwer zu begreifen sein?!
> Am> Logicanalyzer bekomme ich allerdings noch die Signale empfangen.
Das ist eine neue Information. Da wäre die Frage zu stellen: welche
Stelle hast du für die Messung angetastet? Wirklich aussagekraftig ist
sie nur dann, wenn direkt an PB0 gemessen.
Wenn das der Fall war, dann bleibt aber immer noch eine Sache: was
steckt eigentlich hinter "uart_sendString"? Ist diese Routine überhaupt
in der Lage, aus einer ISR heraus aufgerufen zu werden. Oder
(wahrscheinlicher) auch: mehr als einmal aus einer ISR heraus aufgerufen
zu werden?
Wie wäre es, wenn du statt dessen an die LED an PB5 eine Kopie des
Status von PINB0 auszugeben? Damit hast du erstmal alle Unwägbarkeiten
der UART-Ausgabe vom Tisch...
Michael M. schrieb:> Laut Beschreibung/Kommentaren braucht er einen PullDown am Ausgang.
Quatsch mit Soße. Der hat einen PushPull-Ausgang und braucht weder
PullDown noch PullUp.
c-hater schrieb:> Quatsch mit Soße. Der hat einen PushPull-Ausgang und braucht weder> PullDown noch PullUp
Ob es Quatsch mit oder ohne ist...
In den Kommentaren steht es. Mehr kann ich nicht sagen. Pollin sagt erst
recht nix.
Johannes schrieb:> Woran könnte es liegen, dass der Input die ganze Zeit low ist?
Und täglich grüßt das Murmeltier --- wurde hier schon x-mal beantwortet.
Hardwaremäßig : Kein Pull-Up-Widererstand (!), Antenne absetzen und
ausrichten.
Zur Software in C kann ich leider nichts beitragen.
Michael M. schrieb:> Laut Beschreibung/Kommentaren braucht er einen PullDown am Ausgang.> Wo ist der in deiner Hardware?? Antwort: Nirgends.>> Stattdessen programmierst du einen PullUp?
Das steht aber nirgends im Datenblatt/Bedienungsanleitung
Stefan ⛄ F. schrieb:> Messe den Spannungspegel nach. Für High müssen es mindestens 2 Volt> sein.
mhh,
zwischen GND und PD7 (TCO von DCF) messe ich konstant 0,0V. Das zwar,
warum ich nur "0" raus bekomme. Aber kontakt zwischen PD7 und TC0 ist da
Für das zickige Pollin-DCF-Modul verwende ich folgende Anschaltung:
Beitrag "[Bascom/AVR] Uhr und DCF"
Der Pull-Up ist in diesem Fall eingeschaltet. Das Modul kann mit einige
Meter abgesetzt werden.
Stefan ⛄ F. schrieb:> Wo denn?
Text-Ausschnitt vom o.a. Link:
-Der Signal-Pin (TCO) ist mit dem Signalabnehmer und einem
10K-Widerstand zu verbinden, dessen anderes Ende mit GND verbunden wird.
Als ein PULL-DOWN(!!!!) Widerstand und nicht wie im Datenblatt direkt an
den MCU. Bei mir hat ein Pullup nicht funktioniert.
Alex D. schrieb:> Der Pull-Up ist in diesem Fall eingeschaltet.
Dann hast du erstens Glück, dass das Modul das überlebt hat und zweitens
würde es auch ohne Pullup funktionieren...
Michael M. schrieb:> Der Signal-Pin (TCO) ist mit dem Signalabnehmer und einem> 10K-Widerstand zu verbinden,
Dann lies mal den nächsten Beitrag:
"Den Ausführungen meines Vorredners muss ich widersprechen. Die alte
Pinbelegung war (bei allen mir bisher zugegangenen Modulen) korrekt.
Allerdings sollte der Ausgang möglichst nicht belastet werden, besonders
kapazitive Last ist kritisch. Wenn man dieses beachtet, funktioniert das
Modul einwandfrei. "
Alex D. schrieb:> Kein Pull-Up-Widererstand (!)
Wie groß muss den der Pull-Down-widerstan sein?
Alex D. schrieb:> Antenne absetzen und> ausrichten
Warum? Das Signal bekomme ich ja mit dem Logicanalyzer.
Aber auch wenn ich die noch mehr ausrichte, bleibt das Verhalten das
selbe
S. Landolt schrieb:>> TCO - PB0>> PON - PD7 (ist auf low)>>> Aber kontakt zwischen PD7 und TC0 ist da>> ??
Ja, da habe ich mich vertan. ich meinte, dass der kontakt zwischen PB0
und TC0 da ist.
zwischen PD7 und PON ist der Kontakt aber auch da.
Stefan ⛄ F. schrieb:> Klemme den DCF-77 EMpfänger mal ab, dann muss der Pin (wegen deinem> Pull-Up) sofort auf 3,3V gehen.
Ja, das macht der auch
c-hater schrieb:> Alex D. schrieb:>>> Der Pull-Up ist in diesem Fall eingeschaltet.>> Dann hast du erstens Glück, dass das Modul das überlebt hat und zweitens> würde es auch ohne Pullup funktionieren...
Du hast dir das Schaltbild garnicht angesehen, aber meckern !
Der Pullup hat überhaupt nichts mit dem Modul-Ausgang zu tun.
Stefan ⛄ F. schrieb:> Dann lies mal den nächsten Beitrag:
Dann muss sich der Käufer eben damit abfinden. So einen Schrott a)
anzubieten b) keine konkreten und zuverlässigen Daten in der
Beschreibung/"Bedienungsanleitung" ...
Wer das kauft-- selber Schuld.
Was übrig bleibt: Ausprobieren und evtl. Lehrgeld zahlen.
Alex D. schrieb:> Du hast dir das Schaltbild garnicht angesehen
Das stimmt. Weil es absolut nix mit der Situation des TO zu schaffen
hat. Der hat einfach das Modul direkt an den Mega geknotet.
Es macht also im Rahmen dieses Thread absolut keinen Sinn, über deine
Adapterschaltung zu diskutieren...
Johannes schrieb:> Wie groß muss den der Pull-Down-widerstan sein?
Lies endlich die Seite deines eigenen Links KOMPLETT durch..
> Stefan ⛄ F. schrieb:>> Klemme den DCF-77 EMpfänger mal ab, dann muss der Pin (wegen deinem>> Pull-Up) sofort auf 3,3V gehen.>> Ja, das macht der auch
Der (progr.) PullUp kann ja nichts bewirken, wenn der Empfänger
abgezogen ist.
Johannes schrieb:> Wie groß muss den der Pull-Down-widerstan sein?
Auch kein Pull-Down! Das Modul kann nur wenige Mikroampere liefern. Da
es eine Push-Pull Ausgangsstufe hat, sind weder Pull-Up noch Pull-Down
sinnvoll.
Michael M. schrieb:> Der (progr.) PullUp kann ja nichts bewirken, wenn der Empfänger> abgezogen ist.
Doch natürlich, er zieht den I/O Pin hoch.
Wenn der Pin mit DCF-Modul immer auf 0V liegt, dann ist entweder das DCF
Modul kaputt oder du hast in der Verbindung einen Kurzschluss.
c-hater schrieb:> Es macht also im Rahmen dieses Thread absolut keinen Sinn, über deine> Adapterschaltung zu diskutieren...
Da hast du wohl recht, nur, die Anschaltung funktioniert und lässt sich
auch leicht an 3,3V anpassen. Mein Modul hatte vorher schon einige Tage
im Papierkorb verbracht, ich habe es halt noch mal probiert und jetzt
läufts schon seit Jahren ohne Probleme.
Alex D. schrieb:> nur, die Anschaltung funktioniert
Das glaube ich, schließlich sie hat alle Eigenschaften, um funktionieren
zu können.
> und lässt sich> auch leicht an 3,3V anpassen.
Nur wird dann praktisch alles davon überflüssig... Die beste Anspassung
an 3.3V-Versorgung des µC ist also, sie einfach komplett wegzulassen...
Die einzige Ausnahme von diesem Ansatz ist, wenn man einen vom µC
entfernten Betrieb des Empfangsmoduls anstrebt, was u.U. durchaus
sinnvoll sein kann. Nur sind im Falle des TO diese Umstände
offensichtlich in keinster Weise relevant, da er ja folgendes behauptet:
> Am> Logicanalyzer bekomme ich allerdings noch die Signale empfangen.
Stefan ⛄ F. schrieb:> Doch natürlich, er zieht den I/O Pin hoch.
Du meinst am uC. Ok. Ws geht hier aber um das DCF-Modul; wenn ich das
trenne, nützt der PU im uC wenig.
Bin dann raus, es wird mir zu spaßig hier :-(
Stefan ⛄ F. schrieb:> dann ist entweder das DCF> Modul kaputt
Dann dürfte am Logicanalyzer ja auch nichts mehr ankommen.
Stefan ⛄ F. schrieb:> der du hast in der Verbindung einen Kurzschluss
Habe ich schon alles nachgemessen. Einen Kurzschluss ist nicht drinn.
Was kann ich denn noch machen? Die einen sagen einen Pull-down
widerstand (habe es jetzt auch in den Kommentaren von der Pollin-Seite
gelesen), die anderen sagen kein pull-down.
Dann wird gesagt, dass es falsch war das Modul direkt am controller zu
packen (obwohl nichts anderes bis auf den zusätzlichen Elko in der
Beschreibung stand).
Muss es so eine komplexe Schaltung wie in Beitrag "[Bascom/AVR] Uhr und
DCF" sein?
Würde es gerne mal zum laufen bekommen.
Johannes schrieb:> Dann dürfte am Logicanalyzer ja auch nichts mehr ankommen.
Du hast uns mit widersprüchlichen Informationen versorgt.
Es kann nicht sein, dass der Logic Analyzer ein pulsierendes Signal
anzeigt, während der gemessene Spannungspegel durchgehend 0 Volt ist.
> Was kann ich denn noch machen?
Richtig messen, am Besten mit einem Oszilloskop.
Oder du hängst mal diese oben gezeigte Transistorschaltung an das Modul,
dann hast du eine bequeme Statusanzeige (Blinkende LED) und einen
ordentlich belastbaren Ausgang.
> Würde es gerne mal zum laufen bekommen
c-hater hatte doch einen profunden Vorschlag:
> an die LED an PB5 eine Kopie des Status von PINB0 auszugeben
Wäre ein zehnzeiliges Programm, man könnte sämtliche pull-Varianten
ausprobieren, und zusätzlich mit dem Logikanalysator reinschauen.
Johannes schrieb:> Was kann ich denn noch machen? Die einen sagen einen Pull-down> widerstand (habe es jetzt auch in den Kommentaren von der Pollin-Seite> gelesen), die anderen sagen kein pull-down.
Die Kommentare bei Pollin stammen nicht von Pollin, sondern von
irgendwelchen Leuten, offensichtlich auch von Vollidioten.
Was Pollin zu dem Modul zu sagen hat, steht im sog. "Datenblatt" und
insbesondere auch auf dem schicken Papierzettel, den es zu jedem dieser
Module gratis dazu gibt.
Mehr ist nicht nötig, denn da steht alles drin, was wichtig ist.
> Muss es so eine komplexe Schaltung wie in Beitrag "[Bascom/AVR] Uhr und> DCF" sein?
Die hat gewisse vorteilhafte Eigenschaften, ist aber dafür ausgelegt,
dass der µC mit 5V betrieben wird. Im Prinzip könnte man sie aber mit
geringen Änderungen auch an mit 3.3V betriebenen µC verwenden.
Nötig ist sie aber meist nicht. Eigentlich nur, wenn die Versorgung des
µC von Hause aus Scheiße ist und/oder aus derselben Versorgung
irgendwelche Verbraucher mit hohen Transienten betrieben werden, z.B.
LEDs mit PWM-Steuerung oder als Matrix mit Multiplexansteuerung.
> Die einen sagen einen Pull-down widerstandHier bist du der einzige, der das sagt. Alle anderen haben dem
widersprochen. Auch auf deine Quelle dieser behauptung wurde dem
widersprochen. Brauchst du das schriftlich per Einschreiben, um es zu
glauben? Wenn du es nicht glaubst, dann probiere es doch einfach aus.
Danach weißt du es aus eigener Erfahrung.
> Dann wird gesagt, dass es falsch war das Modul direkt am> Controller zu packen
Das hat niemand gesagt. Auch hier bist du selbst wieder derjenige, der
Verwirrung stiftet. Du stehst Dir selbst im Weg.
> Muss es so eine komplexe Schaltung wie in> Beitrag "[Bascom/AVR] Uhr und DCF" sein?
Die Antwort hast du bereits vorher bekommen und gerade nochmal: Nein
muss nicht, geht aber.
> Würde es gerne mal zum laufen bekommen.
Vielleicht schläfst du mal ein paar Tage darüber und versuchst es später
wieder. Kaufe Dir zwischenzeitlich mal ein DSO-138, falls du kein
Oszilloskop besitzt.
Hier in Kapitel 12 hast du die Bestätigung, dass der direkte Anschluss
an den AVR funktioniert:
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%203.pdf
Da steht auch, wie du das Modul (ohne Mikrocontroller) testen kannst und
ein kommentiertes Programmierbeispiel.
Johannes schrieb:> Erst bin ich davon ausgegangen, dass der Empfänger defekt ist. Am> Logicanalyzer bekomme ich allerdings noch die Signale empfangen.
Ist einmal ein gutes Zeichen!
Laut Beschreibung haben die Pegel folgende Bedeutung :
• TCO= GND wenn die Trägeramplitude das Maximum erreicht.
• TCO= VDD wenn die Trägeramplitude absinkt (moduliert wird).
Das bedeutet, dass der 77,5kHz Träger erkannt wird.
TCO=VDD tritt einmal pro Sekunde für 100 bzw. 200ms auf wenn ein Zeichen
gesendet wird.
TCO ist die meiste Zeit (900 bzw. 800ms von 1000ms) auf GND. Aber am
Logikanalysator müsste ein kurzer Impuls sichtbar sein. Können wir das
Ergebnis vom LA sehen?
Wird die Ferritspule kurzgeschlossen, dann dürfte der Modul keinen
Träger sehen und TCO müsste für die Dauer dieses Kurzschlusses auf VDD
gehen.
Ich vermute das Problem liegt an der Auswertungssoftware.
Alex D. schrieb:> Für das zickige Pollin-DCF-Modul
ich hatte mir 4 Pollin Module zerschossen weil ich es aus +5V versorgte
lt. Beipackzettel! Ich zweifelte schon an mir.
Erst ein Thread hier machte mich darauf aufmerksam das die neueren NUR
mit maximal 3,3V versorgt werden dürfen.
Pollin schickte aber Ersatz mit neuen Beipackzetteln.
weiter gilt der DCF77 Ausgang darf nicht groß belastet werden das ist
aber mit einen OC
https://www.elektronik-kompendium.de/sites/slt/1206121.htmBC547
o.ä. locker zu erledigen, also den Collector vom BC am AVR über 4,7k bis
20k an AVR VCC.
Der Transistor sollte aber ans DCF77 Modul mit kurzen Leitungen.
Joachim B. schrieb:> Alex D. schrieb:>> Für das zickige Pollin-DCF-Modul>> ich hatte mir 4 Pollin Module zerschossen weil ich es aus +5V versorgte> lt. Beipackzettel! Ich zweifelte schon an mir.
Zur Versorgung habe ich 2,9V mit einer einfachen LED-Stabilisierung
verwendet.
Johannes schrieb:> ISR (TIMER1_COMPA_vect)> {> if ((PINB & (1<<DCF77_TCO_PIN))) uart_sendString("1");> else uart_sendString("0");> }
Ich sehe in der Interruptroutine keine Ansteuerungen der LED!
Ich hoffe die Baudrate ist genügend groß um ein Zeichen innerhalb der
20ms absetzen zu könnten. Werden die 20ms stark unterschritten gibts
Probleme mit dem UART.
Die Ausgabe an den UART halte ich gerade für Testzwecke nicht sehr gut
geeignet.
Wenn ich schon einen LA habe , *dann würde ich diesen beim Test auch
benutzen* !
Als Erstes würde ich den periodischen Aufruf der TimerInterruptroutine
überprüfen
Zu diesen Zwecke würde ich am Beginn der Interruptroutine eine
Portpin invertieren und mit dem LA beobachten. Der Pin müssen
abwechselnd für 20ms HIGH und für 20ms LOW sein.
Im nächsten Test würde ich den Portpin anstelle der UART Ausgabe
verwenden.
Den DCF Module abhängen und den Eingang manuell zwischen GND und VDD
wechseln. Das Signal am LA müsste im 20ms Raster dem Eingang folgen.
Erst dann würde ich den DCF Modul anschliessen um zu sehen was der LA
liefert.
Gutes gelingen !
Joachim B. schrieb:> also den Collector vom BC am AVR über 4,7k bis 20k an AVR VCC.
Da eignet sich auch der MC-interne Pullup. Man kann leicht zwischen
Pullup und Pulldown und hochohmig wechseln.
Gerald K. schrieb:> Man kann leicht zwischen> Pullup und Pulldown und hochohmig wechseln.
Die klassische AVR (wie der hier genannte Atmega328P) haben keinen
internen Pull-Down.
Gerald K. schrieb:> Beim MSP430 ist das Standard.
Mag sein, aber es geht hier um den ATmega328. Stifte bitte nicht noch
mehr Verwirrung. Du siehst doch dass der TO schon ganz durcheinander
ist.
Stefan ⛄ F. schrieb:> Du siehst doch dass der TO schon ganz durcheinander ist.
Ihm fehlt die systematische Vorgangsweise bei Fehlersuche.
Wenn ich Messgeräte, wie Logikanalysatoren, zur Verfügung habe, dann
muss ich sie auch konsequent einsetzen um eine qualifizierte Aussage
treffen zu können.
Was hat es mit der LA Messung auf sich? Gibt es Signale am Ausgang des
DCF-Moduls oder gibt es sie nicht? Wenn JA, wie sehen die Signale aus?
....
Ich fasse nochmal zusammen:
Der µC Eingang ist mit internem Pull-Up Konfiguriert. Ohne DCF-77 Modul
liegt der Pin ständig auf High. Mit DCF-Modul liegt er ständig auf Low.
Es liegt aber kein Kuzschluss nach GND vor und irgendwie (wie genau?)
ist es gelungen, das DCF-Signal mit einem Logic Analyzer sichtbar zu
machen.
Diese Aussagen stehen im Widerspruch zueinander, also bitte nochmal von
vorne anfangen:
1) Betreibe das DCF-77 Modul ohne Mikrocontroller. Prüfe dessen Ausgang
mit dem Logic Analyster. Kommt das Signal heraus?
2) Messe den Pegel am Eingang des Mikrocontroller mit ein Multimeter,
während das DCF-Modu noch nicht angeschlossen ist. Ist es High?
3) Schließe einen Widerstand mit 1...5kΩ an den Eingang des
Mikrocontrollers und an GDN an. Welche Spannung misst du dann?
4) Mache am Mikrocontroller einen Dauer-Reset, so dass dessen Eingang
permanent hochohmig ist. Zeigt der Logic-Analyzer nun immer noch das DCF
Signal erfolgreich an?
5) Jetzt danach macht es Sinn, das Verhalten deines Programms zu
überprüfen. Nimm das Reset Signal weg, so dass dein Programm startet.
Zeigt der Logic-Analyzer nun immer noch das DCF Signal erfolgreich an?
6) Erkennt dein Programm das DCF-Signal?
Stefan ⛄ F. schrieb:> 1) Betreibe das DCF-77 Modul ohne Mikrocontroller. Prüfe dessen Ausgang> mit dem Logic Analyster. Kommt das Signal heraus?
Sehr guter Vorschlag von Stefan zur Einkreisung des Problems.
Zur ständigen Anzeige der Qualität des DCF-Signals ist m.E. eine LED die
während der 100/200 msec Pausen aufleuchtet geeignet. Das DCF-Signal ist
so langsam, das alles gut zu erkennen ist. Man kann sogar die einzelnen
Bits mitschreiben und dann auf dem Papier in Datum und Uhrzeit umsetzen.
Ist das nicht machbar, hat auch ein Auswerteprogramm kaum eine Chance.
Die LED muss über eine, wie auch immer aufgebaute Schaltung, sehr
hochohmig (> 1MOhm) an das Modul angeschlossen werden.
Der To hat wohl aufgegeben. Kein gutes Zeichen. Jeder der sich für DCF
interessiert hat, sollte einmal im Leben ein DCF-Auswerteprogramm
geschrieben haben.
Alex D. schrieb:> Der To hat wohl aufgegeben. Kein gutes Zeichen. Jeder der sich für DCF> interessiert hat, sollte einmal im Leben ein DCF-Auswerteprogramm> geschrieben haben.
Das war doch garnicht das Problem des TO. Dessen Problem war, dass er
erst garnix sieht, was man auswerten könnte. In dieser Situation würde
auch mein eigener, hochentwickelter DCF77-Decoder einfach nur eins tun:
ganz jämmerlich aufgeben.
Was sollte er deiner Meinung nach auch sonst tun? Und inwiefern könnte
die Kenntnis des DCF77-Protokolls irgendwas daran ändern, dass man rein
garnix sieht, was auch nur entfernt danach ausschaut? Von einem
konstanten Pegel kann man das wohl annehmen...