Отговори на тема  [ 20 мнения ]  Отиди на страница 1, 2  Следваща
DS1338Z 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение DS1338Z
Здравейте! Някой работил ли е с това нЯщо?! Ето го чаршафа ->DS1338Z
Не мога да му хвана чалъма. Чаршафът на страница 14 казва, че трябва да направят така- > 208(команда за запис), адрес(изпращам 0, като предполагам това трябва да е първият адрес според таблица 3 стр 10), 209(команда за четене) и чета 8 записа. Обаче така нищо не става....
Когато опитам процедурата за обикновено четене -> просто команда 209 + четене на 8 байта, първият път се изчита правилно, след което предполагам адресния регистър продължава да се инкрементира и аз чета глупости при повторен опит.
На логическия всичко е нормално - > комуникацията е правилна, получавам си АCK и т.н.
Някаква идея каква е точно процедурата за четене/запис?
Благодаря!

ПП: Някой да погледне какъв е този спам в другия раздел, ако е възможно!

_________________
www.elkran.com


Чет Яну 30, 2020 12:45 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: DS1338Z
Трябва всеки път при четене на данни да се праща 0xE0, 0, 0xE1, за да ти сложи указателя в началото на клетките на RTC. Иначе продължава докато свърши и RAM паметта.


Чет Яну 30, 2020 1:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение Re: DS1338Z
Не са 0хЕ0 и 0хЕ1, а 0xD0 и 0xD1(208 и 209)(спроред документа). И не се получава...

_________________
www.elkran.com


Чет Яну 30, 2020 1:28 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: DS1338Z
Да, моя е грешката, 0xD0 е. Доколкото разгледах- чипа е същия като DS1307, само има добавен флаг за авария на кварца и поддържа до 400кХц шина.
Нещо такова трябва да е (за PIC16 e кода):
Код:

void i2c_waitForIdle()
{
while (( SSPCON2 & 0x1F ) | SSPSTATbits.R_nW ) {}; // wait for idle and not writing
}

int i2c_read( unsigned char ack )
{
unsigned char i2cReadData;

i2c_waitForIdle();
SSPCON2bits.RCEN=1;
i2c_waitForIdle();
i2cReadData = SSPBUF;
i2c_waitForIdle();
if ( ack )
  {SSPCON2bits.ACKDT=0;}
else
  {SSPCON2bits.ACKDT=1;}
  SSPCON2bits.ACKEN=1;               // send acknowledge sequence
return( i2cReadData );
}

unsigned char i2c_write( unsigned char i2cWriteData )
{
i2c_waitForIdle();
SSPBUF = i2cWriteData;
return ( !SSPCON2bits.ACKSTAT  ); // function returns '1' if transmission is acknowledged
}


void ds1307_get_date(unsigned short *day, unsigned short *mth, unsigned short *year, unsigned short *dow)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x03);            // Start at REG 3 - Day of week
  i2c_start();
  i2c_write(0xD1);
  *dow  = bcd2bin(i2c_read(1) & 0x7f);   // REG 3
  *day  = bcd2bin(i2c_read(1) & 0x3f);   // REG 4
  *mth  = bcd2bin(i2c_read(1) & 0x1f);   // REG 5
  *year = bcd2bin(i2c_read(0));          // REG 6
  i2c_stop();
}

void ds1307_get_time(unsigned short *hr, unsigned short *min, unsigned short *sec)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x00);            // Start at REG 0 - Seconds
  i2c_start();
  i2c_write(0xD1);
  *sec = bcd2bin(i2c_read(1) & 0x7f);
  *min = bcd2bin(i2c_read(1) & 0x7f);
  *hr  = bcd2bin(i2c_read(0) & 0x3f);
  i2c_stop();
}


Чет Яну 30, 2020 2:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение Re: DS1338Z
10x! Бях забравил как точно работи този интерфейс и че трябва да се изпълни "старт" преди смяна на посоката. А и тези не са отбелязали в чаршафа...

_________________
www.elkran.com


Пет Яну 31, 2020 9:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение Re: DS1338Z
Един въпрос за интегралката! Как се изгражда програмата, за да не сетва всеки път времето контролерът при рестарт? Примерно задавам си колко е часа при първоначална инициализация и го ставям да работи. Обаче при някакви обстоятелства контролерът ми трябва да се ресетне. Как да разбере, че след ресета не трябва да инициализира часовника отново?! Ясно, че мога да заделя една клетка EEPROM, обаче не съм се сетил като проектирах платката да сложа ЕЕПРОМ. Мислех, че ще проверявам флага CH обаче изглежда той винаги си е 0, ако няма изключителна ситуация за интегралката.
Благодаря!

_________________
www.elkran.com


Съб Фев 01, 2020 12:25 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: DS1338Z
Проверяваш дали прочетените стойности от часовника за валидни, т.е. са в разрешения диапазон за всеки един параметър. Ако не е настройван часовника в него може да показва, примерно, че е 35:88:73ч. и флага пак да си показва, че всичко е наред.


Съб Фев 01, 2020 12:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10573
Местоположение: София
Мнение Re: DS1338Z
stoyanoff написа:
...Ясно, че мога да заделя една клетка EEPROM, обаче не съм се сетил като проектирах платката да сложа ЕЕПРОМ...

Чипът има NV RAM...


Съб Фев 01, 2020 12:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение Re: DS1338Z
Интегралката се оказа доста точна! Едва ли ще се настройва често. От обяд днес не е дала видима разлика. Най-вероятно ще направя някаква тъпа процедурка за настройка понеже имам 2х7 сегментен индикатор + 4 бутона.

_________________
www.elkran.com


Съб Фев 01, 2020 5:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8873
Местоположение: Разград
Мнение Re: DS1338Z
За проверка дали е минал сетъп - ползваш NVRAM-а - записваш в няколко байта нещо си + чексума и няма как при махане на батерията да се възстанови същото :) Ама да кажеш точен в рамките на ден - нищо не значи. Точен се казва в рамките на година. Примерно DS3232 дава +/-30 сек. на година.


Пон Фев 03, 2020 3:58 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3074
Мнение Re: DS1338Z
Цитат:
Интегралката се оказа доста точна! Едва ли ще се настройва често. От обяд днес не е дала видима разлика.

Точна,точна...колко да е точна? Колкото кварца, дето си запоил.
На кое казваш видима разлика?


Пон Фев 03, 2020 6:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8873
Местоположение: Разград
Мнение Re: DS1338Z
Ами от лични наблюдения - кварц от Комет дава половин до една минута на месец при стайна температура - иде реч секунда - две на ден. В сравнение с DS3232 е направо супер неточно - там е 0.08 - 0.12 секунди на ден макс. Направо в порядък. Да не говорим какво става при студено или топло.


Пон Фев 03, 2020 6:58 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2581
Местоположение: Велико Търново / София
Мнение Re: DS1338Z
Е може да се сложи външен термостатиран осцилатор. Само че консумацията няма да е батерийна и се обезсмисля.
Все пак може би може с тримеркондензатор няколко пикофарада да се бута леко, ако разбира се няма влияние от температурата.
п.с. в една руска книга имаше схема на часовни с ТТЛ схеми точността беше под 1сек. на месец.

_________________
https://github.com/slav4ocom/


Пон Фев 03, 2020 7:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8873
Местоположение: Разград
Мнение Re: DS1338Z
Ами аз какво говоря :) DS3232 си е с вграден кварц и автоматична температурна компенсация и е с батерийна консумация. Даже като бонус има достъп до регистъра с термометъра и може да се ползва за мерене на температурата в кутията. И това съм ползвал - едно устройство дето го искаха с точен часовник и акумулатори в кутията - вместо да слагам допълнителен термометър ползвам тоя на часовника за да компенсирам температурно заряда на батерията. И половината NVRAM му ползвам да си пазя разни параметри дето не са съвсем за EEPROM. Отначало като бяха новинка бяха скъпички ама сега им паднаха цените.


Пон Фев 03, 2020 9:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2201
Мнение Re: DS1338Z
Гледах го това DS3232, просто ми се стори прекалено скъпо за конкретния случай. На практика у-вото следи 2 температури - една в бойлер и една в котел. Като стане топло в котела и студено в бойера пуска помпа. Часовникът е за задаване на някакви часови активности(не знам точно какво ще го прави ...). Така че мисля 1-2 минути на месец при положени, че работи само зимата...

_________________
www.elkran.com


Вто Фев 04, 2020 6:25 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни