Najpierw uruchamiam moduł SPI:
ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
out DDR_SPI,r17
ldi r17,(1<<SPE)|(1<<MSTR)
out SPCR,r17
Powyższy sposob sprawdzalem na wielu innych AVR (mega64,mega16...) i dziala.
Jednak na mega48P nie dziala, zadnych reakcji na nozkach Atmegi przy ladowaniu rejestru spdr. Wymienilem rowniez uklad na nowy. Efekt taki sam.
Wrzucilem to na symulatr AVR studio i okazalo sie, ze po wykonaniu instrukcji "ldi r17,(1<<SPE)|(1<<MSTR) oraz OUT spcr,r17" rejestr SPCR laduje sie ustaloną wartością, jednak w kolejnym cyklu, przy nastepnej dwolnej instrukcji znacznik MSTR jest zerowany (dlaczego?), co uniemozliwia wysylanie danych. Podejrzewam, ze to samo dzieje sie w zmontowanym ukladzie. Gdzie tkwi błąd?
ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
out DDR_SPI,r17
ldi r17,(1<<SPE)|(1<<MSTR)
out SPCR,r17
Powyższy sposob sprawdzalem na wielu innych AVR (mega64,mega16...) i dziala.
Jednak na mega48P nie dziala, zadnych reakcji na nozkach Atmegi przy ladowaniu rejestru spdr. Wymienilem rowniez uklad na nowy. Efekt taki sam.
Wrzucilem to na symulatr AVR studio i okazalo sie, ze po wykonaniu instrukcji "ldi r17,(1<<SPE)|(1<<MSTR) oraz OUT spcr,r17" rejestr SPCR laduje sie ustaloną wartością, jednak w kolejnym cyklu, przy nastepnej dwolnej instrukcji znacznik MSTR jest zerowany (dlaczego?), co uniemozliwia wysylanie danych. Podejrzewam, ze to samo dzieje sie w zmontowanym ukladzie. Gdzie tkwi błąd?