Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.12.2008, 20:29  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

2_Stealth_
Че-то я пропустил эту тему, слишком занят был. В "прынцыпе" процедуры для DS1307 в CAVR работают нормально, если пользутетесь ими корректно, т.е. в соответствии с разделом хелпа "Maxim/Dallas Semiconductor DS1307 Real Time Clock Functions".
Кстати при компиляции CAVR формирует и файл .asm, если в нем порыться (лучше с конца),то найдете много интересного и про I2C и про RTC. Правда разбираться муторно. А еще хотел бы обратить ваше внимание на бит 7 (CH) регистра 0 RTC. Всякая операция записи МК с 1307, особенно после выключения питания (ИМХО МК) должна начинаться с проверки сего бита. Если он 1, значит остановлен тактовый генератор DS, т.е. - вынималась евойная бабарейка и необходимо утановить дату и время, если он 0, то не надо в RTC ничего писать (если конечно вы не собрались корректировать часы) оно тикало на батарейке и сбиться в нем ничего не могло.
ЗЫ В качестве презента вот здесь нормальный перевод даташита на DS1307:
http://piclist.ru/D-DS-DS1307-RUS/D-DS-DS1307-RUS.html
Реклама:
Halex07 вне форума  
Непрочитано 04.12.2008, 00:23  
_Stealth_
Частый гость
 
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
_Stealth_ на пути к лучшему
По умолчанию

2 Halex07
Апасибо большое за инфу. Буду просвещаться.
Нарыл кучу исходников по i2c, сижу, вкуриваю. Вопросов возникло еще больше.
Например, выяснил, что (к своему стыду не знал об этом) CVAVR для DS-ки генерит программную реализацию i2c, а аппаратную нужно ручками писать. В связи с этим вопрос: насколько аппаратная реализация этого интерфейса лучшестабильнейнадежней программаной?
Еще, по поводу самого RTC, он тикает, в принципе, правильно и с большой вероятностью НЕ глючит. Глюки возникают с чтением данных из него. Перезапуская весь девайс раз через 7-9 дата и время выведутся корректно. Это при том, что контроллер ТОЛЬКО читает данные, никаких записей туда не делает...
Про бит 7 регистра CH вычитал в даташите на железяку. Удивительно, что о нем мало кто знает, судя по обсуждениям 1307 в тырнете.

P.S. какие еще буду размышления на тему первого вопроса?
_Stealth_ вне форума  
Непрочитано 04.12.2008, 08:39  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

К сожалению нет времени подробно ответить. Могу только дать наметки.
1. В качестве аппаратного I2C используется модуль TWI контроллера. По этому поводу найдите русский перевод (HTML)апноута AVR315 здесь:
http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htm
там же есть и англ. оригинал и СИ код для IAR.
2. Еще вчера предположил, что у Вас нестабильность связана со времянкой. При 16Мгц частота SCL может быть 400 или 100 кГц (таблица 1) апноута.
3. Не стоит смешивать в одном флаконе програмный и аппаратный вариант I2C, т.к. в програмном все задержки (ИМХО времянка) формируются в коде при компиляции. Посмотрите .asm после компиляции -там любая функция работы с I2C имеет "call" на задержки. В аппаратном варианте вся времянка формируется модулем TWI МК (см. выше).
4. Это уже из области предположений:
- На момент чтения/записи по I2С блокируйте прерывания.
- Если позволяет объем кода попробуйте в CAVR отрубить оптимизацию.
- Проверьте установки собачника.
УДАЧИ!!!
Halex07 вне форума  
Непрочитано 04.12.2008, 10:40  
_Stealth_
Частый гость
 
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
_Stealth_ на пути к лучшему
По умолчанию

Картина проясняется!
Вчера обнаружил, что одна из функций управления дисплеем переключает ноги программного TWI в режим вывода. Поправил. Стало гораздо лучше!!!
Но все равно глюки проскакивают.
С i2c потихоньку разбираюсь, прикрутил библиотеку (аппаратную), нужно подогнать немного, но в протеусе уже работает. В контроллер, правда, еще не шил.
Сейчас в TWBR указываю, что интерфейс пашет на 100 кГц. Как он работал до этого - хер его знает.
Смотрел, что генерит компилятор в .asm. Там черт со шпагой голову свернет.
Из последнего:
- собачник в отрубе.
- оптимизация выключена.
- прерывания запрещать не пробовал. сегодня буду эксперементировать. У меня работают два таймера и АЦП. Кто-нить из них может мешать...

СПАСИБО!!!
_Stealth_ вне форума  
Непрочитано 04.12.2008, 19:18  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Stealth
А все же , что стоит на подтяжке шины ?
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 06.12.2008, 01:21  
_Stealth_
Частый гость
 
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
_Stealth_ на пути к лучшему
По умолчанию

dosikus
В мануале на DS-ку про пулап ничего не сказано. В даташите на мегу, в разделе TWI есть сноска: Pull-up resistor values should be selected according to the SCL frequency and the capacitive bus line load. See Table 119 on page 290 for value of pull-up resistor.
В таблице формула: f SCL ≤100 kHz ---›› Vcc-0.4V/3mA.
Вроде 4.8 кОм получается. Апнот по TWI грит, что 4.5 кОм - нормально. Полазил по сети, нашел опроект, в котором дядька 10кОм ставил. Уверяет, что все работает.
Я 4.5 вкорячил. Нашел библиотеку с аппаратной реализацией i2c, подогнал под себя, родную ds1307.lib из cvavr тоже подогнал как надо, но все безуспешно!
Короче, маялся я, маялся и проблема решилась... вроде... Еще буду делать полномасштабные испытания.
Оказалось, что виновата процедура itoa(). Родная, из cvavr.
У меня на дисплей выводится время, которое преобразуется в строку с помощью этой функции, и напряжение из АЦП. Значение напряжения преобразовывалось в строку процедурой sprintf и выводилось корректно, пока я не стал конвертить его в строку процедуркой itoa. Тут и начались косяки.
В общем, хер знает, где собака порылась, но теперь и напряжение и время конвертит процедурка:
Код:
void int2str(char *buf, unsigned long num, char nl) 
{ 
    char str[7] = "000000"; 
    char *ptr = &str[6]; 
    int tmp; 
    int pos = 0; 
    *ptr = 0; 
    if((nl==1) & num ‹ 10) *buf++ = '0'; 
      do 
      { 
        if (++ pos == 3) *--ptr = '.'; 
        tmp = num / 10; 
        *--ptr = '0' + (num - tmp * 10); 
        num = tmp;
      } while (num != 0);
    while ((*buf++ = *ptr++) != 0); 
}
и все пашет нормально. Так обрадовался, что даже не стал разбираться в чем была проблема.
_Stealth_ вне форума  
Непрочитано 06.12.2008, 02:40  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Дело не в ds , в проте нужно ставить не резисторы
а pullup .
Иначе чревато глюками.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 21.12.2011, 02:14  
demuri
Прохожий
 
Регистрация: 20.12.2005
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
demuri на пути к лучшему
По умолчанию Re: DS1307 и глюки при чтении

оккупант, лови:

// I also had these problems.
// I was searching for solutions in the datasheet, in the books, in the forums, familiar and unfamiliar .... is even.
// After months of anguish, ..."Eureka" ;D - read once again battered pile of papers, I discovered "America",
//
// ...." Data valid: The state of the data line represents valid data when, after a START condition, the data
// line is stable for the duration of the HIGH period of the clock signal. The data on the line must be
// changed during the LOW period of the clock signal. There is one clock pulse per bit of data .".........
// And here is my "Newton solution":

void clock (void)
{
//================================================== =====================
// for the time to add
//two line below:
//================================================== =====================
while (PORTC.5 == 1) //this is "my" SDA = PORTC.5
{delay_us (1);} // delay time is chosen at your discretion
//================================================== =====================
i2c_start ();
i2c_read (0);
rtc_get_time (& RTC_Hour, & RTC_Mins, & RTC_Sec);
//================================================== =====================
/ / And repeat the same thing for date
//================================================== =====================
while (PORTC.5 == 1)
{delay_us (1);} // delay time is chosen at your discretion
//================================================== =====================
rtc_get_date (& RTC_Day, & RTC_Month, & RTC_Year);
i2c_stop ();
if (RTC_Sec == 0) {SecT = 0;}
}
// Enjoy. And do not suffer anymore.
// Please only say, "Thank you uncle Demuri."))
// demuri@hotmail.com

Последний раз редактировалось demuri; 21.12.2011 в 02:59.
demuri вне форума  
Непрочитано 21.12.2011, 08:38  
sdsrem
Почётный гражданин KAZUS.RU
 
Аватар для sdsrem
 
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
sdsrem на пути к лучшему
По умолчанию Re: DS1307 и глюки при чтении

У вас наверно разное питание, мега 5v а ds1307 3v (батарейка) вот и глючит.
Запитайте всё от 5ти вольт, и посмотрите на результат, может поможет.
sdsrem вне форума  
Непрочитано 21.12.2011, 09:08  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: DS1307 и глюки при чтении

demuri, sdsrem, На даты постов внимание иногда обращаем....
__________________
Осторожно , злой кот
dosikus вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DS1307 спешит disist Микроконтроллеры, АЦП, память и т.д 43 25.04.2018 16:57
Проблема при чтении аудио данных c SD карты IgorAVR2 Микроконтроллеры, АЦП, память и т.д 13 11.08.2008 01:31
глючит DS1307! stri Микроконтроллеры, АЦП, память и т.д 3 28.09.2007 08:13
Проблемы с ds1307 droom Микроконтроллеры, АЦП, память и т.д 1 13.12.2006 07:36
При чтении CD диска выдаёт 00 треков 00:00 минут axle Аудиотехника 3 10.04.2006 11:06


Часовой пояс GMT +4, время: 03:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot