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

 
 
> Часы DS1305 и HT1380., Отвечают тихим шёпотом
Oleg_IT
сообщение Apr 18 2006, 06:55
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Собрал, подключил. данные не идут. осциллографом вижу что они работают (картинка на I/O выводе каждую секунду меняется, битики видны, генераторы тоже работают), но уровень сигнала в восемь раз меньше необходимого. Думаю AVR-ка именно поэтому их не видит. Игрался портами, пинами, особого разнообразия нет, не помогает.
Читаю секунды с DS так:

void WriteByte_DS130x(unsigned char Byte);
unsigned char ReadByte_DS130x(void);
unsigned char GetSec_DS130x(void)
{
unsigned char Sec;
PORT_DS130x_CE = 1;
WriteByte_DS130x(0x00);
Sec = ReadByte_DS130x();
PORT_DS130x_CE = 0;
return Sec;
}
void WriteByte_DS130x(unsigned char Byte)
{
unsigned char i;
DDR_DS130x_IO = 1;
for (i = 0; i < 8; i++)
{
PORT_DS130x_IO = Byte & 0x1;
PORT_DS130x_SCLK = 1;
PORT_DS130x_SCLK = 0;
Byte >>= 1;
}
}

unsigned char ReadByte_DS130x(void)
{
unsigned char i,Byte,TMP;
DDR_DS130x_IO = 0;
PORT_DS130x_IO = 1;
for (i = 0; i < 8; i++)
{
PORT_DS130x_SCLK = 1;
TMP |= PIN_DS130x_IO;
PORT_DS130x_SCLK = 0;
Byte |= (TMP << 7);
Byte >>= 1;
}
return Byte;
}

PORT_DS130x_IO, DDR_DS130x_IO … соответствующие порты AVR.
Пишу на IAR.
При чтении байта ставил и PORT_DS130x_IO = 1; и PORT_DS130x_IO = 0; Пробовал ставить задержки при установки клоков. Результат не меняется.

Что это может быть?
Go to the top of the page
 
+Quote Post



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

 


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


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