1.в даташите чётко написано USICS0 в еденицу + USICS1 в еденицу + USICLK в ноль = external negative edge , делаем так,смотрим осцилом и видим что данные сдвигаються по фронту а не спаду.... (может я чтото перевожу конечно не так но мне кажеться что negative edge это всётаки спад(переход из еденицы в ноль) ,ну да бог с ним поставил в еденицу только USICS1 стало по спаду.
2. как формировать старт и стоп если в то время когда клок стоит в еденице изменение 7го бита сдвигового регистра ни чего не дает?(как я понимаю защита от дураков).но в даташите написано вот что по этому поводу -
-====The a start condition is generated by the Master by forcing the SDA low line while
the SCL line is high (A). SDA can be forced low either by writing a zero to bit 7 of
the Shift Register,====- что я и делаю сообственно но без нужного эффекта
-===or by setting the corresponding bit in the PORT Register to
zero. Note that the Data Direction Register bit must be set to one for the output to
be enabled.===- либо способ номер два который не хочу по принципиальным соображениям,тобишь раз написано то должно пахать.

теперь приведу коротенький текст которым тестирую что когда клок в 1це то данные не меняються.
.equ usip=portb
.equ usidd=ddrb
.equ usick=7
.equ usisda=5
sbi usip,usick
sbi usip,usisda
sbi usidd,usisda
sbi usidd,usick
;подтянули порты и настроили направление
ser r16
out usidr,r16
;сунули в шифт регистр 1чки
ldi r16,(1<<USIWM1)|(1<<USICS1)
out usicr,r16
;настроили уси в twi с внешним клоком и сменой данных по спаду
lp000:
cbi usip,usick
rcall ps_400khz
sbi usidr,7
rcall ps_400khz
cbi usidr,7
rcall ps_400khz
;поставили клок в нолик,попробовали сменить sda - получаеться
sbi usip,usick
rcall ps_400khz
sbi usidr,7
rcall ps_400khz
cbi usidr,7
rcall ps_400khz
;поставили клок в еденичку,попробовали сменить sda - дулю получилось
rjmp lp000
ps_400khz: ;Просто пауза чтоб видеть на осциле хорошо
ldi r16,0
lpps400khz:
dec r16
brne lpps400khz
ret
собственно вот какие вопросы,кто практиковал отзовитесь
