Страница 1 из 1

помогите с I2C

Добавлено: Ср апр 15, 2009 20:42:32
break
здравсвуйте, уважаемые!
очень надеюсь на вашу помощь. написал программу для обмена данными AtMega8 с ds1307. но она почему то не работает, уже даже и не знаю, что придумать. если кто может, посмотрите где у меня ошибка.
написано на ассемблере.

Добавлено: Ср апр 15, 2009 21:16:00
ibiza11
Ю.Ревич Практическое программмирование микроконтроллеров Atmel AVR на языке Ассемблера
в этой книжке есть подробное описание и пример работы по шине i2c с памятью и часами DSxxx


ps ссылку поправил, просто если в .djvu, то качает как страничку. щас будет как архив.

Добавлено: Ср апр 15, 2009 23:34:29
Pooher
Для меги8 проще, на верное, так:

Код: Выделить всё

StopTWI:
  			ldi Tmp, (1<<TWINT)|(1<<TWSTO)|(1<<TWEN) ;стоп
  			out TWCR, Tmp1
			ret


DS_Write: ;Запись
  			out TWDR, Tmp
  			ldi Tmp, (1<<TWINT)|(1<<TWEN)
  			out TWCR, Tmp
  			rcall Wait
 			ret

Start:
			ldi Tmp, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) ;Старт
  			out TWCR, Tmp
  			rcall	Wait
			ret

NoACK:
			ldi Tmp, (1<<TWINT)|(1<<TWEN) ;NOACK
  			out TWCR, Tmp
  			rcall Wait	
			ret


Wait: ;Ожидание
 		  	in Tmp, TWCR	
  			sbrs Tmp, TWINT
  			rjmp Wait
			ret	

Read: ;Чтение
  			ldi Tmp, (1<<TWINT)|(1<<TWEN)|(1<<TWEA)
  			out TWCR, Tmp
  			rcall Wait
  			in Tmp, TWDR	
			ret

Добавлено: Чт апр 16, 2009 17:34:54
break
Pooher
Для меги8 проще, на верное, так:
не могу с вами не согласится. но дело в том, что я программки пока для atmega8 и на них их испытываю. но потом буду переделывать на atmega8515, а на нем к несчастью I2C пишется программно...

но все равно спасибо!!!

ibiza11 тебе тоже спасибо!

Добавлено: Чт апр 16, 2009 18:25:50
shtorm
я в асме не очень, но с часами был прикол что они по умолчанию не идут их надо запускать в ручную....я вот както это проглядел

Добавлено: Пт апр 17, 2009 19:05:58
Pooher
break писал(а): потом буду переделывать на atmega8515
8515 уже не актуально.

Добавлено: Вс апр 19, 2009 10:42:51
break
но с часами был прикол что они по умолчанию не идут их надо запускать в ручную
буду знать, спасибо!