XMega

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2016. december 26. hétfő, 15:59

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).

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: XMega

HozzászólásSzerző: kapu48 » 2016. december 26. hétfő, 16:55

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.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2016. december 26. hétfő, 18:32

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!!!

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: XMega

HozzászólásSzerző: kapu48 » 2016. december 26. hétfő, 18:59

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.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2016. december 28. szerda, 19:50

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.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2017. január 15. vasárnap, 21:52

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...

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: XMega

HozzászólásSzerző: kapu48 » 2017. január 16. hétfő, 8:41

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/

Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2005. április 22. péntek, 6:00

Re: XMega

HozzászólásSzerző: Csuhas » 2017. január 16. hétfő, 10:29

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.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2017. január 19. csütörtök, 18:09

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?

Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2005. április 22. péntek, 6:00

Re: XMega

HozzászólásSzerző: Csuhas » 2017. január 19. csütörtök, 18:46

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.

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2017. január 19. csütörtök, 20:24

"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!!!

Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2005. április 22. péntek, 6:00

Re: XMega

HozzászólásSzerző: Csuhas » 2017. január 19. csütörtök, 21:00

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.

Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 64
Csatlakozott: 2005. április 22. péntek, 6:00

Re: XMega

HozzászólásSzerző: Csuhas » 2018. január 19. péntek, 13:48

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?

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 886
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

Re: XMega

HozzászólásSzerző: winnerbt » 2018. január 20. szombat, 19:37

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)

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9917
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: XMega

HozzászólásSzerző: Robert » 2018. január 20. szombat, 19:48

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:

Kód: Egész kijelölése

OPEN "device" for MODE As #channel


Azaz, ha a konfigurálás - akkor az IF részben e megnyitást bonyolítod:

Kód: Egész kijelölése

OPEN "com1:" for binary as #1

vagy

Kód: Egész kijelölése

OPEN "com2:" for binary as #1


És másutt így elég a

Kód: Egész kijelölése

Print #1, "test"

a kiírásra....
http://www.tavir.hu - a gazda :)


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég