DS3231 и CodevisionAVR

На просторах интернета не так много рабочего кода для связки DS3231 и Codevision AVR, хочу показать свой рабочий вариант.

Подключаются эти часы точно так жк как и DS1307, V+ 5в, GND, SDA, SCL.

А вот распределение памяти по ячейкам у них немного другое.

Соответственно ячейка 0х00 это секунды, 0х01 минуты, 0х03 часы и т.д.

Ну а теперь рабочий код

А тут рассмотрим примеры вызова:

RTC_read_time (); // считаем время и дату

RTC_write_hour23(X); // запишем новое значение в часы

RTC_write_minute23(X); // запишем новое значение в минуты

 

DS3231 и CodevisionAVR: 6 комментариев

  1. Валерий

    Добрый день сделал для визарта но не работает
    Записываю значения вот так

    RTC_write_hour23(0); // запись часов
    RTC_write_minute23(0); // запись минут
    RTC_write_sec23(0);//запись секунд

    RTC_write_wday23(0); //запись дней недели
    RTC_write_day23(0); //запись числа
    RTC_write_month23(0); //запись месяца
    RTC_write_year23(0); // запись года

    while (1)
    {
    RTC_read_time (); // выводим время и дату

  2. Валерий

    Добрый день сделал для визарта но не правильно показания и почему секунды не идут?
    Записываю значения вот так

    RTC_write_hour23(13); // запись часов
    RTC_write_minute23(55); // запись минут
    RTC_write_sec23(33);//запись секунд

    RTC_write_wday23(2); //запись дней недели
    RTC_write_day23(23); //запись числа
    RTC_write_month23(4); //запись месяца
    RTC_write_year23(19); // запись года

    while (1)
    {
    RTC_read_time (); // выводим время и дату
    }

    и зачем нужна функция

    //** функции преобразования чисел (для корректного отображения значений)**/
    unsigned char bcd (unsigned char data)
    {
    unsigned char bc;
    bc=((((data&(1<<6))|(data&(1<<5))|(data&(1<>4)+((data&(1<<3))|(data&(1<<2))|(data&(1<<1))|(data&0x01));
    return bc;
    }
    unsigned char bin(unsigned char dec){
    char bcd;
    char n, dig, num, count;
    num = dec;
    count = 0;
    bcd = 0;
    for (n=0; n<4; n++) {
    dig = num%10;
    num = num/10;
    bcd = (dig<<count)|bcd;
    count += 4;
    }
    return bcd;
    }

  3. Валерий

    дошло как сделать секунды
    надо RTC_read_time (); // выводим время и дату опрашивать в бесконечном цикле но ПОЧЕМУ СЕКУНДЫ СЧИТАЮТ ДО 90 А ПОТОМ СБРАСЫВАЮТСЯ????????????????????????????????

  4. Валерий

    Проблема с выводом
    //** функции преобразования чисел (для корректного отображения значений)**/
    unsigned char bcd (unsigned char data)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *