Mam glupi problem z Atmega32 i pamiecia flash 24C64 dzialajaca na i2c.
Napisalem program w assemblerze, podpialem pamiec na Portc,0 i 1 pamietajac o rezystorach podciagajacych 4,7k i uklad nie daje mi potwierdzenia po nadaniu do niego 8 bitow. Wczesniej robilem to pod '51 i bylo ok.Czas tez juz znacznie wydluzylem, nie wiem gdzie jest pies pogrzebany. Bylbym wdzieczny za pomoc.
Kawalek kodu ktory popelnilem:
.include "m32def.inc"
.def temp=r16
.def temp2=r17
.def czas=r18
.def czas2=r19
.def data=r20
.equ slvW=0xA0
.equ alvR=0xA1
; scl - portc,0
; sda - portc,1
ldi r17,LOW(RAMEND)
out spl,r17
ldi r17,HIGH(RAMEND)
out sph,r17
ldi temp, $FF
out ddrc, temp
ldi temp, $FF
out ddra, temp
ldi temp,$FF
out porta,temp
rcall start
ldi data,slvW
rcall sendbyte
; ldi data,$25 sa wyremowane bo i tak wywala sie
; rcall sendbyte przy pierwszym sendbyte
; ldi data,$00
; rcall sendbyte
; ldi data,$EE
; rcall sendbyte
; rcall stop
ldi temp,$F0
out porta,temp
nic: jmp nic
start : sbi portc,0
sbi portc,1
rcall delay
cbi portc,1
rcall delay
cbi portc,0
rcall delay
ret
sendbyte: ldi temp,8
loop: rol data
rcall movc
sbi portc,0
rcall delay
cbi portc,0
dec temp
cpi temp,0
brne loop
sbi portc,1
sbi portc,0
ldi temp,$FD
out ddrc,temp
rcall delay
in temp,pinc
andi temp,0b00000010
sbrc temp,1
rjmp error
end1: ldi temp,$FF
out ddrc,temp
cbi portc,0
rcall delay
ret
movc: brcs ustaw
cbi portc,1
jmp done
ustaw: sbi portc,1
done: ret
delay: ldi czas,$ff
loop2: ldi czas2,$ff
loop5: dec czas2
cpi czas2,0
brne loop5
dec czas
cpi czas,0
brne loop2
ret