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