Помогите с кодом для PCF8583

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Здравствуйте уважаемые форумчане! Мяу! Я впервые сталкиваюсь с RTC микросхемами. В частности столкнулся с PCF8583. Я никак немогу разобраться, как считать информацию о времени и дате с PCF8583 в переменную, чтоб затем вывести её на дисплей. Для считывания использую Atmeg32. Искал в инете примеры кодов, почти ничего не нашёл.. Помогите пожалуйста! :)
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Язык ?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Си
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

в CVAVR есть готовая библиотека.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

А как эта библиотечка называется? Не подскажите? Я смотрел, что - то не нашёл.. Есть I2C библиотека, которую я видел..
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 151
Зарегистрирован: Пт май 01, 2009 08:58:42
Откуда: г. Коломна

Сообщение evgeniy66 »

Andrew_7 писал(а):А как эта библиотечка называется? Не подскажите? Я смотрел, что - то не нашёл.. Есть I2C библиотека, которую я видел..
Вот если это библиотеку активировать, то там станут видны дополнительные закладки, где есть и Ваша микросхема.
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Как опросить микруху я понимаю, возможно я неправильно выразился, прошу прощения за это.. Я не могу разобраться, как данные принятые от неё, вывести на дисрлей..
Приведу часть кода подпрограммы:

lcd_clear();
// Place your code here
i2c_start();
i2c_read(0);
rtc_get_time(0, &Hour, &Mins, &Sec, &Set_Msec);
rtc_get_date(0, &Day, &Mon, &Year);
i2c_stop();

};

Инициализация i2c проходит выше, этот кусок программы я просто не вставил. Вопрос в том, как полученные данные от часов, содержащихся в rtc_get_time вывести на дисплей? Я так понимаю надо сделать какое - то преобразование данных в char?
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Andrew_7 писал(а): i2c_start();
i2c_read(0);
};
Andrew_7 писал(а): i2c_stop(0);
это находится внутри библиотеки и вам его трогать не нужно.

откройте папку examples, где найдете примеры работы с LCD да и RTC тоже.

Andrew_7 писал(а):Как опросить микруху я понимаю
похоже не совсем
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Danko, вы не могли бы дать пример? Я там нашёл примеры только по работе с DS1820 и прочими.. Пока не разобрался..
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Я в этом деле новичок.. ) Помогите пожалуйста :)
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

http://embedded.ifmo.ru/sdk/sdk11/doc/s ... 1_0_11.pdf
стр.46-63
Довольно подробно про эту м-му по русски описано.Кстати в проте отлично моделируется.

Вот ещё,со староглиняных времён сохранилось,с какого-то форума.
Вложения
Спасибо за ответ.rar
(12.28 КБ) 253 скачивания
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Вечером займусь, спасибо Vov123! :)
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Посмотрел я документ этот. Всё равно не понял, как же из rtc_get_time вывести информацию на дисплей. Пример в документе дан только для внешней памяти. Может у кого есть готовый код? Поделитесь пожалуйста...
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Andrew_7, что может быть проще?

Код: Выделить всё

while (1)
      {
      rtc_get_time(0, &my_hour, &my_min, &my_sec, &my_hsec); // прочесть из часов время

      sprintf(lcd_buffer, "%u:%u:%u.%u", my_hour, my_min, my_sec, my_hsec);  // отпечатать в переменную (буфер)
      lcd_clear();                                                           // очистить экран и установить координаты 0:0
      lcd_puts(lcd_buffer);                                                  // вывести строку (буфер) на LCD
      
      delay_ms(100); //задержка на 0,1 сек

      };
}
пользовался только примерами из CVAVR

в архиве проект для CVAVR и для Proteus
Вложения
test_Mega32_PCF8583_LCD1602.zip
(19.53 КБ) 280 скачиваний
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Спасибо большое за пример! Значит я близко был.. )
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Ребят! Спасибо всем за помощь! Всё работает!
Маленький вопросик только.. Позвольте уж.. :)

Сейчас выводит дату и время программа на дисплей, но дата в формате 8/7/1
то есть 8 число, 7 месяц, 2010 год, как можно добавить нули, чтоб получилось: 08/07/2010 ?
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

дата/10 дата%10 / месяц/10 месяц%10
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт сен 04, 2007 19:50:22

Сообщение Andrew_7 »

Vov123, можете показать в коде, плизз? У меня не получается.. Не срабатывает..
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Про год я уже не помню как там,ну вот к примеру с часами вот так:
sprintf(buf,"%u%u:%u%u:%u%u",hour/10,hour%10,min/10,min%10,sec/10,sec%10);
так-же поступите с днями и месяцами,хотя им можно применить имена собственные.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Andrew_7 писал(а):Сейчас выводит дату и время программа на дисплей, но дата в формате 8/7/1
то есть 8 число, 7 месяц, 2010 год, как можно добавить нули, чтоб получилось: 08/07/2010 ?
Andrew_7, настоятельно рекомендую: УЧИТЕ СИ !!!!!!!!

Ваш вопрос абсолютно не в тему !!!!!!!

для времени:

Код: Выделить всё

"%02u:%02u:%02u.%02u" 
для года надеюсь Сами подправите.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»