QUOTE (ILYAUL @ Nov 15 2010, 16:30)

И Ваш код в архивном виде ,плиз
Пардон, а что это за код?
TC1320+Atmega2561: Наблюдается очень интересная но совсем непонятная вещь, из-за которой уже 5-й день бьюсь головой о стенку. Первый байт - старт бит отсылается нормально, видно на осциллографе; второй байт - адрес отсылается тоже нормально( но если туда прописать не 0x90, т.е. адрес TC1320 - ТС1320 поднимает SDA в высокий уровень и не воспринимает вообще ничего!!!!!!); а вот в начале пересылки 3 байта данных после приема от ТС1320 ACK идет маленький скачек в пол высокого уровня и что бы я ни записывал, на осциллографе получается сООвсем не та цифра которую я заношу.
Что это может быть за скачок и почему он препятствует мне продолжать дальше?
спасибо.
CODE
.include "m2561def.inc"
.device ATMEGA2561
;--çàäàåì èìåíà ðåãèñòðàì------------------
.def temp = r22 ;ðàáî÷àÿ ïåðåìåííàÿ
; ---------------Inizialization ------
ldi r16,high(RAMEND) ; Íà÷àëî
out SPH,r16 ; îñíîâíîé ïðîãðàììû
ldi r16,low(RAMEND)
out SPL,r16
;------ Port Init--------
ldi r17, 0x00
out PINE, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû
ldi r17, 0x08
out DDRE, r17 ; ïîðò íà âûâîä äëÿ àêòèâàöèè SHDN íà ADM222
ldi r17, 0x00
out PINB, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû
ldi r17, 0x60
out DDRB, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ
ldi r17, 0x00
out PINA, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû
ldi r17, 0xFF
out DDRA, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ
ldi r17, 0xFF
out PINC, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû
ldi r17, 0xFF
out DDRC, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ
ldi r17, 0x00 ; âñå îñòàëüíûå íà ââîä
out DDRD, r17
out DDRF, r17
out DDRG, r17
ldi r26,0x40
ldi r27,0x20
ldi r18, 0xD0
sts XMCRA, r18 ; Enable External Memory
ldi r18, 0x80
sts XMCRB, r18 ; Whole PortC for XRAM
ldi r16, 0x91
sts TWAR,r16 ; Slave address to TWAR
ldi r18, 0xC6
sts TWBR, r18 ; Bit Rate 0x48 - 100khz , 0xC6 - 10kHz
ldi r18, 0x00
sts TWSR, r18 ; Prescaler bits
;-------------1 Start packet-------------------------------------------------------
ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
sts TWCR, r16 ; Send s-t-a-r-t condition
wait1:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait1 ; Wait for START bit to be transmitted
lds r16, TWSR
andi r16,0xF8
cpi r16, 0x08
brne wait1 ; Check TWSR if START was sent
;------------2 send Address-----------------
ldi r16, 0x90
sts TWDR,r16 ; Load Address in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait2:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait2
break ; Wait for ADRESS to be transmitted
lds r16, TWSR
andi r16,0xF8
cpi r16, 0x18
brne wait2 ; Check TWSR if ADRESS was sent
out PORTB, r27
;----------------3 send Command--------------------------------
lds r16, 0x01
sts TWDR,r16 ; Load 00 Command
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait77:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait77 ; Wait for DATA to be transmitted
lds r16, TWSR
andi r16,0xF8
cpi r16, 0x28
brne wait77 ; Check TWSR if Command was sent
;----------------4 send Data---------------------------------------
jmp error
lds r16, 0x00
sts TWDR,r16 ; Load 1F to DAC as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit
wait88:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait88 ; Wait for DATA to be transmitted
lds r16, TWSR
andi r16,0xF8
cpi r16, 0x28
brne wait88 ; Check TWSR if ADRESS was sent
;out PORTB, r26
error:
out PORTB, r27
ldi r16,(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
sts TWCR, r16 ; Send s-t-o-p condition