Skocz do zawartości

atmega8 + SPI


qbaj

Pomocna odpowiedź

czesc,

jestem w kropce, mam problem z transmisja SPI w atmedze8 z wyswietlaczem,
mam SPI software'owe:

void spi_write(unsigned char data)
{
unsigned char i;
for (i=0; i<8; i++)
{
	if ((data & 0x80) != 0)
		spi_out_HIGH()
	else
		spi_out_LOW()
	spi_clk_HIGH()
	spi_clk_LOW()
	data <<= 1;
}
spi_out_HIGH()
}

ktore dziala prawidlowo, dziala wyswietlacz.

Natomiast kiedy chce uzyc SPI hardware'owego to nie dziala:

void init(void)
{
DDRB  = 0b00101100;	// MOSI-out, SCK-out, SS-out !!
PORTB = 0b00000000;

SPCR  = 0b01010111;	// SPE-1, MSTR-1, 
SPSR  = 0b00000000;
}

void spi_write(unsigned char data)
{
SPDR = data; 
while(!(SPSR&(1<<SPIF)));
}

spi wlaczone jako master, data order jako pierwszy MSB, probkowanie przy opadajacym zboczu, najnizsza predkosc (nie ma znaczenia, przy najmniejszej i najszybszej tez nie dziala)

prosze o pomoc, co robie zle ??

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.