ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
73806 Топик полностью
IgorAVR (10.11.2006 09:16, просмотров: 1) ответил Алексей Мусин на ACK выдаете на первый байт?
А вот и кусок кода А вот и кусок кода, хотя я думаю что здесь всё правельно,а проблема с аппаратной частью, хотя бог его знает. serch_in_mem2: clr pos clr ZL mov temp,adr mov temp2,temp lsl temp ; lsl temp ; lsl temp ;Подготовили адрес cслова swap temp2 ; cbr temp2,241 ; sbr temp2,160 ;Подготовили адрес устройства mov TWIadr,temp2; rcall TWI_start ;Заслали дрес устройства mov TWIdata,temp ; rcall TWI_do_transfer ;;Заслали адрес слова inc temp2 ; mov TWIadr,temp2 ;Переключили адрес устройства в режим чтения из устройства rcall TWI_rep_start ;Делаем рестарт serch_in_mem3: clc rcall TWI_read ld temp,z+ cp temp,TWIdata brne serch_in_mem4 inc pos cpi pos,8 brlo serch_in_mem3 sec rcall TWI_read rcall TWI_stop sez ret serch_in_mem4: sec rcall TWI_read rcall TWI_stop inc adr brne serch_in_mem2 clz ret TWI_read: cbi ddrd,sdap rol TWIstat ; store acknowledge ; (used by TWI_put_ack) ldi TWIdata,0x01 ; data = 0x01 TWI_read_bit: ; do sbi DDRD,SCLP ; force SCL low rcall TWI_hp_delay ; half period delay cbi DDRD,SCLP ; release SCL ;cbi DDRD,SDAP ; release SCL rcall TWI_hp_delay ; half period delay clc ; clear carry flag sbic PIND,SDAP ; if SDA is high sec ; set carry flag rol TWIdata ; store data bit brcc TWI_read_bit ; while receive register not full TWI_put_ack: sbi DDRD,SCLP ; force SCL low ror TWIstat ; get status bit brcc TWI_put_ack_low ; if bit low goto assert low cbi DDRD,SDAP ; release SDA rjmp TWI_put_ack_high TWI_put_ack_low: ; else sbi DDRD,SDAP ; force SDA low TWI_put_ack_high: rcall TWI_hp_delay ; half period delay cbi DDRD,SCLP ; release SCL TWI_put_ack_wait: sbis PIND,SCLP ; wait SCL high rjmp TWI_put_ack_wait rcall TWI_hp_delay ; half period delay ret и т.д.