Forum: Mikrocontroller und Digitale Elektronik PCF 8583 Problem


von Fire Eagle (Gast)


Lesenswert?

Hallo!

Ich hab ein Problem mit meinem PCF 8583 von NPX, den ich mit einem 
Atmega8 über I2C ansteuere.

Nach dem Reset beginnt er nicht, automatisch zu zählen, so wie es im 
Datenblatt steht:

Initialization
When power-on occurs the I2C-bus interface, the control and status 
register and all clock
counters are reset. The device starts time-keeping in the 32.768 kHz 
clock mode with the
24 hour format on the first of January at 0.00.00:00. A 1 Hz square wave 
with 50 % duty
cycle appears at the interrupt output pin (starts HIGH).

Ich kann zwar über I2C Daten z.B. ins Minuten und Sekundenregister 
schreiben und auch richtig wieder zurücklesen, aber zählen tut er weder 
von selbst noch wenn ich der Bit start counting lösche.

Habe alle pins bis auf OSCI und OSCO an den Atmega8 angeschlossen.
Liegt da vielleicht der Fehler?

Ich wäre für jede Hilfe dankbar.

von Fire Eagle (Gast)


Lesenswert?

Hi!

Nachmal zur Klarstellung:

Im Datenblatt steht: on-chip 32.768 kHz oscillator circuit

Braucht der jetzt trotzdem einen externen Quarz?

von Oliver J. (skriptkiddy)


Lesenswert?

Fire Eagle schrieb:
> Braucht der jetzt trotzdem einen externen Quarz?
Mal im Datenblatt nachgesehen? (Hint: 7.10)

Gruß Oliver

von Fire Eagle (Gast)


Lesenswert?

Hi!

So, habe jetzt hardwaremäßig alles richtig.
Leider funktioniert der Interrupt noch nicht.

Im Datenblatt steht:

When power-up occurs the I2C-bus interface, the
control/status register and all clock counters are reset.
The device starts time-keeping in the 32.768 kHz clock
mode with the 24 h format on the first of January at
0.00.00: 00. A 1 Hz square wave with 50% duty cycle
appears at the interrupt output pin (starts HIGH).

Ich habe in meinem Code keine Initialisierung des PCF8583, sondern polle 
zum Testen alle 0,5 Sekunden das Sekundenregister des PFC8583 via I2C. 
Er zähle auch nach Reset von 0 an wie gewollt, nur bekomme ich am Pin 7 
des PCF (Open drain Interrupt) kein 1Hz Signal (so wie es im Datenblatt 
steht). Pin7 habe ich über einen 4,7kOhm Wdst an INT1 meines Atmega8 
angeschlossen. Interrupt am ATmega ist richtig eingestellt, habe ich 
gtestet. Pin7 am PCF habe ich gemessen, der ist konstant auf 0,02 Volt.

Hat jemand eine Idee, was ich falsch machen?

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


Lesenswert?

>Im Datenblatt steht: on-chip 32.768 kHz oscillator circuit
>Braucht der jetzt trotzdem einen externen Quarz?
Nein natürlich nicht, der Quarz ist im DB nur zum Spaß eingezeichnet 
**ironie**

http://www.fritzler-avr.de/HP/Librarys/PCF8583_his.php

Damit ist der Oszillator gemeint, der nochn Quarz brauch.

von Fire Eagle (Gast)


Lesenswert?

Hallo!

Du hast scheinbar in meiner Antwort übersehen, das ich jetzt die 
Hardware = Quarz und Kondensator richtig habe.

Der PCF zählt ja richtig, nur der Interrupt funktioniert nicht.

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


Lesenswert?

Machmaln Pullup auf VDD, ich glaub der war open drain

von Fire Eagle (Gast)


Lesenswert?

Verwende einen 4,7KOhm pull-up, aber es tut sich nichts.
Stimmt vielleicht der Widerstands-wert nicht?
SCL und SDA verwenden aber auch 4,7KOhm

von Gerhard G. (g_g)


Lesenswert?

Hallo,


Fire Eagle schrieb:
> nur bekomme ich am Pin 7 des PCF (Open drain Interrupt) kein 1Hz Signal (so wie 
es im Datenblatt> steht)

Am Pin 7 wird doch nur im Alarmfall der Interrupt ausgelöst.

Wenn keine Alarmeinstellung und kein Alarmcontrolregister beschrieben 
wird macht das Teil nichts!

Verwechsle das nicht mit einem DS1307. Der kann wahlweise Interrupt und 
Taktungen von 1 Sekunde bis..xx am Int-Ausgang.


Gruß G.G.

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


Lesenswert?

nah, der pcf hat nachm reset zustand abern 1hz takt am \int

von Fire Eagle (Gast)


Lesenswert?

Hi!

Aber warum bekomme ich den 1 Mz Takt dann nicht zu sehen?

Ich hab auch probiert Register 0x08 = 0x09 (d.h. timer flag interrupt + 
timer counts hundredths of seconds) und register 0x00 = (1<<3) (d.h. 
alarm register (Reg 0x08) enable). Aber auch bei diser variante bekomme 
ich am int-pin keinen Interrupt. Der Interrupt Pin hängt wie gesagt umer 
4,7kOhm an vcc.

von Fire Eagle (Gast)


Lesenswert?

Hallo!

Ich hab jetzt gerade am INT-Pin den 4,7 KOhm Widerstand weggelassen und 
stattdessen den internen pull-up aktiviert und jetzt funktioniert es.
Aber an den SCL und SDA Pins habe ich einen 4,7 KOmh Widerststand und es 
geht und die sind ja auch Open Collector so wie INT. Sehr seltsam.
Kann sie das jemand erklären?

von Falk B. (falk)


Lesenswert?

@  Fire Eagle (Gast)

>geht und die sind ja auch Open Collector so wie INT. Sehr seltsam.
>Kann sie das jemand erklären?

Vielleicht ware die 4,7k in Wirklichkeit 470 oder gar 47 Ohm. Miss mal 
nach.

von Fire Eagle (Gast)


Lesenswert?

Hi!

Laut Farbcode sind es 4,7 kOhm, laut Multimeter 4,6.
Komisch das ganze. Aber vielleicht braucht der Int Pin einen höheren 
pull-up Widerstand als SCL, SDA. Der Atmega hat doch 20KOHm pull-ups, 
oder?

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.