Fórum témák

» Több friss téma
Fórum » SPI busz működése
 
Témaindító: cassis, idő: Nov 7, 2009
Lapozás: OK   2 / 3
(#) potyo válasza szSzilard hozzászólására (») Dec 12, 2010 /
 
Mennyi kellene? Az SPI alapvetően egy panelen, viszonylag közel levő alkatrészek közötti kommunikációra van kitalálva. Persze sebességfüggő, mert 1kHz órajellel biztosan elmegy akár több méterről is, de alapvetően az SPI nagysebességű busz, ha kisebb sebesség kell, akkor inkább I2C-t szoktak használni.
(#) szSzilard válasza potyo hozzászólására (») Dec 12, 2010 /
 
Köszönöm a választ Max 2m kellene. Pic és egy hőmérő összekötése lenne a cél.
(#) potyo válasza szSzilard hozzászólására (») Dec 12, 2010 /
 
Alacsony sebességen szerintem működni fog.
(#) biroim válasza potyo hozzászólására (») Nov 26, 2012 /
 
Sikerült működésre bírnod?
Nekem kb 30cm kábelem van és az SPI-os hőmérőtől eléggé összevissza jönnek a bitek.
Közel,panelre dugva kábel nélkül működik.
Köszi!
(#) palko0125 hozzászólása Jún 26, 2013 /
 
Üdv Urak!
Arra lennék kíváncsi, hogy hogyan lehet SPI jelet vezeték nélkül továbbítani?
Van egy eszközöm amiben egy kijelző. A kijelző és a gép között normál utp kábel van. A kábelen elvileg SPI jel fut. Én ezt a kijelzőt messzire akarom a géptől vinni, és onnan kezelni. Hogyan lehetne ezt megoldani vezeték nélkül.
Előre is köszönöm.
Üdv, Palkó.
(#) _vl_ válasza palko0125 hozzászólására (») Jún 26, 2013 /
 
Teszel egy mikrokontrollert a kijelző mellé, a vezeték nélküli kommunikációt pedig rábízod a mikrokontrollerre.
(#) palko0125 válasza _vl_ hozzászólására (») Jún 26, 2013 /
 
Köszi, de ez nekem egy kicsit szűkszavú. Konkrétabban el tudnád mondani. Elnézést de nem vagyok profi ilyen témában.
(#) _vl_ válasza palko0125 hozzászólására (») Jún 26, 2013 /
 
Az úgy akkor nehéz lesz. Valakinek a mikrokontrollerre szoftvert is kell írni, és ha jól értem, akkor ez nem te leszel.
(#) palko0125 válasza _vl_ hozzászólására (») Jún 26, 2013 /
 
Hát akkor ez nehéz lesz. És egy hozzáértőnek a szoftvert mennyire nehéz megírni? Vagy inkább egy másik kérdés. Mert ez a táv a kijelző és a frekiváltó között 6-800 méter lenne. Létezik olyan átalakítás, hogy rs485/rs232 spi-ről?
(#) _vl_ válasza palko0125 hozzászólására (») Jún 26, 2013 /
 
A hozzáértőnek nem nehéz megírnia a szoftvert - ha adott a dokumentáció! Az elmondásod alapján nem adott, meglevő készülékhez kell hozzátákolni valamit, persze a készülék gyártója nem fog segíteni, azaz igazából nincs doksi. Ez így sokszorosára növeli a dolog időigényét.
Láthatóan nem vagy amúgy képben protokollok meg kommunikáció terén. Az, hogy SPI, még nem mond semmit arról, hogy hogy is zajlik a kommunikáció. Ennek ismerete pedig elengedhetetlen bárminemű "átalakításhoz". Azaz nem létezik "általános SPI<->valami átalakító", amit bármilyen SPI kommunikációhoz lehet használni vakon. Továbbá ha az SPI kommunikáció kétirányú, akkor a szimpla átalakítás eleve lehetetlen, mindenképpen valami bonyolultabb cuccra lesz szükség.
Ez az egész a "gép" gyártójának segítsége nélkül elég nehézkes is tud lenni.
(#) palko0125 válasza _vl_ hozzászólására (») Jún 26, 2013 /
 
Értem én, hát éppen csak ennyi a probléma.
Attól függetlenül köszönöm szépen a választ.
Üdv, Palkó.
(#) Hp41C válasza palko0125 hozzászólására (») Jún 26, 2013 /
 
Annak a frekvenciaváltónak nincs más felülete? MODBUS - RS485, MODBUS TCP - Ethernet stb.
(#) palko0125 válasza Hp41C hozzászólására (») Jún 26, 2013 /
 
Most éppen azon filózok, hogy 485-el hogy lehgetne egyszerűbben megoldani, mivel rs485 van rajta.
(#) palko0125 válasza palko0125 hozzászólására (») Jún 26, 2013 /
 
Valakinek valami ötlet RS485-n keresztül pc-vel vagy PLC+HMI való vezérlés?
(#) roleez hozzászólása Okt 30, 2013 /
 
Sziasztok!

Találkozott valaki olyannal, hogy az SSPBUF regiszterbe csak direkt konstanst tud beírni?
Ha változót értékét írok be pl. SSPBUF = adat, akkor nem jelenik meg az SDO lábon a bitsor, csak 1 magas bitnyi érték.
Ha viszont az pl. SSPBUF = 0xAA, akkor szépen ott a bitsor.
PIC18F46K80 a mikrovezérlő, SCLK megfelelően kijön.

Köszönöm,
Roland
A hozzászólás módosítva: Okt 30, 2013
(#) potyo válasza roleez hozzászólására (») Okt 30, 2013 /
 
Elég furán hangzik, mutass több kódot, hátha látunk valamit. Esetleg csinálj egy próba projektet, ami csak annyiból áll, hogy az SSPBUF-ba írkálsz. asm listát nézted? Milyen utasítást generál oda, amikor az SSPBUF-ba írna? Melyik fordító?

Szerk.: mellesleg az "adat" változóba kerül valami érték? SSPBUF=adat előtt közvetlenül írj bele pl. 0xA5-öt és nézd meg úgy, nehogy az szivasson, hogy kimegy az adat, csak épp nem az van a változóban, amire számítasz.
A hozzászólás módosítva: Okt 30, 2013
(#) _vl_ válasza roleez hozzászólására (») Okt 30, 2013 /
 
Idézet:
„Találkozott valaki olyannal, hogy az SSPBUF regiszterbe csak direkt konstanst tud beírni?
Ha változót értékét írok be pl. SSPBUF = adat, akkor nem jelenik meg az SDO lábon a bitsor, csak 1 magas bitnyi érték.”

Talán a lefordított assembly-t (.lst fájl) kéne megnézni, mert az az ilyen sunyiságokat fel szokta fedni.
(#) roleez válasza potyo hozzászólására (») Okt 30, 2013 /
 
A program:
  1. unsigned char spi_io( unsigned char datas) {
  2.   unsigned char tmp;
  3.   tmp = SSPBUF;                    // törli a BF jelzőbitet
  4.   PIR1.SSPIF = 0;              // törli az interrupt jelzőbitet
  5.   SSPCON1.WCOL = 0;            // törli az esetleges írás ütközés
  6. hibajelzőt
  7.  
  8.   asm{ nop };
  9.   asm{ nop };
  10.  
  11.   SSPBUF = datas;
  12.  
  13.   asm{ nop };
  14.   asm{ nop };
  15.  
  16.      while( !SSPSTAT.BF );  // wait until bus cycle complete
  17.      while( !PIR1.SSPIF );  // wait until bus cycle complete }
  18.  
  19. void main(){
  20.      CM1CON = 0;
  21.      ANCON0 = 0b00111111;
  22.      ANCON1 = 0;
  23.  
  24.    
  25.      PORTD = 0;
  26.      TRISD = 0x11110001;    // felső 4 bit + alsó bemenet!
  27.      TRISB = 0xFF;          // minden bemenet, csak 4 bitet használok
  28.  
  29.      TRISA  = 0xFF;              // PORTA is input, analóg bemenetek
  30.      TRISC.F0 = 0; TRISC.F1 = 0; TRISC.F2 = 0;  TRISC.F3 = 0;  TRISC.F4 = 1; TRISC.F5 = 0;
  31.      LATC.F1 = 0; LATC.F2 = 0; LATC.F3 = 0;
  32.      TRISE = 0b00000001;
  33.      SSPSTAT = 0b11000000;
  34.      SSPCON1 = 0b00100001;
  35.  
  36.      while(1)
  37.     {
  38.  
  39.             spi_io(0xAA);
  40.             Delay_ms(1);
  41.     }
  42. }


A konstans/változó teszteket már úgy is csináltam, hogy az spi_io meghívás helyett
direkt a végtelen ciklusba tettem egy SSPBUF = ... sort a delay elé.
Egyszerűen nem értem.

R.
A hozzászólás módosítva: Okt 30, 2013
(#) roleez válasza _vl_ hozzászólására (») Okt 31, 2013 /
 
Ami működik:
  1. ;MyProject.c,158 ::             SSPBUF = datas;
  2. 0x0028  0x0E95          MOVLW       149
  3. 0x002A  0x6EC9          MOVWF       SSPBUF


és ami nem (eleje ugyanaz a jónak is):
  1. _spi_io:
  2. ;MyProject.c,149 ::             unsigned char spi_io( unsigned char datas)
  3. ;MyProject.c,153 ::             PIR1.SSPIF = 0;              // törli az interrupt jelzőbitet
  4. 0x001C  0x969E          BCF         PIR1, 3
  5. ;MyProject.c,154 ::             SSPCON1.WCOL = 0;            // törli az esetleges írás ütközés hibajelzőt
  6. 0x001E  0x9EC6          BCF         SSPCON1, 7
  7. ;MyProject.c,158 ::             SSPBUF = datas;
  8. 0x0020  0xFFC9C017      MOVFF       FARG_spi_io_datas, SSPBUF


Az SDO kimeneten - függetlenül a datas értékétől, mindig 1011 bitkombináció van...
Üdv és köszi.
(#) roleez válasza roleez hozzászólására (») Okt 31, 2013 /
 
Ez se azt teszi, amit kell
  1. 0x0020  0x0E95          MOVLW       149
  2. 0x0022  0x6E16          MOVWF       _ize
  3. ;MyProject.c,159 ::             asm { MOVLW _ize }
  4. 0x0024  0x0E16          MOVLW       _ize
  5. ;MyProject.c,160 ::             asm { MOVWF SSPBUF }
  6. 0x0026  0x6EC9          MOVWF       SSPBUF, 0
(#) Pet91 hozzászólása Ápr 15, 2014 /
 
tud nekem valaki mutatni egy példakódot az spi használatára proton basic-ben? (lehetőleg 16f690-re) c-ben látok egy csomót, de basicben sajnos nem látok egyet sem.
(#) Hp41C válasza roleez hozzászólására (») Ápr 15, 2014 /
 
Ez a megoldás az _ize címének alsó 8 bitjét küldi el, nem a tartalmát.
a MOVLW _ize helyett a movf _ize, 0, 0 kellene.
(#) Hp41C válasza roleez hozzászólására (») Ápr 15, 2014 /
 
Hogyan hívod a spi_io függvént?
(#) SKY hozzászólása Okt 27, 2015 /
 
Sziasztok!
Hogyan oldanátok meg két SPI-s eszköz egy buszra kötését akkor, ha nem jöhet szóba a nagyimpedanciás kimenet, azaz összeakadnának a kimenetek, mert le lettek választva digitális izolátorral?
(#) pbalazs válasza SKY hozzászólására (») Okt 27, 2015 /
 
Én lehet, hogy nem pontosan értem, de ha le lettek választva, akkor miért akadnak össze?
Egy SPI slave kimenete nagyimedanciás lesz, ha a chip select jel nem aktív.
Vagy kösd őket láncba, az nem jó?
(#) SKY válasza pbalazs hozzászólására (») Okt 27, 2015 /
 
Ilyenen keresztül működnek, ez meg nem tudja a nagyimpedanciás kimenetet ha minden igaz.
ADUM1402C
Az eszközök felől jövő DOUT kimenetek beterhelnék egymást.
(#) pbalazs válasza SKY hozzászólására (») Okt 27, 2015 / 1
 
Ha jól látom, van rajta output enable.
(#) SKY válasza pbalazs hozzászólására (») Okt 27, 2015 /
 
Szia!
A másik probléma, hogy a picet csak az áramkörben lehet majd programozni és szerintem a lábai ekkor eléggé kiszámíthatatlanul viselkedhetnek, azaz nem lenne ami stabilan vezérelné.
Talán ez a megoldás működhet, bár nem tudom okozhat-e hibát az átvitelben ez a kicsi késleltetés.

kozos.jpg
    
(#) pbalazs válasza SKY hozzászólására (») Okt 28, 2015 /
 
Akár működhet is, végig kellene gondolni a késleltetések, meg a fesz esés miatt, de akkor minek a leválasztó IC?
(#) SKY válasza pbalazs hozzászólására (») Okt 28, 2015 /
 
A leválasztó IC mindenképpen kell a galvanikus izoláció miatt. Nem tudom pontosan hogyan működik az SPI, de 4ns körüli késleltetés nem hiszem, hogy problémát okozna, a maximális SCLK 10MHz lehet. Csak jó lenne erre biztos megoldást találni, nem a panelkészítés után szeretnék rájönni, hogy mégsem volt jó a megoldás.
Diódának ezeket néztem:
BAL99E63
BAV70E63
Következő: »»   2 / 3
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem