Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.12.2005, 00:06
|
|
Прописка
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Помогите разобраться с внешней памятью по I2C
Надо из at24c512 считывать байт. MK - mega8, частота 16944kHz, в TWBR записано при инициализации 10. После того как не получилось считать, извращался как мог, дошел до вот такого варианта, чтобы разобраться, вроде должно работать, но на повторной выдаче старта у меня в регистре TWSR значение $F8, пробовал задержку перед этим сделать, не помогает. Может кто подскажет что тут не так? Все метки ErrorTWI# выдают по uart в каком месте у меня происходит сбой.
Код:
|
.equ mSTART = $08
.equ mRepSTART = $10
.equ mtSLAW_ACK = $18
.equ mtSLAW_NACK = $20
.equ mtSLAR_ACK = $40
.equ mtSLAR_NACK = $48
.equ mtData_ACK = $28
.equ mtData_NACK = $30
.equ mArbitrationLost = $38
.equ mrData_ACK = $50 .equ mrData_NACK = $58 |
Код:
|
;Start
ldi temp, (1‹‹TWINT)|(1‹‹TWSTA)|(1‹‹TWEN) ;START
out TWCR, temp
RRB1: ;ожидание завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB1
in temp,TWSR
andi temp, $F8
cpi temp, mSTART
brne ErrorTWI1
;SLAW
ldi temp, SLAW
out TWDR, temp
ldi temp, (1‹‹TWINT) | (1‹‹TWEN)
out TWCR, temp
RRB2: ;ждем завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB2
in temp,TWSR
andi temp, $F8
cpi temp, mtSLAW_ACK ;проверка на подтверждение ответа одресованной памяти
brne ErrorTWI2
;Старшая тетрада адреса
out TWDR, ZH
ldi temp, (1‹‹TWINT) | (1‹‹TWEN)
out TWCR, temp ;начало передачи
RRB3: ;ожидание завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB3
in r16,TWSR
andi r16, $F8
cpi r16, mtData_ACK
brne ErrorTWI3
;Младшая тетреда адреса
out TWDR, ZL
ldi temp, (1‹‹TWINT) | (1‹‹TWEN)
out TWCR, temp ;начало передачи
RRB4: ;ожидание завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB4
in temp,TWSR
andi temp, $F8
cpi temp, mtData_ACK
brne ErrorTWI4
;Повторный старт
ldi temp, ((1‹‹TWINT)|(1‹‹TWSTA)||(1‹‹TWEN)) ;START
out TWCR, temp
RRB5: ;ждем завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB5
in temp,TWSR
andi temp, $F8
cpi temp, mRepSTART
brne ErrorTWI5
;SLAR
ldi temp, SLAR
out TWDR, temp
ldi temp, (1‹‹TWINT) | (1‹‹TWEN)
out TWCR, temp
RRB6: ;ждем завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB6
in temp,TWSR
andi temp, $F8
cpi temp, mtSLAR_ACK ;проверка на подтверждение ответа адресованной памяти
brne ErrorTWI6
;чтение данных, выдача NACK
ldi temp, ((1‹‹TWINT)|(1‹‹TWEN))
out TWCR, temp
RRB7: ;ждем завершения
in temp, TWCR
sbrs temp, TWINT
rjmp RRB7
in temp, TWSR
andi temp, $F8
cpi temp, mrData_NACK
brne ErrorTWI7
in temp2, TWDR ;загружаем в temp2 принятый байт
;STOP
ldi temp, ((1‹‹TWSTO)|(1‹‹TWINT)|(1‹‹TWEN))
out TWCR, temp
ret |
|
|
|
|
15.12.2005, 15:35
|
|
Прописка
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Утром, встал, все отладил.
|
|
|
|
16.12.2005, 16:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
А вечером что курил?
|
|
|
|
16.12.2005, 17:01
|
|
Прописка
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от Gnider
|
А вечером что курил?
|
портянки деда
Ничего не курил. Запарился за день...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Mega 8 + TWI (I2C) Slave Помогите.
|
west1111 |
Микроконтроллеры, АЦП, память и т.д |
46 |
10.07.2013 01:40 |
Работа с внешней памятью AVR, в эмуляторе
|
FxMODE |
Микроконтроллеры, АЦП, память и т.д |
3 |
27.02.2009 01:43 |
Работа с внешней памятью ATMega 8515
|
oksman |
Микроконтроллеры, АЦП, память и т.д |
0 |
28.11.2008 22:36 |
Pic с внешней памятью и дисплеем
|
dvg89 |
Микроконтроллеры, АЦП, память и т.д |
0 |
12.04.2008 02:32 |
Помогите с I2C
|
mdn_tec |
Микроконтроллеры, АЦП, память и т.д |
27 |
27.04.2007 17:56 |
Часовой пояс GMT +4, время: 12:52.
|
|