Страница 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
но с часами был прикол что они по умолчанию не идут их надо запускать в ручную
буду знать, спасибо!