Re: Prerusení od USART na AT91SAM7Sxxx

Tomáš Hamouz hamouz na alsoft.cz
Úterý Červen 22 10:29:21 CEST 2010


Vyřešeno.

Přepsal jsem obsluhu I2C dle datasheetu MCU i akcelerometru,
čímž jsem zredukoval přenos na 5 bytů včetně adresování a nastavil
rychlost na plných 400kbs. Ani to nestačilo, nakonec se akcelerometr
obsluhuje bez interruptu, jen pollingem v hlavní smyčce.
Spolehlivost komunikace přes USART je teď prakticky 100%ní.

Tomáš



TH> V obsluze toho nižšího přerušení se volá buď 1x read a 2x write nebo
TH> 3x read, podle režimu (pro zvědavce je to čtení akcelerometru). Každá
TH> komunikace se na začátku ujišťuje že periferie existuje, tudíž je tam
TH> čekání 50us na odpověď. V nejlepším případě (1x read, 2x write) se
TH> tedy čeká 200us + vlastní užitečný kód.

TH> Data od USARTu chodí během příjmu paketu každých 87us  (115200 b/s).
TH> Už se nedivím :-((


TH> (Abych předešel oprávněným invektivám, já to nepsal, já to dávám
TH> dohromady    Navíc je ARM pro mne nový procesor a nemám ho osahaný.)

TH> Poradíte co je třeba udělat, aby bylo vnořené přerušení bezpečné?

TH> Tomáš



JW>> To sa mi nejako nezda. Data od UARTu chodia predsa slimacim
JW>> tempom, ak len s tym procesorom nechodite na nejakych extremne
JW>> nizkych hodinach, tak medzi jednotlivymi znakmi sa vykonaju tisice instrukcii.

JW>> Co v tom preruseni od I2C robite take casovo narocne?

JW>> wek

JW>> ---

JW>> Tak jsem pokročil, zdá se ľe UART v tom bude nevinně.

JW>> Podle vąeho se stráví přílią času v přeruąení niľąí úrovně, a nebylo
JW>> povoleno daląí přeruąení. Jdu vyzkouąet co udělá přeruąení jiného
JW>> přeruąení a zda to nebude vadit I2C komunikaci (která běľí v tom
JW>> niľąím irq).





More information about the Hw-list mailing list