XMega
Re: XMega
DMA-val lehet rs485-öt kezelni? Soros adás megy, semmi gond, csak ugye duplapufferelt minden, így a DMA-kész jel már akkor megjön, amikor még 2 byte a soros adópufferben van (igaza van, a DMA végzett). Csak hogy az RS485 irányváltó jelet így még kézzel sem lehet kezelni, nem hogy "automatán" a beépített RS485 kezelővel. Az meg azért már nagyon fura lenne, hogy a TX adó üres jelre várakozzak, nem azért szenvedtem ki a DMA-t, hogy utána a megnyert időt 2 byte-időnyi várakozásra cseréljem. Sajnos kicsik a blokkok, így összemérhető a nyereség/veszteség. Na, most ugye kérdés, hogy az "adópuffer üres" jel megjelenik-e minden byte végén ha a duplapuffer fel van töltve? Mert akkor annak az INTje talán jó volna irányváltásra, igaz, akkor is kellene 1 byte-nyi időt várakozni (mert az már üreset jelez, amikor átadta az adatot a soros shiftregiszternek).
Re: XMega
A DOUBLE BUFFER engedélyezésével esetleg megoldható:
DOUBLE BUFFER
This options will set the double buffer mode. By default is is DISABLED.
To allow for continuous transfer, two channels can be interlinked so that the second takes over the transfer when the first is finished and vice versa. This is called double buffering. When a transmission is completed for the first channel, the second channel is enabled. When a request is detected on the second channel, the transfer starts and when this is completed the first channel is enabled again
http://avrhelp.mcselec.com/index.html?atxmega.htm CONFIG DMA
Első DMA kezeli az adatokat, a második a vezérlő jeleket.
DOUBLE BUFFER
This options will set the double buffer mode. By default is is DISABLED.
To allow for continuous transfer, two channels can be interlinked so that the second takes over the transfer when the first is finished and vice versa. This is called double buffering. When a transmission is completed for the first channel, the second channel is enabled. When a request is detected on the second channel, the transfer starts and when this is completed the first channel is enabled again
http://avrhelp.mcselec.com/index.html?atxmega.htm CONFIG DMA
Első DMA kezeli az adatokat, a második a vezérlő jeleket.
Re: XMega
Kicsit még szenvedtem vele. Sajnos az adás INTre nem lehet ráülni büntetlenül, az kiesett. A duplapufferes DMA érdekes, meg is mozgatta az agyam, de most nincs idő játékra sajnos, és érdekes, az is "DMA végzett" jellel kapcsolódik át, tehát figyelmen kívül hagyja, hogy a TX pufferben még van 2 byte, ami megy ki. Persze értelmezés kérdése csak a dolog, ha úgy nézzük, a DMA tényleg végzett, az, hogy a többi meg mit mókol, nem érdekli. Most még be kell éleszteni a kijelző felé a másik DMA-t, az RS485-ből meg RS422 lesz és kész, oda mehet a DMA magában. Köszönöm a tudás-szikrákat!!!
Re: XMega
Sajnos XMEGA-val még nem foglalkoztam!
Ezért csak Szikrák vannak!
Az ARM-oknál a SPI átvitel lehet 8 vagy 16 bites.
A DMA pedig 8, 16, 32 bites. Ezek összehangolhatóak.
2-en felváltva kapkodhatják az adatot/vezérlést.
Ezért gondolom, hogy ha 2. DMA-n beállítasz 16 bit adatszélességet, akkor lekapja a sorosportról a 2byte vezérlő jelet.
Ezért csak Szikrák vannak!
Az ARM-oknál a SPI átvitel lehet 8 vagy 16 bites.
A DMA pedig 8, 16, 32 bites. Ezek összehangolhatóak.
2-en felváltva kapkodhatják az adatot/vezérlést.
Ezért gondolom, hogy ha 2. DMA-n beállítasz 16 bit adatszélességet, akkor lekapja a sorosportról a 2byte vezérlő jelet.
Re: XMega
Az ARM 16-bites SPI-je jaj de jó lenne...meg még sokminden.
XMEGA I2C: belefagy a RESTART-ba (mindig), csak a mai napom ment rá. DMA-k, ha nincs engedélyezve a medium és a high prioritású interrupt-ok, belefagy. (hiába van LOW prioritáson a DMA, akkor is. Szerintem regiszterbit elírás van valahol, de ki találja azt meg...) Hiába adom meg hogy az I2CV2 lib-et használja, mindig az alap fordítódik be, legalább is a hibák megmaradnak és byte-ra ugyan az a hossz a programnak (persze ez lehet véletlen is).
Éééés még csak most jön az SPI bizergálása, remélem azzal nem anyázok. Nagyon kezd már tele lenni a hócipőm ezzel az ipari hulladékkal. Majd kiveszek 2 hónap szabadságot és átmegyek ARM-re ASMbe Köszönöm a segítségeket, majd még vonyítok, ha bajom lesz.
XMEGA I2C: belefagy a RESTART-ba (mindig), csak a mai napom ment rá. DMA-k, ha nincs engedélyezve a medium és a high prioritású interrupt-ok, belefagy. (hiába van LOW prioritáson a DMA, akkor is. Szerintem regiszterbit elírás van valahol, de ki találja azt meg...) Hiába adom meg hogy az I2CV2 lib-et használja, mindig az alap fordítódik be, legalább is a hibák megmaradnak és byte-ra ugyan az a hossz a programnak (persze ez lehet véletlen is).
Éééés még csak most jön az SPI bizergálása, remélem azzal nem anyázok. Nagyon kezd már tele lenni a hócipőm ezzel az ipari hulladékkal. Majd kiveszek 2 hónap szabadságot és átmegyek ARM-re ASMbe Köszönöm a segítségeket, majd még vonyítok, ha bajom lesz.
Re: XMega
Na, most komolyan; XMEGA-kból nincs olyan, amiben 2-nél több normál soros UART van??? Írják, hogy 7 UART, de ebbe beleszámolnak minden I2C/SPI/IR vackot. Csak át kell menni ARMre, de ott is sumákolnak. Kellene nekem 4 UART. Vegyek külső UART IC-ket? nevetséges...
Re: XMega
Csak, hogy még jobban elkeseredj!
A legkisseb ARM testvérben is van 3 USART + 1 USB!
https://developer.mbed.org/users/hudakz ... 8T6_Hello/
A legkisseb ARM testvérben is van 3 USART + 1 USB!
https://developer.mbed.org/users/hudakz ... 8T6_Hello/
Re: XMega
Nem értelek, pl az általam használt xmega256-ban 7 db usart van. C, D, E portokon kettő kettő míg az F porton 1. Szvsz valamit elnéztél.
Re: XMega
Hát én megvakultam vagy valami ilyesmi. Én csak 2db UART-ot találok (UART0, 1). Igaz, ezek lehetnek több portra is kivezetve, de akkor is csak (0) és (1)-et látok. Pontosan milyen ATXMEGA-t használsz?
Re: XMega
Ott lehet a hiba hogy több digit porthoz is van hozzárendelve usart. Méghozzá általában kettő ( 0 és 1 ) De három portnak is van egymástól független ilyen usart párja. Így pl xmega 256-ban hét van. Nézd csak meg a periféria regisztertáblázatot ott megtalálod mindegyik usart regisztercsoportját.
Pongyolán fogalmazva nem két usart rendelhető több porthoz, hanem több portnak is van két két usartja.
Pongyolán fogalmazva nem két usart rendelhető több porthoz, hanem több portnak is van két két usartja.
Re: XMega
"nem két usart rendelhető több porthoz, hanem több portnak is van két két usartja"
Ja, kérem akkor itt van a kutya elásva. Int0 és INT1-ből is akkor külön van ennyi?
(PORTn_INT_base=valami...honnan tudja, hogy int0 vagy int1 jött? Ez működik, csak most már nem tudom, hogyan, ha a PORT INT csak egy cím)
Köszi!!!
Ja, kérem akkor itt van a kutya elásva. Int0 és INT1-ből is akkor külön van ennyi?
(PORTn_INT_base=valami...honnan tudja, hogy int0 vagy int1 jött? Ez működik, csak most már nem tudom, hogyan, ha a PORT INT csak egy cím)
Köszi!!!
Re: XMega
Igen mindegyik usartnak van egy egy külön interrupt vektor csoportja ( xmega 256 esetén 7 ilyen csoport ). Ha jól nézem mindegyiknek RX, TX, TX buff. üres vektora.
Re: XMega
Ismét belefutottam hogy egy xmega prcival fejlesztett bonyolult sokat kommunikáló eszköz eddig egy soros porton kommunikált, de kell hozzá egy BT modult illesztenem egy másik soros porton. A gond az hogy induláskor kellene eldöntenem hogy a kommunikáció melyik porton történjen. Sajnos az nem megoldás hogy millió helyre if-eket tegyek és egy változó szerint ide vagy oda írjak, olvassak. Valahogy fel kéne cserélni a csatornákat hogy a #1 és a #2 megcserélődjön. Hogy lehetne ezt megoldani?
Re: XMega
Szerintem sehogy, mivel a fordító a binárisban már bebetonozott periféria címre fog adatokat küldeni. Vagy IF-Then-ezel vagy kívülre teszel egy 4x2x1-es multiplexert amit keresztbe kötsz és egy port-al kapcsolsz, hogy mi-merre-honnan jöjjön/menjen. (avr-ben nincs paraméterezhető busmatrix)
Re: XMega
Nálam a SWAP és az ALIAS jutott eszembe.
Swap - karakterlánc kezelés
Alias - fordításban van behelyettesítés.
Ez utóbbi érdekes lehet, ha a fordításkor kell megmondani melyik lábon van és nem belső - futásidejű - alkalmazáskor.
De tipp:
Azaz, ha a konfigurálás - akkor az IF részben e megnyitást bonyolítod:
vagy
És másutt így elég a
a kiírásra....
Swap - karakterlánc kezelés
Alias - fordításban van behelyettesítés.
Ez utóbbi érdekes lehet, ha a fordításkor kell megmondani melyik lábon van és nem belső - futásidejű - alkalmazáskor.
De tipp:
Kód: Egész kijelölése
OPEN "device" for MODE As #channel
Kód: Egész kijelölése
OPEN "com1:" for binary as #1
Kód: Egész kijelölése
OPEN "com2:" for binary as #1
Kód: Egész kijelölése
Print #1, "test"
http://www.tavir.hu - a gazda