Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno miniOT - Obvod reálného času PCF8583 - jak ho přimět, aby se do něj zapsal datum?

Ahoj,
mám vývojovou desku EasyPIC 6 a v ní PIC16F887. Vyrobil jsem si k ní modul reálného času dle následujícího schematu: http://www.mikroe.com/pdf/rtcproto_schematic_v100. pdf . Zapojil jsem do desky k pinům RC3 a RC4 a zkusil jsem přečíst přes sběrnici I2C sekundy, které by měly být uložené v tom obvodu. Napsalo mi to 255. Tak jsem si řekl, že ten obvod nebyl rok zapnutý a dostal zabrat při vyletování, tak se to z tý paměti nějak vymazalo. Nahrál jsem tedy program, přes který by mělo jít zapsat. Zkusil jsem, ale 255 tam je zapsáno pořád. Osciloskopem jsem zkontroloval, jestli probíhá samotná komunikace a "jehličky" na "datovém drátu" naskakujou, takže komunikace tam nějaká je. Hodinový signál 1Hz generuje taktéž, oscilátor funguje. Je to jasný příznak toho, že je odpálenej nebo jsem ještě něco opomněl? Takto vypadá kod na čtení (psaný v mikroC PRO for PIC):

// nadefinované piny LCD displeje a toho RTC obvodu
void main()
{
  ANSEL  = 0x0f;              // Configure AN2 pin as analog
  ANSELH = 0;                 // Configure other AN pins as digital I/O
  C1ON_bit = 0;               // Disable comparators
  C2ON_bit = 0;

  TRISA  = 0xFF;              // PORTA is input
  TRISC  = 0;                 // PORTC is output

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);

while(1)
{
Soft_I2C_Init();
Soft_I2C_Start();               // Issue repeated start signal
Soft_I2C_Write(0xA0);           // Address PCF8583, see PCF8583 datasheet
Soft_I2C_Write(0);              // Start from address 2
Soft_I2C_Write(0xA1);           // Address PCF8583 for reading R/W=1

seconds = Soft_I2C_Read(1);     // Read seconds byte
Soft_I2C_Stop();                // Issue stop signal

Lcd_Chr(1,1,48+seconds/100);
Lcd_Chr(1,2,48+(seconds%100)/10);
Lcd_Chr(1,3,48+(seconds%100)%10);
}

}

Díky za odpovědi a kdybych něco zapomněl napsat, tak doplním.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny