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

 
 
> at90s2313 + ds1302, проблема при взаимодействии AVR c DS1302
mishail
сообщение Mar 1 2006, 11:04
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 28-02-06
Пользователь №: 14 815



Доброе время суток.
Коллеги, помогите, пожалуйста, разобраться с часами (ds1302).

На at90s2313 прицепил ds1302 соответственно #define'ов.(на ds1302 питание подал только на VCC1)
Написал программульку записи|чтения часов (в данном примере только памяти [той, которой там 31 байт]).
С помощью функции write_3w_mem "записываю" строку в память... потом читаю (read_3w_mem) - возвращает исключительно 0xFF.

Где грабли? В чём я неправ?

-----------------------------------------------------------

#define W3_SCLK PD3
#define W3_IO PD4
#define W3_CE PD5

void init_3w(void)
{
DDRD |= (1 << W3_IO) | (1 << W3_SCLK) | ( 1<< W3_CE);
reset_3w();
wbyte_3w(0x8E); //запись CONTROL REGISTER
wbyte_3w(0x00); //значение
reset_3w();
}

void reset_3w(void)
{
cbi(W3_SCLK);
cbi(W3_CE);
sbi(W3_CE);
}

void wbyte_3w(unsigned char byte)
{
DDRD |= (1 << W3_IO);
unsigned char i;
for (i=0; i<8; ++i)
{
cbi(W3_IO);
if (byte & 0x01)
sbi(W3_IO);
cbi(W3_SCLK);
sbi(W3_SCLK);
byte >>= 1;
}
}

unsigned char rbyte_3w(void)
{
unsigned char i, rbyte, tmp;
rbyte = 0;

DDRD &= ~(1 << W3_IO); //PD4 - вход
sbi(W3_IO); //включить pull-up-resistor

for(i=0; i<8; ++i)
{
sbi(W3_SCLK);
cbi(W3_SCLK);
tmp = (unsigned char)PIND;
tmp >>= W3_IO
tmp &= 0x01;
tmp <<= 7;
rbyte >>= 1;
rbyte |= tmp;
}
return rbyte;
}

void write_3w_mem(unsigned char addr, unsigned char data)
{
unsigned char REG = 0xC0 | addr << 1;
reset_3w();
wbyte_3w( REG );
wbyte_3w( data );
reset_3w();
}

unsigned char read_3w_mem(unsigned char addr)
{
unsigned char REG = 0xC0 | addr << 1 | 1;
reset_3w();
wbyte_3w( REG );
unsigned char res = rbyte_3w();
reset_3w();
return res;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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