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

 
 
> 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 11 2011, 04:39
Сообщение #2


Местный
***

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



Цитата
while(in_sda());


Во время подачи клока, по одному фронту производится выставление данных передатчиком(в данном случае мастером), а по другому фронту - считывание приемником ( в данном случае слейвом)!
Ждать до бесконечности появления нуля на шине SDA (ACK) НЕЛЬЗЯ, т.к. при подаче фронта SCL слейв ОБЯЗАН выставить ACK, иначе это говорит об отсутствии устройства (слейва) на шине!

Посмотри осциллографом физическое наличие сигнала АСК на шине.

Еще вопрос - какие-либо прерывания в программе используются ?

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   В функции rtc_write после цикла выставления байта ...   Jul 7 2011, 10:23
|- - Pavel_Bor   Код bool RTC_ACKW() { RTC_DATA_DIR_CLR; ...   Jul 7 2011, 10:36
- - 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
|- - 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 Текстовая версия Сейчас: 25th July 2025 - 09:51
Рейтинг@Mail.ru


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