Czesc! Mam problem z obs³uga zewnetrznej pamieci Flash przez ATMega8 za pomoc± SPI. Programik napisalem w asemblerze. A wyglada mniej wiecej tak: ....... ldi r17,(1<<spe)|(1<<mstr)|(1<<spr0) out spcr,r17 ;wlaczenie SPI cbi portd,cs ; cs=0 ldi dana,0x84 ;kod zapisu do bufora1 rcall transpi ;wyslij przez spi ldi dana,0x00 ;nie znaczacy bajt rcall transpi ;wyslij ldi dana,0x00 ;nieznaczacy bajt rcall transpi ;wyslij ldi dana,0x00 ;adres pod ktorym ma rozpoczac zapis rcall transpi ;wyslij ldi dana,0x41 ;przykladowa dana ktora chce zapisac rcall transpi ;wyslij ldi dana,0x12 ;kolejna przykladowa dana rcall transpi ;wyslij sbi portd,cs ;cs=1 clr r17 out spcr,r17 ; wylacz SPI
transpi: out spdr,dana wait: sbis spsr,spif rjmp wait ret ... ... ldi r17,0x5c out spcr,r20 ;wlacz spi cbi portd,cs ;cs=0 ldi dana,0x54 ;instrukcja odczytu bufora1 rcall transpi ;wyslij ldi dana,0x00 ;nie znaczacy bajt rcall transpi ;wyslij ldi dana,0x00 ;nie znaczacy bajt rcall transpi ;wyslij ldi dana,0x00 ;adres od ktorego zaczynam czytac bufor rcall transpi ldi dana,0x00 ;wysylam kolejny nie znaczacy bajt rcall transpi in spdr,r20 i w tym momencie w rejestrze r20 powinna sie pojawic dana z pod adresu 0x00 ? Czy moze powinienem w tym momencie zmienic ustawienia w rejestrze spcr na Slave i dopiero ??:
odb: in spdr,r20 sbis spsr,spif rjmp odb
Prosilbym o pomoc bo jakos nie moge sobie z tym dac rady caly czas odczytuje niby dane FF niezaleznie od tego co zapisze (SS w ATmega mam ustawione jako wyjscie i jest w stanie wysokim)
Dzieki za pomoc Krzysiek