реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> DS1307 и день недели
aaarrr
сообщение May 6 2008, 10:17
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, все правильно.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 6 2008, 10:49
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Дополнительный материал.
Таблицы я вставил по тексту[attachment=20717:attachment]

Сообщение отредактировал ILYAUL - May 6 2008, 11:36


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 6 2008, 11:14
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Цитата(ILYAUL @ May 6 2008, 13:49) *
Дополнительный материал.
Собственно можно взять D/S на микросхему и к приложенному файлу подставлять из D/S рисунки и таблицы

Так это ж другая микросхема. У меня 1307, а это 1337 07.gif
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 6 2008, 12:07
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(TarasG @ May 6 2008, 15:14) *
Так это ж другая микросхема. У меня 1307, а это 1337 07.gif

Честно говоря особых отличий в части часов я не замеметил , а то что вместо дополнительной памяти используются два будильника... wacko.gif
Поэтому перевел только описание Регистра управления для DS1307 .Биты RS0-RS1 програмируются так же как и DS1337

Сообщение отредактировал ILYAUL - May 6 2008, 12:08


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 6 2008, 12:24
Сообщение #20


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



К сожалению, самого главного в 1337 нет (как и в 1307). Я имею ввиду автоматическое вычисление дня недели smile.gif Но этот вопрос я уже решил.
Кстати, ещё интересно, есть ли такая функция в PCF8583 от Philips?
Go to the top of the page
 
+Quote Post
arttab
сообщение May 6 2008, 13:42
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Извините что не в тему, но по 1307.
если я не делал больших пайз между считыванием данных, то данные косячились. Работал по флагу готовности. А у вас как со считыванием данных? Без проблем?


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 6 2008, 14:05
Сообщение #22


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Цитата(arttab @ May 6 2008, 16:42) *
Извините что не в тему, но по 1307.
если я не делал больших пайз между считыванием данных, то данные косячились. Работал по флагу готовности. А у вас как со считыванием данных? Без проблем?

А что Вы называете большими паузами? У меня считывание данных идёт в бесконечном цикле, в котором помимо этого содержится также проверка состояний кнопок (антидребезговая задежка 30ms на 2 кнопки), проверка режима работы устройства и обработка нажатий кнопок (изменение режима работы). Кроме того, примерно 100-150 раз в секунду срабатывает прерывание от таймера (для динамической индикации). Сбоев вроде не было smile.gif
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 6 2008, 14:45
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Я считываю по прерыванию от DS каждую секунду , вроде проблем нет


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 6 2008, 15:43
Сообщение #24


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Цитата(ILYAUL @ May 6 2008, 17:45) *
Я считываю по прерыванию от DS каждую секунду , вроде проблем нет

Я тоже изначально думал так сделать, но функции работы с i2c и с DS в частности связаны с ожиданием. Поэтому в момент прерывания у меня на мгновение стала пропадать индикация sad.gif Пришлось сделать так, как я описал smile.gif
Go to the top of the page
 
+Quote Post
kolobok0
сообщение May 6 2008, 15:44
Сообщение #25


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(defunct @ May 6 2008, 00:01) *
.. А на деле - ведь нет никакой проблемы.


+1 бОльшая проблема будет когда будет 2070 год...от тогда проблема будет..а пока...фигня енто всё...


с уважением
(круглый)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 6 2008, 16:44
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(TarasG @ May 6 2008, 19:43) *
Я тоже изначально думал так сделать, но функции работы с i2c и с DS в частности связаны с ожиданием. Поэтому в момент прерывания у меня на мгновение стала пропадать индикация sad.gif Пришлось сделать так, как я описал smile.gif

Вот тут же и нашёл , и что интересно ровно год назад . Так сказать все ответы на Ваши вопросы в одной куче
http://electronix.ru/forum/index.php?showt...=23755&st=0

Сообщение отредактировал ILYAUL - May 6 2008, 16:46


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 6 2008, 17:20
Сообщение #27


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Цитата(ILYAUL @ May 6 2008, 19:44) *
Вот тут же и нашёл , и что интересно ровно год назад . Так сказать все ответы на Ваши вопросы в одной куче
http://electronix.ru/forum/index.php?showt...=23755&st=0

Та это и проблемами назвать как-то трудно. Работает то всё нормально...
Go to the top of the page
 
+Quote Post
arttab
сообщение May 7 2008, 14:04
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



я паузу в 9000 нопов на 8MHz ставил после выставления флага, но мне кажеться что я не правильно проверял. вот кусок тестовой проги:

//start
TWCR=(1<<TWINT)|(1<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE and START
while (TWCR&(1<<TWINT)==1) {;} // wait set START on the TWI
__delay_cycles(9000);
// UDR=TWSR;
//ask device on adres and Write
TWDR=ADRESDS|0x00; // adres and read
TWCR=(1<<TWINT)|(0<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE and Adres R
while (TWCR&(1<<TWINT)==1) {;} // wait TWI
__delay_cycles(9000);
// UDR=TWSR;
//read and send adres cell
TWDR=0x00; // adres ask cell
TWCR=(1<<TWINT)|(0<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE
while (TWCR&(1<<TWINT)==1) {;} // wait TWI
__delay_cycles(9000);
// UDR=TWSR;


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 8 2008, 08:41
Сообщение #29


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Цитата(arttab)
//start
TWCR=(1<<TWINT)|(1<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE and START
while (TWCR&(1<<TWINT)==1) {;} // wait set START on the TWI
__delay_cycles(9000);
// UDR=TWSR;
//ask device on adres and Write
TWDR=ADRESDS|0x00; // adres and read
TWCR=(1<<TWINT)|(0<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE and Adres R
while (TWCR&(1<<TWINT)==1) {;} // wait TWI
__delay_cycles(9000);
// UDR=TWSR;
//read and send adres cell
TWDR=0x00; // adres ask cell
TWCR=(1<<TWINT)|(0<<TWSTA)|(0<<TWSTO)|(1<<TWEN); // on TWE
while (TWCR&(1<<TWINT)==1) {;} // wait TWI
__delay_cycles(9000);
// UDR=TWSR;

У меня сделано немного иначе. Функция не бесконечно ждёт сброса TWINT, а определённое время, по прошествии которого выдаёт сообщение об ошибке.
Код
void i2c_delay(void)
{
    if (i2c_error)
        return;
    for (unsigned char i = 0; i < 100; i++) {
        if (TWCR & (1 << TWINT))
            return;
    _delay_loop_1(0.000001 * F_CLK);
    }
    i2c_error = 1;
}

Вообще, по-моему, так сильно сложнополучается. Работу с TWI лучше разбить на функции, так проще.
Go to the top of the page
 
+Quote Post
arttab
сообщение May 9 2008, 04:12
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



это проба работы с ds1307, а не готовая часть проги.
я вопрос задал по задержки после выставления флага готовности.
Кстати, пока twi не готов его статус 0xff. вот где собачка порылась.
надо
while ( (TWCR&(1<<TWINT)==1) && (TWCR!=0xff) ) {;} // wait set START on the TWI

жаль свой test board на работе оставил, не проверю в ближайшее время


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 03:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.0196 секунд с 7
ELECTRONIX ©2004-2016