<html><body><div><br></div>Sleduji to tak nejak po ocku, jelikoz procesor jde mimo me,<div>ale nemuze tam byt problem typu, ze treba u atmelu a serioveho</div><div>portu byly dve informace ze z buferu sel znak na odeslani a bylo</div><div>mozne plnit dalsi...</div><div>Ale kdyz v tu chvili to clovek tipnul, vypnutim seriaku tak se nic neodeslalo,</div><div>protoze znak byl sice prevzat hardwarem, ale jeste se neodvysilal ven..</div><div>Tak jen myslenka jestli to nemuze byt takovy nejaky podobny problem...</div><div><br></div><div>Zdenek Aster</div><div><br><p>---------- Původní zpráva ----------<br>Od: Jan Waclawek <konfera@efton.sk><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 14. 9. 2016 11:42:57<br>Předmět: Re: Ukončení přenosu využitím DMA</p><br><blockquote>No toto mi vobec nedava zmysel. Takze nakoniec sa aj pri tom "zakopnuti"<br>prenesie ocakavany pocet znakov (/ 8 = pocet clockov zodpovedajuci poctu<br>bytov nastavenych v Tx DMA), ale v Rx buffri nie su?<br><br>Chcelo by to pozriet ako je to prelozene. Bolo by tiez dobre mat pred,<br>medzi a za tymi while nejaku znacku (zacvicit nejakym pinom) a pozerat<br>osciloskopom/LA spolu s tymi hodinami od SPI.<br><br>wek<br><br><br>----- Original Message ---------------<br>>Není. Přiąel jsem na to tak ľe mi neseděly kontrolní součty v datech<br>>a v bufferu zůstaly nuly.<br>><br>>Kdyľ koukám na SPI signály log. analyzátorem, tak v případě zkrácení<br>>je několik znaků před předčasným koncem zaąkytnutí, je tam mezera cca na jeden<br>>znak (SPI na 24MHz). Potom doběhne jeątě pár znaků, zachytil jsem v<br>>rozsahu 4-13. Celkový počet i počet po mezeře jsou nekulatá čísla.<br>><br>>Zřejmě dochází skutečně k zastavení kanálu, ale chyba nastavená není.<br>><br>>A to vąe jen občas. Přeruąení je povolené, po 1ms běľí systémové<br>>hodiny, ale na SPI se nesahá.<br>><br>>Tomáą<br>><br>><br>>> A nie je to nahodou naopak, t.j. ze ak kontrolujete Rx tak je to dobre, a<br>>> ak Tx tak Vam chybaju nejake prenesene data?<br>><br>>> wek<br>><br>><br>>> ----- Original Message ---------------<br>>>>Zdravím vespolek<br>>>><br>>>>Narazil jsem na problém, zdá se µe i opravil, ale netu±ím proč ta<br>>>>oprava funguje.<br>>>><br>>>>Procesor STR912FAW46 (vím, moc lidí s ním uµ nepracuje, ale co kdyby)<br>>>>Přená±ím data přes SPI (externí flash) s vyuµitím DMA.<br>>>>Programově ode±lu záhlaví, pro přenos dat pouµiju DMA. Tzn. odesílám<br>>>>samá FF pomocí jednoho DMA kanálu, přijímám do bufferu pomocí druhého<br>>>>kanálu. To v±e synchronně, čekám na dokončení přenosu.<br>>>><br>>>>Vypadá to zhruba takhle:<br>>>><br>>>>    // tady je inicializace kanálů, oba na stejnou délku dat.<br>>>><br>>>>    // rict SSP ze bude prenaset prijata data pomoci DMA / dtto pro odesilana<br>>>>    SSP_DMACmd(SSP1, SSP_DMA_Receive, ENABLE);<br>>>>    SSP_DMACmd(SSP1, SSP_DMA_Transmit, ENABLE);<br>>>><br>>>>    // Enable DMA  Channels<br>>>>    DMA_ChannelCmd(SSP1_DMA_CHAN_RX, ENABLE);<br>>>>    DMA_ChannelCmd(SSP1_DMA_CHAN_TX, ENABLE);<br>>>><br>>>>    // zde probiha prenos<br>>>><br>>>>    // pockat na dokonceni DMA prenosu<br>>>>    //                                                 vvvvvv zde je to dulezite<br>>>>    while(SET == DMA_GetChannelActiveStatus(SSP1_DMA_CHAN_RX)) {;}<br>>>>    // pockat az dobehne i SPI<br>>>>    while((SSP1->SR & SPI_SR_FLAG_BUSY)) {;}<br>>>><br>>>>    // Disable DMA Channels<br>>>>    DMA_ChannelCmd(SSP1_DMA_CHAN_RX, DISABLE);<br>>>>    DMA_ChannelCmd(SSP1_DMA_CHAN_TX, DISABLE);<br>>>><br>>>>    // Disable SPI RX/TX request<br>>>>    SSP_DMACmd(SSP1, SSP_DMA_Transmit, DISABLE);<br>>>>    SSP_DMACmd(SSP1, SSP_DMA_Receive, DISABLE);<br>>>><br>>>>A teď ten problém: vět±inou to funguje, jen občas se přenos nedokončí,<br>>>>přesněji, ukončí předčasně. Nehlásíá se µádné chyb, jen se přenese<br>>>>míň neµ jsme zadával.<br>>>><br>>>>Pokud na označené řádce kontroluju status Tx, tak to funguje.<br>>>><br>>>>Délka dat pro oba kanály je inicializovaná ze stejné proměnné.<br>>>>Proč záleµí na tom který kanál testuju, kdyµ by oba měly z principu<br>>>>přenést stejné mnoµství dat?<br>>>><br>>>>Tomá±<br>>>><br><br>_______________________________________________<br>HW-list mailing list  -  sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list</blockquote></div></body></html>