Forum: Mikrocontroller und Digitale Elektronik RTC PCF8583 - Quarz geht nicht


von Sascha Biedermann (Gast)


Lesenswert?

Hallo Leute!

Und schon komme ich wieder mit dem nächsten Prob angenervt g

Ich habe gerade die Software für den I2C RTC - Chip gebastelt. Doch
irgendwie scheint die Uhr zu stehen. Hab einen 3,2768 MHz Quarz zw.
OSCI und OSCO gehängt und von OSCI nach 5V+ einen Trimm-Elko. Leider
bleiben die Register im IC immer gleich. Wenn ich eine Uhrzeit rein
schriebe, dann kann ich diese anschliesen wieder lesen.

Wenn ich OSCI u. OSCO kurz miteinander verbinde, dann zähl er ein paar
1/100 weiter. Muss ich evtl. an den Quarz noch Masse anlegen (an's
Gehäuse?) ? Kann ich  mit einem einfachen Multimeter (Strom, Spannung,
Wiederstand) bestimmen, ob der Quarz funktioniert?

...puh

Also wie immer hoffe ich, dass ihr mir helfen könnt.

MfG
Sascha

von BernhardT (Gast)


Lesenswert?

Versuchs doch mal mit nem Uhrenquarz 32768 Herz (2 hoch 15) nicht 3,...
Mega Herz
Gruß Bernhard

von Linebach Anton (Gast)


Lesenswert?

haste du das startbit gesetzt ? -im controllreg. soviel ich
mich noch erinnern kann, welchen uhrenbaustein hast du ?

von Sascha Biedermann (Gast)


Lesenswert?

mist... man(n) darf halt nicht mit ausgeschaltetem Hirn Teile aus dem
Katalog suchen...

3,2768MHz sind nun mal nicht 32,768kHz g

naja... hab eine alte Armbanduhr geplündert, jeztz geht's...

Danke für den Tipp!

MfG
Sascha

von womisa (Gast)


Lesenswert?

Hallo Sascha,

ich bin neu in dem AVR Geschäft, kannst du mal Deinen Code oder Teile
davon posten.
Wie spricht man den PCF8583 an?
Hast Du einen Atmega mit TWI interface oder die I2C Sodtwarelösung?
Ich habe bisher weder mit I2C noch mit AVR was gemacht.

Grüße Achim

von Sascha Biedermann (Gast)


Lesenswert?

Hallo Achim!

Also ich habe diese TWI-Lib (für das HW-TWI des Mega32) genommen:
http://www.mikrocontroller.net/forum/read-4-50052.html

Im Datenblatt ist eigentlich alles recht schön beschrieben. Hier meine
aktuelle Code (AVR-GCC):

unsigned char tmp,sec,std,min,t,m,w;
unsigned int j;
unsigned char str[21];
unsigned char wota[7][3] = {
"Mo","Di","Mi","Do","Fr","Sa","So" };

    // dummy-write um RAM-Addi zu setzen

    if (start_i2c(0xA0)==0) GR_ON;
    else {RT_ON; GR_OFF;}
    write_i2c(0x02);

    // zum lesen wechseln
    if (rep_start_i2c(0xA1)==0) OR_ON;
    else { RT_ON; OR_OFF;}

    // Sek. lesen, und in einen Char umwandel (High-Nibbel=10sek,
Low-Nibbel=sek)
    tmp = read_i2c_ack();
    sec = ((tmp>>4)*10) + (tmp&0x0F);

    // wie bei den sek.
    tmp = read_i2c_ack();
    min = ((tmp>>4)*10) + (tmp&0x0F);

    // siehe Datenblatt
    tmp = read_i2c_ack();
    std = ( ((tmp>>4)&0x03)*10) + (tmp&0x0F);

    // siehe Datenbaltt
    tmp = read_i2c_ack();
    j = (tmp>>6)+2004;
    t = ( ((tmp>>4)&0x03)*10) + (tmp&0x0F);

    tmp = read_i2c_nack();
    w = (tmp>>5);
    m = ( ((tmp>>4)&0x01)*10) + (tmp&0x0F);

    stop_i2c();
    delay_ms(100);

      sprintf(str, "%s, %02u.%02u.%04u",wota[w],t,m,j);
      lcd_gotoxy(0,0);
      lcd_puts(str);
      suart_puts(str);
      suart_puts_P("\r\n");

      sprintf(str, "%02u:%02u:%02u",std,min,sec);
      lcd_gotoxy(0,1);
      lcd_puts(str);
      suart_puts(str);
      suart_puts_P("\r\n");

Falls du noch Fragen hast, dann sag bescheid.

MfG
Sascha

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.