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

 
 
> Часы 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
 
Start new topic
Ответов (1 - 10)
Nemo2000
сообщение Apr 18 2006, 07:08
Сообщение #2


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

Группа: Свой
Сообщений: 79
Регистрация: 8-04-05
Из: Санк-Петербург
Пользователь №: 3 972



схемку бы посмотреть...
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Apr 18 2006, 07:17
Сообщение #3


Знающий
****

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



Цитата(Nemo2000 @ Apr 18 2006, 11:08) *
схемку бы посмотреть...


Из даташита, на первой странице
Vbat = 3-4.5В
Прикрепленные файлы
Прикрепленный файл  DS1305.bmp ( 46.86 килобайт ) Кол-во скачиваний: 57
 
Go to the top of the page
 
+Quote Post
Nemo2000
сообщение Apr 18 2006, 08:07
Сообщение #4


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

Группа: Свой
Сообщений: 79
Регистрация: 8-04-05
Из: Санк-Петербург
Пользователь №: 3 972



при записи PORT_DS130x_IO
при чтении PIN_DS130x_IO
так должно и быть?
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Apr 18 2006, 09:57
Сообщение #5


Знающий
****

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



Цитата(Nemo2000 @ Apr 18 2006, 12:07) *
при записи PORT_DS130x_IO
при чтении PIN_DS130x_IO
так должно и быть?


Конечно.
При записи в дивайс (DDR = 1) пишем в порт, при чтении из дивайса (DDR = 0) читаем с пина.
Go to the top of the page
 
+Quote Post
Nemo2000
сообщение Apr 18 2006, 10:24
Сообщение #6


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

Группа: Свой
Сообщений: 79
Регистрация: 8-04-05
Из: Санк-Петербург
Пользователь №: 3 972



Поскольку с AVR я не работал, уточню, порт - это 8 бит(пинов) или под этим подразумевается один пин?
PIN_DS130x_IO это часть порта PORT_DS130x_IO?
В общем это все к тому, что при изменении направления запись/чтение не получается ли так, что у Вас становятся входами и
PORT_DS130x_SCLK, PORT_DS130x_CE?
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Apr 18 2006, 13:07
Сообщение #7


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Вообще в АВР для работы с портом используются три имени - DDR, PORT и PIN. DDR - для установки направления (ввод/вывод), PORT для вывода, PIN для ввода. Скажем, для вывода на ноги порта С надо писать
Код
DDRC = 0xFF;
PORTC = 0x12;

а для чтения состояния ног:
Код
DDRC = 0x00;
char i = PINC;

Аналогично можно работать с каждым битом порта отдельно:
Код
DDRC_Bit4 = 1;
PORTC_Bit4 = 1;


По самой проблеме ничего сказать не могу, не сталкивался с таким поведением... На Vccif точно подается 5 вольт? И в 8 раз меньше - это сколько по значению?
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Apr 19 2006, 13:33
Сообщение #8


Знающий
****

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



Цитата(AndyBig @ Apr 18 2006, 17:07) *
По самой проблеме ничего сказать не могу, не сталкивался с таким поведением... На Vccif точно подается 5 вольт? И в 8 раз меньше - это сколько по значению?


На Vccif как по приведённой схеме 5В точно.
И в 8 раз меньше это по делениям осциллографа относительно уровня запроса от AVR.
Сдаётся мне, что это не аппаратная проблема т.к. и DS и HT работают одинаково «тихо», а подключение их разное, у HT только один источник питания и ошибиться там не возможно, по моему.
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Apr 20 2006, 15:17
Сообщение #9


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Программно, насколько я в курсе, уровень сигналов ни в HT, ни в DS никак ограничить нельзя - не предусмотрено такого. Что еще напрашивается - AVR держит на этих выводах низкий уровень (не переключает их в режим входов). Попробуйте в линии связи между AVR и часами поставить резистро 500-800 Ом и посмотрите после этого уровень сигнала со стороны часов и со стороны AVR.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Apr 21 2006, 10:09
Сообщение #10


Знающий
****

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



А кода работаю на вход (DDR = 0) подтягивать к плюсу нужно (PORT = 1)? Или там, внутри всё реализовано?
Пробовал при чтении (DDR = 0) PORT = 1, читает 0xFF, PORT = 0, читает 0x00. Получается читает то что записано в PORT.
С резистором попробую.
Go to the top of the page
 
+Quote Post
arttab
сообщение Apr 22 2006, 17:19
Сообщение #11


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

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



попробуйте внешние резисторы подтяжки 5к-10к. с подключеной мк и без. очень похоже на отсутствие подтяжки.
или я не понял или Вы неправильно читаете состояния нв входе. читать надо PIN


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

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:33
Рейтинг@Mail.ru


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