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

 
 
> DS1307 может оживить время?, Помогите прочитать с DS1307 больше одного байта! плиз..
AVRdeveloper
сообщение Jul 24 2008, 12:43
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 8-02-08
Пользователь №: 34 857



Всем доброе время суток! У меня проблема с DS1307. Использую Мегу16
После инициализации МК произвожу чтение с этой МС раз в секунду таким способом:
Первый байт принимаеться каждый раз с новым значением, а второй - постоянно $FF
Как принять последовательность из нескольких байт?


call TWI_init ; инитим I2C МК
call TWI_stop
call TWI_start
ldi r16,0b11010001
call TWI_send_adr
ldi r16,0 ; r16 используеться для передачи след. ф.-ии значений
call TWI_send_data
call get_byte1 ; При приеме первого байта считываеться случаqное число регистра данных TWI
call get_byte2 ; При приеме второго байта постоянно принимается $FF
call TWI_stop
..
..
..
TWI_init:
ldi r16,(0<<TWPS0)|(1<<TWPS1)
out TWSR,r16
ldi r16,9 ; битрейт при частоте 8МГц меньше 100кГц
out TWBR,r16
ldi r16,(1<<TWEA)|(1<<TWEN)|(0<<TWIE);
out TWCR,r16
ret
;
;
TWI_start:

ldi r16, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
out TWCR, r16; формирование режима START

waitST:
in r16,TWCR ; Проверка бита TWINT
sbrs r16,TWINT
rjmp waitST ; Не получен TWINT - цикл

RETURN:
ret

TWI_send_adr:

// проверим, что предидущее состояние было старт
// в регистре r16 содержится адрес адрессуемого устройства
push r16

in r16,TWSR ; Проверка кода ответа
andi r16,0xF8
cpi r16,$08
breq dalee11
cpi r16,$10
breq dalee11 ; Правильный код -выход из подпрограммы
brne TWI_error ; Нет - повтор.

dalee11:
pop r16
out TWDR, r16
ldi r16, (1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(0<<TWIE)
out TWCR, r16



wait2:
in r16,TWCR
sbrs r16,TWINT
rjmp wait2
// передача не происходит? или установка флага не происходит из-за другой причины?
in r16,TWSR
andi r16, 0xF8
cpi r16, $18
breq tsa_00
cpi r16, $40
brne TWI_ERROR
tsa_00:
ret
;
get_byte1:
in r16,TWCR
sbrs r16,TWINT
rjmp get_byte1
in r16,twdr
ldi XH,high(secs_twi1)
ldi XL,low(secs_twi1)
st x,r16 // Секунды в БЦД формате записали
ldi r16,(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(0<<TWIE)
out TWCR,r16
ret
;
;
get_byte2:
in r16,TWCR
sbrs r16,TWINT
rjmp get_byte2
in r16,twdr
ldi XH,high(secs_twi2)
ldi XL,low(secs_twi2)
st x,r16 // Секунды в БЦД формате записали
ldi r16,(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(0<<TWIE)
out TWCR,r16
ret
;
TWI_send_data:
out TWDR, r16
ldi r16, (0<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE)
out TWCR, r16;
wait3:
sei
nop
cli
in r16,TWCR
sbrs r16,TWINT
rjmp wait3
in r16,TWSR
andi r16, 0xF8
cpi r16, $28;MT_DATA_ACK
breq tsa_01
cpi r16,$58
breq tsa_01
cpi r16,$50
brne TWI_error
TSA_01:
ret

Сообщение отредактировал AVRdeveloper - Jul 24 2008, 12:44
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVRdeveloper   DS1307 может оживить время?   Jul 24 2008, 12:43
- - aaarrr   ACK, нaверное, не выставляется после 1-о чтения.   Jul 24 2008, 13:09
|- - Шалапут:-)   Цитата(aaarrr @ Jul 24 2008, 16:09) ACK, ...   Jul 24 2008, 13:55
|- - defunct   Цитата(Шалапут:-) @ Jul 24 2008,...   Jul 24 2008, 14:27
- - Александр Куличок   TWI_send_data: out TWDR, r16 ldi r16, (0<<TW...   Jul 24 2008, 14:24
|- - AVRdeveloper   Цитата(Александр Куличок @ Jul 24 2008, 17...   Jul 25 2008, 05:23
|- - AVRdeveloper   Цитата(AVRdeveloper @ Jul 25 2008, 08:23)...   Jul 25 2008, 14:56
|- - Qwertty   Цитата(AVRdeveloper @ Jul 25 2008, 18:56)...   Jul 25 2008, 17:41
|- - defunct   Цитата(AVRdeveloper @ Jul 25 2008, 17:56)...   Jul 25 2008, 22:12
|- - AVRdeveloper   Цитата(defunct @ Jul 26 2008, 01:12) Стар...   Jul 28 2008, 07:14
|- - defunct   Цитата(AVRdeveloper @ Jul 28 2008, 10:14)...   Jul 28 2008, 09:58
|- - AVRdeveloper   Цитата(defunct @ Jul 28 2008, 12:58) не н...   Jul 28 2008, 12:37
|- - Олег Хохлов   вот мои библиотеки для работы с DS1307 для IAR C, ...   Jul 30 2008, 13:57
- - Шалапут:-)   Всем спасибо, ваши советы помогли, но все равно пе...   May 17 2012, 09:12
|- - ILYAUL   Цитата(Шалапут:-) @ May 17 2012,...   May 17 2012, 11:49
- - chu   Цитата(AVRdeveloper @ Jul 24 2008, 19:43)...   Jun 4 2012, 10:44
- - ILYAUL   Алгоритм считывания данных приведён на Figure 6. ...   Jun 4 2012, 17:07
- - chu   у меня с ds1307 таких проблем, как у топикстартера...   Jun 5 2012, 12:11


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

 


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


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