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

 
 
> DS1338 + XMEGA
Pavel_Bor
сообщение Jul 6 2011, 12:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 15-04-10
Из: Украина
Пользователь №: 56 660



В даташите на эти часики указаны 2 режима работы: Fast mode(400КГц), Standart mode(100КГц).
В меге инициализирован RC на 32Мгц.
Как между собой связать скорости. или какое время нужно давать при задержке.

При коде следующего вида никаких изменений не происходит..

CODE
void rtc_init()
{
RTC_DATA_DIR_SET;
RTC_DATA_SET;
RTC_SCL_UP;
delay_us(1);
}

void rtc_start()
{
RTC_DATA_CLR;
delay_us(1);
RTC_SCL_DOWN;
delay_us(1);
}

void rtc_stop()
{

RTC_SCL_UP;
delay_ms(1);
RTC_DATA_DIR_SET;
RTC_DATA_SET;
delay_ms(1);
}

void rtc_write (unsigned char buffer)
{
unsigned char MASK;
RTC_DATA_DIR_SET;
for(i=8;i>=0;--i)
{
if(buffer&&MASK )
RTC_DATA_SET;
else
RTC_DATA_CLR;
RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
MASK>>1;
}

RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
}

unsigned char read_rtc()
{
unsigned char buffer=0;

RTC_DATA_DIR_CLR;
for(i=8;i>=0;--i)
{
buffer|=((buffer<<1)||(PORTE.IN&PIN3_bm));
RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
}
return buffer;
}

void RTC_ACKNOWLEGDGE_0()
{
RTC_DATA_DIR_SET;
RTC_DATA_SET;
delay_ms(1);
RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
}

void RTC_ACKNOWLEGDGE_1()
{
RTC_DATA_DIR_SET;
RTC_DATA_CLR;
delay_ms(1);
RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
}


Сообщение отредактировал IgorKossak - Jul 6 2011, 20:08
Причина редактирования: [codebox]!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Jul 7 2011, 10:23
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



В функции rtc_write после цикла выставления байта на шину, необходимо выставить данные=1, для того, что бы после дополнительного клока проанализировать принятый от часов бит АСК

Цитата
А при чтении отправлять?


Да. Бит АСК всегда формирует приемник. При записи - это часы, при чтении - проц. При чтении последнего байта - формирование NACK

Сообщение отредактировал alexeyv - Jul 7 2011, 10:25
Go to the top of the page
 
+Quote Post
Pavel_Bor
сообщение Jul 7 2011, 10:36
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 15-04-10
Из: Украина
Пользователь №: 56 660



Код

bool RTC_ACKW()
{
    RTC_DATA_DIR_CLR;          
    RTC_SCL_DOWN;
    delay_us(100);
    RTC_SCL_UP;
    while(PORTE.IN&PIN3_bm!=0);
    delay_us(100);      
    RTC_SCL_DOWN;
    delay_us(100);
    return 1;
              
}

void RTC_ACKR()
{
    RTC_DATA_DIR_SET;
    RTC_DATA_SET;
    delay_us(100);          
    RTC_SCL_UP;
    delay_us(100);          
    RTC_SCL_DOWN;
    delay_us(100);          
}


так пойдет?

Сообщение отредактировал Pavel_Bor - Jul 7 2011, 10:43
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pavel_Bor   DS1338 + XMEGA   Jul 6 2011, 12:14
- - alexeyv   Кодvoid rtc_write (unsigned char buffer) {...   Jul 7 2011, 04:55
|- - Pavel_Bor   ЦитатаЗначение с шины надо считывать ПОСЛЕ подачи ...   Jul 7 2011, 06:04
- - alexeyv   1. А это исправил? Цитата2. MASK>>1; - перем...   Jul 7 2011, 06:39
|- - Pavel_Bor   Цитата1. А это исправил? написал по другому if(bu...   Jul 7 2011, 07:18
- - alexeyv   1. А не забыл в rtc_init что-то типа RTC_SCL_DIR_S...   Jul 7 2011, 07:52
|- - Pavel_Bor   RTC_SCL_DIR_SET; в инициализации портов ЦитатаЭт...   Jul 7 2011, 08:11
- - alexeyv   Цитата"&"="*" "&...   Jul 7 2011, 08:36
|- - Pavel_Bor   ЦитатаВ первом листинге не было!!! я ...   Jul 7 2011, 08:51
- - alexeyv   Цитатая в листинг не включал. Так может ошибки в ...   Jul 7 2011, 09:01
|- - Pavel_Bor   Цитата(alexeyv @ Jul 7 2011, 12:01) Так м...   Jul 7 2011, 09:09
- - alexeyv   Поздравляю! Только 248=0xF8, а 0xFF=255.   Jul 7 2011, 09:17
|- - Pavel_Bor   Цитата(alexeyv @ Jul 7 2011, 12:17) Тольк...   Jul 7 2011, 09:29
- - alexeyv   функцию контроля АСК проще сделать не отдельно, а ...   Jul 7 2011, 10:56
|- - Pavel_Bor   ЦитатаМаленький вопрос. Подтягивающие резисторы на...   Jul 7 2011, 11:04
- - alexeyv   ЦитатаНаправление порта должно быть входом иначе н...   Jul 7 2011, 11:09
|- - Pavel_Bor   Цитата(alexeyv @ Jul 7 2011, 14:09) В смы...   Jul 7 2011, 11:21
- - alexeyv   Цитата(Pavel_Bor @ Jul 7 2011, 16:21) а в...   Jul 8 2011, 03:00
|- - Pavel_Bor   Я так понимаю время задержки между тактами значени...   Jul 8 2011, 07:23
- - alexeyv   Цитатаwhile(in_sda()); Во время подачи клока, по ...   Jul 11 2011, 04:39
|- - Pavel_Bor   С часами уже все ок) Значение с внешнего RTC (DS13...   Jul 11 2011, 11:37
- - alexeyv   ЦитатаПрерываний будет много но со временем. (клав...   Jul 11 2011, 12:10
- - Pavel_Bor   Сделаем. Спасибо   Jul 11 2011, 13:29


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:01
Рейтинг@Mail.ru


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