Zegar czasu rzeczywistego PCF8583

Na płytce Gotroniki możemy obsłużyć zegar czasu rzeczywistego PC8583, który komunikuje się przez TWI (I2C). Bibliotekę do tego zegara można znaleźć na elektrodzie

http://www.elektroda.pl/rtvforum/viewtopic.php?t=702374&highlight=pcf8583+atmega+c&sid=

http://www.elektroda.pl/rtvforum/topic1395657.html

Schemat podłączeniowy wygląda tak:

Znalazłem także opis wszystkich bitów i adresów w scalaku PCF8583 w języku polskim. Umieściłem go poniżej w formacie pdf, aby łatwiej zrozumieć gotowe biblioteki.

http://avrkwiat.nstrefa.pl/omnie/java/opispcf.pdf

Scalak może pracować w trybie zegara lub licznika (przeczytaj powyższego pdf), do tego może wyzwalać alarm. Biblioteka, którą znalazłem jest bardzo dobrze opisana i widać, że ktoś się naprawdę namęczył, dlatego bardzo mu dziękuję :). Jeśli ktoś kupił płytkę Gotroniki, to nie musi nic lutować wystarczy połączyć pin oznaczony SDA z PC0 i pin SCL do PC1. Oraz podłączyć wyświetlacz PORTD w następujący sposób:

RS->PD6; E->PD4; D7->PD3; D6->PD2; D5->PD1; D4->PD0

#include <stdio.h>  //dodajemy biblioteki, które umożliwiają korzystanie z procedur
#include <math.h>
#include <avr/io.h>
#include <util/delay.h>
#include "LCD.h"
#include "PCF8583.h"
#include "i2c.h"

uint8_t godz, min, sek, hsek;
uint8_t dzien, miesiac;
uint16_t rok;

int main(void)
{
 i2cInit();  //inicjalizacja i2c
 PCF8583_init(); //inicjalizacja scalaka pcf8583
 PCF8583_set_time( 19, 17, 1, 0 ); //ustawienie czasu
 PCF8583_set_date( 6, 2, 2012 ); //ustawienie daty
LCD_start();

while (1) //pętla główna programu, to co jest w tej pętli powtarza się w nieskończoność
{

 PCF8583_get_time( &godz, &min, &sek, &hsek );  //pobranie czasu
 PCF8583_get_date( &dzien, &miesiac, &rok );  //pobranie daty
 _delay_ms(100);
 LCD_uint8xy(sek, 0, 0);  //wyświetlenie sekund
 LCD_uint8xy(min, 6, 0);  //wyświetlenie minut
 LCD_uint8xy(godz, 12, 0); //wyświetlenie godzin
 LCD_uint16xy(rok, 0, 1);  //wyświetlenie roku
 LCD_uint8xy(miesiac, 6, 1);  //wyświetlenie miesiecy
 LCD_uint8xy(dzien, 12, 1); //wyświetlenie dni
}
}


Kliknij tu, aby pobrać program