ATmega 168 - spi

Miro as5sgm na gmail.com
Pátek Červen 24 09:23:59 CEST 2011


Dobry den,

potreboval by som poradit, uz nejaky ten vecer riesim SPI rozhranie a 
tak povediac som v koncoch :(
obvod s ktorym som cel komunikovat mi vobec neodpovedal a tak som 
pripojil osciloskop a zistil nasledujuce,
po inicializacii spi rozhrania su nap. urovne v poriadku, ked vsak 
vyslem par bajtov tak SCK je v poriadku, CS je na obvode(slave) stale 
pripojeny na gnd, ale MOSI po vyslani prveho bajtu ide inverzne. Cize v 
klude je v nule a   slave to vyhodnoti ako reset a obvod je potom stale 
v resete. Slave vyzaduje SPI MOD3, ked som skusal ostatne mody tak 
vsetky signaly boli ok, testoval som MOSI i pri odpojenom slave a stale 
rovnako :(, neviete mi prosim poradit co s tym?
Kompilator pouzivam avrstudio.
ten isty kod s kompilatorom codevision ide bez problemov na tom istom 
HW  :(.

SPI konfiguracia:
void spi_init (void)
{
    char p=0;
     // init ports
     PORTB=0x00;
     DDRB=0x2C;

// init spi
   SPCR = ( (1<<SPE)|(1<<MSTR)| (1<<CPOL) | (1<< CPHA) |(1<<SPR0));
   SPSR=0x00;

   p = SPSR;
   p = SPDR;
}

void WriteByteSPI(unsigned char byte)
{
   SPDR = byte;               //Load byte to Data register
   while(!(SPSR & (1<<SPIF)));    // Wait for transmission complete
}

char ReadByteSPI(char addr)
{
   SPDR = addr;               //Load byte to Data register
   while(!(SPSR & (1<<SPIF)));    // Wait for transmission complete
   addr=SPDR;
   return addr;
}

Dakujem, Miro



Další informace o konferenci Hw-list