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