Например TDA7294

Форум РадиоКот • Просмотр темы - Всё по DS1307 и прочим часам Dallas (Maxim)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн авг 04, 2025 22:42:19

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 323 ]     ... , , , 7, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 12:49:24 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15123
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Си - великая вэщ... но иногда источник великого садомазохизма...
Увы, пользуюсь токмо асмом, мож кто из Сишников подскажет...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 14:20:43 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Это делалось по аналогии, увиденного в интернете.
С секундами/минутами/часами все работает, однако там все куда проще. После преобразования в двоичный код они сразу выводятся на дисплей и все...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 14:25:26 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Цитата:
двоично-десятичный формат был преобразован в двоичный

У вас в восьмеричный... а не в двоичный...
00111 это 73 в десятичном...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Последний раз редактировалось HHIMERA Вт янв 06, 2015 14:26:26, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 14:25:50 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
Зачем Вы числа в восьмеричном виде написали? 00010 = 8. Хотя бы 0b00010. А ещё понятней в десятичном (1,2,3,4...).

ps. опередили :-)
И ещё, зачем из BCD переводить числа меньше 10-ти?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 14:40:29 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
:facepalm:
Как тогда мне считать данные? Точнее даже не считать, а что писать в условие if?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 15:05:27 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
Так и писать, только числа правильные поставить.
Код:
DS1307Read(0x03,&week); // Чтение регистра дня недели
lcd_gotoxy(0,1);
if(week == 1) lcd_string("SUN",3);
else if (week == 2) lcd_string("MON",3);
else if (week == 3) lcd_string("TUE",3);
else if (week == 4) lcd_string("WED",3);
else if (week == 5) lcd_string("THU",3);
else if (week == 6) lcd_string("FRI",3);
else  lcd_string("SAT",3);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 19:24:00 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
У меня в таком случае выводит "SAT" всегда.
То есть дни недели не в виде 1-7...
(пробовал ставить условие и на субботу, однако тогда не выводит ничего - подтверждение предыдущих слов)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 19:42:07 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
Возможно, при первом включении этот регистр не инициализирован и там ноль. Попробуйте туда записать значение от 1 до 7, а потом прочитать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 19:44:33 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Спасибо за совет!
Да, так заработало.
Это гарантия, что все верно работает и будет считываться как нужно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 19:53:26 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
Выставьте день в семерку, время 23:59 и дождитесь переключения дня на единицу. Должно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Вт янв 06, 2015 20:00:26 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Выставил...
День не переключило... :(

Но дату прибавило.

Вот еще решил установить 28 декабря 2014 года, а оно мне:
Изображение
залить картинку


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 08:42:20 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15123
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Бывают кристаллы с поврежденной маской календаря...
И не только среди DSок - касается ВСЕХ типов RTC... :(
Проверь заведомо годным.
Насчет усяких симуляторов- инструкции на соответствующих ветках форума.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 11:20:51 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Всмысле?
Я в протеусе проверяю, там нерабочих деталей нет)
Под словом "симулятор" вы имели ввиду протеус?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 11:56:37 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15123
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Тогды точно "шпротоглюки" - надо искать ответ у спецов по шпроту. 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 15:51:15 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
Вы, чего, издеваетесь, какой протеус??? в железе проверили?

ps. я Вам дам под десяток глюков Протеуса.... а я думал, Вы всё-таки в железе... жаль...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 16:59:59 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Все знают, что в протеусе досточно ошибок. Однако время выводит вполне адекватно, почему оно должно ошибаться с датой?
В железе нет возможности проверить, т.к. нет DS1307...

Я вот не пойму, в ds1307 информация хранится в двоично-десятичном коде, однако день недели (и т.д.) мы записываем в десятичном формате...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 18:00:31 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
А если не понимаете, то озвучьте разницу, чем отличается день недели (т.е., число, меньшее 8-ми) в двоично-десятичном формате от дня недели в десятичном?

P.S. Протеус вполне адектватно работает с DS1307, за исключением одного момента, что при старте программы день недели он из системного времени считает не Пн..Вс = 1..7, а как Вс..Сб = 1..7.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 19:39:22 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
Отличается ведь...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 20:21:00 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
Вы меня не так поняли, наверное. Я имел в виду, что непреобразованное десятичное число и преобразованное в двоично-десятичный формат ничем не отличается, если оно меньше 10.

Скажем, если нам надо записать в микросхему дату например, 23.02.2015, мы пишем:
Байт 4: 23 число => записываем в ячейку памяти 0x23, т.е. число 35.
Байт 5: 02 месяц => записываем в ячейку памяти 0x01, т.е. число 02.
Байт 6: 15 год => записываем в ячейку памяти 0x15, т.е. число 21.
День недели понедельник - пишем 01 как 0x01, оно же всё равно 01.
А вот для Proteus-a понедельник - это число 2 в DS1307.

P.S. Покажите, что у вас в коде сейчас вместо ранее приведённого ошибочного кода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS1307 и прочим часам Dallas (Maxim)
СообщениеДобавлено: Ср янв 07, 2015 23:27:08 
Мучитель микросхем
Аватар пользователя

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб фев 09, 2013 11:39:13
Сообщений: 447
Откуда: Украина, Марганец
Рейтинг сообщения: 0
На данный момент работает такой вариант (знаю, использовать switch лучше, однако на самом деле день недели мне не нужен будет, это так, лишь бы во всем разобраться)
Код:
 week_write = 5;
      DS1307Write(0x03, week_write);

      DS1307Read(0x03,&week); // Чтение регистра дня недели
      lcd_gotoxy(0,1);
      if(week == 1) lcd_string("SUN",3);
      else if (week == 2) lcd_string("MON",3);
      else if (week == 3) lcd_string("TUE",3);
      else if (week == 4) lcd_string("WED",3);
      else if (week == 5) lcd_string("THU",3);
      else if (week == 6) lcd_string("FRI",3);
      else  lcd_string("SAT",3);

Я специально назвал переменные по разному, чтобы убедиться в том, что данные записываются в микросхему и считываются.
tantrum писал(а):
0x23, т.е. число 35.

А почему это число 35? Нам ведь нужно 23...
Аналогично и с годом...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 323 ]     ... , , , 7, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y