AVR SPI Slave problem
Tomas Chvatal
tchvatal na ezop.cz
Pondělí Únor 28 10:30:15 CET 2011
A nemate (treba jen nekdy) povolene preruseni i od jinych periferii ? Pokud je cpu v preruseni neceho jineho a prijde int. od /SS, tak
se preruseni od /SS obslouzi az po ukonceni aktualniho.
s práním hezkého dne / Best regards
Tomás Chvátal
EZOP Praha s.r.o.
tel./fax.: 257320853
www.ezop.cz
tchvatal na ezop.cz
----- Puvodní zpráva -----
Od: Karel Minarcík
Komu: HW-news
Odesláno: 28. února 2011 10:05
Predmet: Re: AVR SPI Slave problem
Uplne cely program poslat nemuzu, jen znacne upraveny vytah:
#define TLED_ON PORTD |= (0x80)
#define TLED_OFF PORTD &= ~(0x80)
void SPI_Slave_Init(void)
{
DDR_SPI2 = (1<<MISO2);
SPI2_PORT = (1<<SCK2)|(1<<MOSI2)|(1<<CS2);
SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA);
}
//Preruseni od SPI
ISR(SPI_STC_vect)
{
uint8_t length = 10;
uint8_t data;
uint8_t a;
cli();
SPCR = (0<<SPIE)|(1<<SPE)|(0<<MSTR)|(1<<CPOL)|(1<<CPHA);
TLED_ON;
SPDR = 0x02;
do
{
#define delay 300
for(a=0;a<delay;a++) if((SPSR&0x80))break;
...
data = SPDR;
SPDR = pole[data];
.....
}while(--length);
TLED_OFF;
SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA);
sei();
return;
}
Ve smycce while je toho samozrejme vice, s problemem to ale nesouvisi. Nektere veci v kodu jsem pridaval a menil nahodne ze zoufalstvi, nic nepomohlo.
To zpozdeni jsem zjistoval pomoci LA napichnuteho na SPI + jeden I/O pin AVR jako signalizace kdy jsem v preruseni.
Problem se vyskytuje uplne nahodne, tj. treba mnohostokrat do preruseni skocim ihned po shozeni /SS, semtam az po prijeti jednoho byte.
KM
2011/2/28 Jan Waclawek <konfera na efton.sk>
----- Original Message ---------------
>Uvnitr
>preruseni zakazu globalni preruseni (cli)
To je zbytocne, vyvolanim prerusenia sa automaticky dalsie prerusenia zakazu (procesor automaticky vynuluje flag I).
>Zjistil jsem pomoci log. analyzeru ze v AVR se
>vyvolalo preruseni pozde, az po prijmu prvniho byte a ne hned po shozeni
>/SS.
Ako presne ste to zistovali? Mozete poslat program?
wek
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------------------------------------------------------------------------
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------- dal?í ?ást ---------------
HTML p?íloha byla odstran?na...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20110228/d8ebea64/attachment.htm>
Další informace o konferenci Hw-list