Witam
Potrzebuję skomunikować się z układem MCP2515 przez SPI, czytam dokumentację MCP2515, jak i opis transmisji ze strony ATmega8 i kilka rzeczy nie daje mi spokoju. Mianowicie:
Układ mega8 jest Masterem i on zapewnia sygnał SCK. Sygnał SS (pin jako wyjście) ustawiam "ręcznie" tuż przed zapisem danej do SPDR, ale sygnał zegarowy nie trwa przez cały czas niskiego poziomu SS, ale tylko podczas wysyłania danych, a tuż po wysłaniu np 2 bajtów, potrzeba utrzymać dalej sygnał zegarowy aby układ MCP2515 mógł odesłać pożądane dane (rysunek) i właśnie to nie daje mi spokoju, jak utrzymać ten sygnał zegarowy
Tak wygląda fragment kodu konfiguracja SPI oraz wysyłanie 1B danych:
Potrzebuję skomunikować się z układem MCP2515 przez SPI, czytam dokumentację MCP2515, jak i opis transmisji ze strony ATmega8 i kilka rzeczy nie daje mi spokoju. Mianowicie:
Układ mega8 jest Masterem i on zapewnia sygnał SCK. Sygnał SS (pin jako wyjście) ustawiam "ręcznie" tuż przed zapisem danej do SPDR, ale sygnał zegarowy nie trwa przez cały czas niskiego poziomu SS, ale tylko podczas wysyłania danych, a tuż po wysłaniu np 2 bajtów, potrzeba utrzymać dalej sygnał zegarowy aby układ MCP2515 mógł odesłać pożądane dane (rysunek) i właśnie to nie daje mi spokoju, jak utrzymać ten sygnał zegarowy
Tak wygląda fragment kodu konfiguracja SPI oraz wysyłanie 1B danych:
//konfiguracja
SPCR |= 1<<SPE | 1<<MSTR | 1<<SPR1 | 1<<SPR0;
//Transmisja danej
SS_low(); //makro SS = 0
SPDR = data1; //ładuj daną
while((SPSR & 1<<SPIF)==0) //czekaj, aż SPIF osiągnie wartość 1
{}
SPIF_clr(); //wyzeruj ręcznie flagę SPIF
SS_high(); //SS = 1