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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.