Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 15.12.2005, 00:06  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию Помогите разобраться с внешней памятью по 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
Реклама:
graham вне форума  
Непрочитано 15.12.2005, 15:35  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Утром, встал, все отладил.
graham вне форума  
Непрочитано 16.12.2005, 16:19  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию

А вечером что курил?
Gnider вне форума  
Непрочитано 16.12.2005, 17:01  
graham
Прописка
 
Регистрация: 11.01.2005
Сообщений: 196
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
graham на пути к лучшему
По умолчанию

Сообщение от Gnider
А вечером что курил?
портянки деда
Ничего не курил. Запарился за день...
graham вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot