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

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

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

Сообщение Andrew_7 »

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

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

Сообщение Andrew_7 »

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

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

Сообщение Andrew_7 »

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

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

Сообщение Danko »

Andrew_7 писал(а):книги по программированию на СИ AVR контроллеров
Си для AVR ?

Прошу прощения Си он и в Африке Си.

Любая книга по Си будет Вам в помощь в которой есть примеры не под винду, а под старой добрый DOS. Можно и под UNIX.

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

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

Сообщение Andrew_7 »

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

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

Сообщение Danko »

в месте с датой

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

      rtc_get_time(0, &my_hour, &my_min, &my_sec, &my_hsec); // прочесть из часов время
      rtc_get_date(0, &my_date, &my_month, &my_year);        // и дату

      sprintf(lcd_buffer, "%02u:%02u:%02u.%02u \n%02u-%02u-%u",
      my_hour, my_min, my_sec, my_hsec, my_date, my_month, 2008+my_year);  // отпечатать в переменную (буфер)

небольшое замечание: дата будет верна только еще один год т.к. PCF8583 года считает от 0 до 3.

високосный год это 0.

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

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

Сообщение Andrew_7 »

Danko, спасибо больше за помощь! :)
Спасибо всем!
Чтобы удивиться - достаточно одной минуты, чтобы сделать удивительную вещь - нужны долгие годы.
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

Здравствуйте!
портировал проект в Протеусе с меги 32 на мегу 8, но не получилось - вместо времени оно пишет нули, в чем может быть проблема?
Вложения
2.rar
(57.35 КБ) 162 скачивания
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

даже когда проэкте выложеном Danko переставляю дисплей на другой порт, указывая в коде програмы (где вставка асемблера) код порта куда подключен дисплей, то в итоге показывает какие-то караказяблики. :shock:
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

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

Сообщение Vov123 »

А так?
Вложения
2.rar
(68.79 КБ) 168 скачиваний
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

:shock: все работает :shock: , но не могу найти отличий. как у вас так получилось? :tea:
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

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

Сообщение Vov123 »

В игрушке по названию "Протеус",всё-же надо FUSE для проца устанавливать.
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

Vov123 писал(а):В игрушке по названию "Протеус",всё-же надо FUSE для проца устанавливать.

Спасибо! а то сам еще бы несколько дней сидел думал бы :beer:
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

Vov123, не подскажите что за полтергейст, я в исправленом вами проекте удаляю одну пустую строку между двумя строками кода

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

      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);

компилирую и в итоге протеус опять выводит на экран только нули :shock:
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

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

Сообщение Vov123 »

Наверное у Вас что-то с soft-ом.У меня CVAVR(1.25.9) и прот(v.7.5 SP3)
Вложения
2.rar
(69.75 КБ) 192 скачивания
OSTIN89
Родился
Сообщения: 15
Зарегистрирован: Ср фев 16, 2011 20:41:20

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

Сообщение OSTIN89 »

Выручаете! поставил CVAVR 1.25.9, раньше была CVAVR 1.25.7 beta и все скомпилировалось и заработало, спасибо!
vovan128
Родился
Сообщения: 4
Зарегистрирован: Пт дек 02, 2011 21:45:23

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

Сообщение vovan128 »

не избежал наступления на грабли и я. методом последовательного приближения и научно-обоснованного тыка запустил я таки часы на PCF8593 - это почти то же самое, что и PCF8583. Практически во всех примерах приводится пример из CVAVR с использованием rtc_get_time(); sprintf(); lcd_puts();
sprintf() безбожно жрёт пространство програмной памяти, хотя функция очень мощная, но за её вездесущность приходится расплачиваться ресурсом AVR.
Есть другая функция itoa(), она преобразовывает целое число в строку, а в часах дробных чесел и нет:

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

itoa(int_char, str_buffer);

Пример использования с часами:

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

char j;
char lcd_buf[2];
unsigned char my_hour, my_min, my_sec, my_hsec;


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void main(void)
  {
    init (); //инициализация всего, что надо
            #asm("sei")// Global enable interrupts
           

// C Y K L    L O O P ******************************************************************************
        while (1)
      {
rtc_get_time(1, &my_hour, &my_min, &my_sec); // прочесть из часов время
          lcd_gotoxy(0,0);   // очистить экран и установить координаты 0:0

              itoa(my_hour, lcd_buf); //преобразовать в строку
                if (my_hour<10){j=lcd_buf[0];lcd_buf[0]=48;lcd_buf[1]=j;}  //приписать 0
                lcd_puts(lcd_buf);  //вывести на LCD стоку
                lcd_putsf(":");   //вывести на LCD двоеточие

              itoa(my_min, lcd_buf); //преобразовать в строку
                if (my_min<10){j=lcd_buf[0];lcd_buf[0]=48;lcd_buf[1]=j;}  //приписать 0
                lcd_puts(lcd_buf); //вывести на LCD стоку
      lcd_putsf(":");   //вывести на LCD двоеточие
               
              itoa(my_sec, lcd_buf); //преобразовать в строку
                if (my_sec<10){j=lcd_buf[0];lcd_buf[0]=48;lcd_buf[1]=j;} //приписать 0
                lcd_puts(lcd_buf);  //вывести на LCD стоку
      
    }//скобка while
}//скобка main

к одноразрядным часам, минутам и секундам при выводе в переди выводится 0, т.е так. 03:06:08
Экономия програмной памяти раза в 3 .
Закрыто

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