Mam problem z ustawieniem SPI dla tych dwoch prockow... atmega128 pracuje na 11.0592 Mhz a atmega168 na 10 Mhz. Dziala to tak ze mega128 jest w trybie slave i sluzy tylko do wyswietlania przychodzacych danych (wyrzucam na 16x2 lcd) a mega 168 w trybie master nadaje co 700ms znak "!"(0x21). Efekt mam taki ze raz na jakis czas pojawia sie ten wykrzyknik, ale zazwyczaj wyswietla jakies smieci. Kod do nadajnika mam taki:
Wydaje mi sie ze to cos z predkosciami obu prockow, ale nie moge znalezc nigdzie jak to sie ma do SPI... bede bardzo wdzieczny za kazda porade.
#include<avr/io.h>
#include <util/delay.h>
#define SS_NISKI() (PORTB &= ~0x03); //stan niski na SS
#define SS_WYSOKI() (PORTB |= 0x03); //stan wysoki na SS
void SPI_MasterInit(void)
{
/* Set MOSI and SCK output, all others input */
DDRB=(1<<PB3)|(1<<PB5)|(1<<PB2);
/* Enable SPI, Master, set clock rate fck/128 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
}
int main(void)
{
SPI_MasterInit();
while(1)
{
_delay_ms(700);
SS_NISKI();
SPDR = 0x21;
while(!(SPSR & (1<<SPIF)));
SS_WYSOKI();
}
}
Wydaje mi sie ze to cos z predkosciami obu prockow, ale nie moge znalezc nigdzie jak to sie ma do SPI... bede bardzo wdzieczny za kazda porade.