Witam,
korzystając z materiałów z Elektroniki Praktycznej napisałem program do obsługi karty, narazie samą inicjalizację (zamieszczam same podprogramy bo cały kod jest bardzo długi).
Program zatrzymuje se na wieki w miejscu oznaczonym strzałką w komentarzu. Zupełnie tak jakby karta nie odpowiadała. Wiem to po tym że dioda podpięta Do PORTC, LED nie zapala się. Połączenia sprawdzałem kilka razy i wszystko jest ok.
Do uzyskania odpowiedniego zasilania dla karty używam LM317 i napięcie zasilania udało mi się uzyskać 3,2V czyli powinno wystarczyć chyba nie?
Proszę o pomoc bo siedzę już nad tym kilka dni i nie mogę nic wymyślić ;/
Pozdrawiam
korzystając z materiałów z Elektroniki Praktycznej napisałem program do obsługi karty, narazie samą inicjalizację (zamieszczam same podprogramy bo cały kod jest bardzo długi).
;--------------------* SPI *----------------------
spi_init:
ldi acc, (1<<MOSI) | (0<<MISO) | (1<<SCK) | (1<<CS)
out DDRB, acc
ldi acc, (1<<SPE) | (1<<MSTR)
out SPCR, acc
ret
spi_send:
out SPDR, data
spi_1:
in acc, SPSR
sbrs acc,SPIF
rjmp spi_1
in data, SPDR
ret
;--------------------* MMC *----------------------
mmc_init:
sbi PORTB, CS ;stan wysoki CS
ldi petla, 10 ;wyslij 80 cykli zegarowych
init_loop:
dec petla ;10 * 8 = 80
breq CMD0
ldi data, 0xFF
rcall spi_send ; <---
rjmp init_loop
sbi PORTC, LED
CMD0: ;Przełącz karte w tryb SPI
ldi komenda, 0
rcall mmc_cmd
CMD1: ;Wyjdz ze stanu IDLE
ldi komenda, 1
rcall mmc_cmd
sbrc data, IDLE
rjmp CMD1
ldi datau, 'O'
rcall uart_send
ldi datau, 'K'
rcall uart_send
ret
mmc_cmd:
cbi PORTB, CS
ori komenda, 0x40
mov data, komenda
rcall spi_send
lds data, addr1
rcall spi_send
lds data, addr2
rcall spi_send
lds data, addr3
rcall spi_send
lds data, addr4
rcall spi_send
ldi data, 0x95
rcall spi_send
ldi petla, 10
cmd_loop:
dec petla
breq cmd_end
ldi data,0xFF
rcall spi_send
sbrc data, BUSY
rjmp cmd_loop
cmd_end:
ret
Program zatrzymuje se na wieki w miejscu oznaczonym strzałką w komentarzu. Zupełnie tak jakby karta nie odpowiadała. Wiem to po tym że dioda podpięta Do PORTC, LED nie zapala się. Połączenia sprawdzałem kilka razy i wszystko jest ok.
Do uzyskania odpowiedniego zasilania dla karty używam LM317 i napięcie zasilania udało mi się uzyskać 3,2V czyli powinno wystarczyć chyba nie?
Proszę o pomoc bo siedzę już nad tym kilka dni i nie mogę nic wymyślić ;/
Pozdrawiam
