AOX ha scritto:La sonda dell'oscilloscopio direttamente sul pin del quarzo con la sua capacità aggiunta rende impossibile la taratura.
Mi consola il fatto che qualcuno conferma quanto ho scritto sopra.

Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
AOX ha scritto:La sonda dell'oscilloscopio direttamente sul pin del quarzo con la sua capacità aggiunta rende impossibile la taratura.

A questo punto devo ricercare l'errore all'interno del software.
// Inizializzazione.
I2C_init();
I2C_buffer[0] = 0x00;
I2C_buffer[1] = 0x00;
I2C_buffer[2] = 0x00;
I2C_transmit_block(PCF8563_SLAVE_ADD, (char *)I2C_buffer, 3);
I2C_release();
I2C_buffer[0] = 0x0D;
I2C_buffer[1] = 0x80;
I2C_buffer[2] = 0x00;
I2C_buffer[3] = 0x00;
I2C_transmit_block(PCF8563_SLAVE_ADD, (char *)I2C_buffer, 4);
I2C_release();
// Lettura data/ora.
result |= I2C_transmit_char(PCF8563_SLAVE_ADD, 0x02);
I2C_restart();
result |= I2C_receive_block(PCF8563_SLAVE_ADD, (char *)I2C_buffer, 7);
I2C_release();
td_in.sec = (((I2C_buffer[0] & 0x70) >> 4) * 10) + (I2C_buffer[0] & 0x0F);
td_in.min = (((I2C_buffer[1] & 0x70) >> 4) * 10) + (I2C_buffer[1] & 0x0F);
td_in.hr = (((I2C_buffer[2] & 0x30) >> 4) * 10) + (I2C_buffer[2] & 0x0F);
td_in.dy = (((I2C_buffer[3] & 0x30) >> 4) * 10) + (I2C_buffer[3] & 0x0F);
td_in.dow = (I2C_buffer[4] & 0x07);
td_in.mn = (((I2C_buffer[5] & 0x10) >> 4) * 10) + (I2C_buffer[5] & 0x0F);
td_in.yr = (((I2C_buffer[6] & 0xF0) >> 4) * 10) + (I2C_buffer[6] & 0x0F);
// Scrittura data/ora.
I2C_buffer[0] = 0x02;
I2C_buffer[1] = ((td_out.sec / 10) << 4) | td_out.sec % 10;
I2C_buffer[2] = ((td_out.min / 10) << 4) | td_out.min % 10;
I2C_buffer[3] = ((td_out.hr / 10) << 4) | td_out.hr % 10;
I2C_buffer[4] = ((td_out.dy / 10) << 4) | td_out.dy % 10;
I2C_buffer[5] = td_out.dow;
I2C_buffer[6] = ((td_out.mn / 10) << 4) | td_out.mn % 10;
I2C_buffer[7] = ((td_out.yr / 10) << 4) | td_out.yr % 10;
result |= I2C_transmit_block(PCF8563_SLAVE_ADD, (char *)I2C_buffer, 8);
I2C_release();
Visitano il forum: Nessuno e 116 ospiti