Fórum témák

» Több friss téma
Fórum » RFM12BS
 
Témaindító: Thowra, idő: Márc 6, 2009
Lapozás: OK   11 / 12
(#) Hilo válasza foxi63 hozzászólására (») Feb 10, 2014 /
 
Köszönöm, napközben vagy este neki futok a dolgoknak és írok.
Jól értettem hogy ebből a modulból 2 kell? egy az adó egy a vevő oldalra?
(#) Hilo hozzászólása Feb 10, 2014 /
 
Sziasztok, tudtok esetleg egy assembly minta programot küldeni fogadásra, és küldésre?
Előre is köszönöm!
(#) foxi63 válasza Hilo hozzászólására (») Feb 10, 2014 /
 
Szia!
Bár C-ben van meg, de összerakok egyet asm-ben este, mi is a konkrét áldozat?
16F886 ?
(#) Hilo válasza foxi63 hozzászólására (») Feb 10, 2014 /
 
16F886 mind a két oldalon. Ha lehet akkor azt csinálnám amit mondtál hogy a modul 10Mhz-es órajelét használnám a PIC-ekhez.
2 byte-nyi adatot küldenék.
Nagyon nagyon köszönöm előre is!
(#) foxi63 válasza Hilo hozzászólására (») Feb 10, 2014 / 1
 
Szia!
Az adás megvan.:
  1. errorlevel 2
  2. list p=16f886
  3. include "p16f886.inc"
  4. ;__CONFIG    KÜLSŐ OSZCILLÁTORT bEAÁLLÍTANI!! EC_OSC
  5. ;__CONFIG    
  6. RADIX DEC
  7.  
  8. #DEFINE         NSEL    PORTB,7;OUT
  9. #DEFINE         SCK_    PORTB,6;OUT
  10. #DEFINE         SDI_    PORTB,5;OUT
  11. #DEFINE         SDO_    PORTB,4;INPUT
  12. ; fosc=10MHz
  13. CBLOCK 0X20
  14. W_TEMP,STATUS_TEMP
  15. T2H
  16. T2A,T2B,T2C
  17. T2FLAG
  18. COUNT0,COUNT1,HOSSZ
  19. ADATL,ADATH,CRC
  20. FLAG
  21. ENDC
  22. org 0
  23. CALL    INIT
  24. GOTO    PRG
  25. ORG     4
  26.         MOVWF           W_TEMP          ;WREG ÉS STATUS MENTÉSE
  27.         SWAPF           STATUS,W
  28.         MOVWF           STATUS_TEMP
  29.         CLRF            STATUS          ;RAM 0-7F IG
  30.         BTFSS           PIR1,TMR2IF     ;TIMER2 OKOZTA A MEGSZAKÍTÁST?
  31.         GOTO            M00                     ;NEM TOVÁBB
  32.         BCF                     PIR1,TMR2IF     ;JELZŐFLAG VISSZAÁLLÍTÁSA
  33.         MOVF            T2A,F           ;ÁLTALÁNOS IDŐZÍTŐ AKTÍV?
  34.         BZ                      T20                     ;NEM TOVÁBB           
  35.         DECFSZ          T2A                     ;IDŐZÍTŐ CSÖKKENTÉSE
  36.         GOTO            T20                     ;NEM JÁRT LE TOVÁBB
  37.         BCF                     T2FLAG,0        ;LEJÁRT ÉS EZT JELEZZÜK IS
  38. T20ECFSZ              T2H                     ;20mS IDŐZÍTŐ CSÖKKENTÉSE
  39.         GOTO            M00                     ;NEM JÁRT LE TOVÁBB
  40.         MOVLW           .20  ;200mS ;KÖVETKEZŐ IDŐ BETÖLTÉSE
  41.         MOVWF           T2H
  42.         BSF                     FLAG,0          ;JELZÉS FŐPROGRAMNAK, LEJÁRT A 20Ms
  43. M00:SWAPF               STATUS_TEMP,W
  44.         MOVWF           STATUS          ;REGISZTEREK VISSZAÁLLÍTÁSA
  45.         SWAPF           W_TEMP,F        ;MEGSZAKÍTÁS ELŐTTI ÉRTÉKRE
  46.         SWAPF           W_TEMP,W
  47.         RETFIE                                  ;MEGSZAK VÉGE
  48. ;***************************************
  49. GET_DAT: ;TÁBLÁZAT TÁROLJA A MODUL BEÁLLÍTÁSI PARAMÉTEREIT
  50.                         ; LÁSD RFM12B .PDF
  51. ADDWF PCL,F     ;FIGYELEM!!! ENNEK A TÁBLÁZATNAK A NULLADIK LAPON KELL LENNIE!
  52.                         ;HA NEM AKKOR A PCH REGISZTERT IS ÁLLÍTANI KELL!!!
  53. DT 0x80 ,0XE8;//enable register,866MHz,12.5pF
  54. DT 0x82 ,0X08;//Turn on crystal,PA
  55. DT 0xA6, 0X40;//
  56. DT 0xC6, 0X17;//4.8K baud
  57. DT 0x94, 0XC0;//VDI,FAST,134kHz,0dBm,-103dBm
  58. DT 0xC2, 0XAC;
  59. DT 0xCA, 0X80;
  60. DT 0xCE, 0XD4;
  61. DT 0xCA, 0X83;//FIFO8,SYNC,
  62. DT 0xC4, 0X9B;
  63. DT 0x98, 0X50;//!mp,90kHz,MAX OUT
  64. DT 0xCC, 0X77;
  65. DT 0xE0, 0X00;//NOT USE
  66. DT 0xC8, 0X0E;//NOT USE
  67. DT 0xC0, 0XE0;//10.0MHz
  68.  
  69.  
  70. INIT:
  71.         ;PORT INIT
  72.         BANKSEL TRISB ;
  73.         MOVLW   B'00011111'
  74.         ANDWF   TRISB,F         ;7 6 5 OUT RFM
  75.         BSF             TRISB,4         ;4     INPUT RFM
  76.         BANKSEL 0
  77.         BSF     NSEL                    ;RFM12
  78.         ;*****************************
  79.         ;timer2 init
  80.         MOVLW   B'01001100' ; ON 10 POST
  81.         MOVWF   T2CON
  82.         BANKSEL PR2
  83.         MOVLW   249
  84.         MOVWF   PR2                             ;TIMER2 1mSEC IDŐNKÉNT MEGSZAKÍTÁST
  85.         BANKSEL 0
  86.         BSF     INTCON,GIE              ;GENERÁL
  87.         BSF     INTCON,PEIE
  88.         BANKSEL PIE1
  89.         BSF     PIE1,TMR2IE
  90.         BANKSEL 0
  91.         BSF     T2FLAG,0
  92.         MOVLW   .20
  93.         MOVWF   T2A
  94.         BTFSC   T2FLAG,0 ;200mSEC DELAY MIVEL RFM12 ITT MÉG
  95.         GOTO    $-2                             ;1MHz ORAJELET AD KI
  96.         BCF     SCK_
  97.         ;RFM12 INIT TÁBLÁZATBÓL
  98.         CLRF            COUNT0          ;SZÁMLÁLÓ=NULL
  99. IN0:MOVF                COUNT0,W       
  100.         INCF            COUNT0
  101.         CALL            GET_DAT         ;KÖVETKEZŐ ADAT BEOLVASÁSA
  102.         MOVWF           ADATH           ;MEGY PARANCS REGISZTERBE
  103.         MOVF            COUNT0,W
  104.         INCF            COUNT0         
  105.         CALL            GET_DAT         ;PARANCS MÁSIK FELE
  106.         MOVWF           ADATL
  107.         CALL            WRITECMD        ;KIADJUK A PARANCSOT
  108.         MOVLW           .30
  109.         XORWF           COUNT0,W        ;MIND KIMENT?
  110.         BNZ                     IN0                     ;NEM VISSZA
  111.         RETURN
  112. TXBYTE                                          ;1 BYTE KIKÜLDÉSE
  113.         MOVWF   ADATL                   ;ADAT PARANCSREGISZTERBE
  114.         ADDWF   CRC,F                   ;CRC HOZZÁADAÁS
  115.         MOVLW   0XB8                    ;ADAT KIVITELI PARANCS
  116.         MOVWF   ADATH
  117.         BCF             SCK_                    ;SDO LÁB JELZI,HA
  118.         BCF             SDI_                    ;MEHET A KÖVETKEZŐ
  119. TX1:BCF         NSEL                    ;ADDIG VÁRUNK
  120.         BSF             SCK_
  121.         BTFSC   SDO_                    ;POLLING SDO
  122.         GOTO    TX0
  123.         BCF             SCK_
  124.         BSF             NSEL
  125.         GOTO    TX1
  126. TX0:BCF         SCK_                    ;MEHET A BYTE
  127.         BSF             NSEL
  128.        
  129. WRITECMD:                                       ;PARANCS KIADÁSA RFM12 NEK
  130.         BCF             SCK_
  131.         BCF             NSEL
  132.         MOVLW   .16
  133.         MOVWF   COUNT1
  134. W00:    BCF             SDI_
  135.         BTFSC   ADATH,7
  136.         BSF             SDI_
  137.         BSF             SCK_
  138.         NOP
  139.         RLF             ADATL,F
  140.         RLF             ADATH,F
  141.         BCF             SCK_
  142.         NOP
  143.         DECFSZ  COUNT1
  144.         GOTO            W00
  145.         BSF             NSEL
  146.         RETURN
  147. ;
  148. FILE_OUT:
  149.         CALL    OPENTX ;ADÓ BEKAPCS AZONOSÍTÓ KARAKTEREK ÉS CRC=0
  150.         MOVLW   0X30    ;IDE JÖNNEK A KIKÜLDENDŐ ADATOK
  151.         CALL    TXBYTE  ;MOST CSAK ASCII   0 ÉS 1  MEGY KI
  152.         MOVLW   0X31
  153.         CALL    TXBYTE
  154.         CALL    CLOSETX ;CRC KIKÜLDÉSE ADÁS LEZÁRÁSA ADÓ OFF
  155.         RETURN
  156. ;***********************
  157. OPENTX:
  158.         MOVLW   0X82
  159.         MOVWF   ADATH
  160.         MOVLW   0X28
  161.         MOVWF   ADATL
  162.         CALL    WRITECMD        ;ADÓ BEKAPCSOLÁSA
  163.         CALL    D150uS          ;FELÉLEDÉS 150MIKROSEC
  164.         MOVLW   0X82
  165.         MOVWF   ADATH
  166.         MOVLW   0X38
  167.         MOVWF   ADATL
  168.         CALL    WRITECMD
  169.         MOVLW   0XAA            ;START BYTE-OK
  170.         CALL    TXBYTE
  171.         MOVLW   0XAA
  172.         CALL    TXBYTE
  173.         MOVLW   0XAA
  174.         CALL    TXBYTE
  175.         MOVLW   0X2D    ;AZONOSÍTÓ KÓD
  176.         CALL    TXBYTE
  177.         MOVLW   0XD4
  178.         CALL    TXBYTE
  179.         CLRF    CRC
  180.         RETURN
  181. ;********************
  182. CLOSETX:
  183.         MOVF    CRC,W   ;ELLENŐRZŐ SZÁM KIKÜLDÉSE
  184.         CALL    TXBYTE
  185.         MOVLW   0XAA
  186.         CALL    TXBYTE
  187.         MOVLW   0XAA
  188.         CALL    TXBYTE
  189.         MOVLW   0X82
  190.         MOVWF   ADATH
  191.         MOVLW   0X08
  192.         MOVWF   ADATL
  193.         CALL    WRITECMD        ;ADÓ STOP
  194.         RETURN
  195. ;********************
  196. D150uS:
  197.         MOVLW   0X5E
  198.         ADDLW   0XFF
  199.         BNZ             $-2
  200.         RETURN
  201. ;********************
  202.         PRG:
  203.         BTFSS   FLAG,0          ;VÁRUNK 20mSEC IDEIG
  204.         GOTO    PRG
  205.         BCF             FLAG,0
  206.         CALL    FILE_OUT        ;ADÁS
  207.         GOTO    PRG                     ;VISSZA
  208.  
  209. END


Szerintem átlátható, írtam kommentet is. Ez működik máshol, de mivel némi átalakításon ment keresztül, még tesztelni kell, de ha rá tudsz mérni a modul órajel kimenetére és ott beáll a 10mHz akkor minden rendben van. Alaphangon 1mHz -et ad ki a modul.
Mivel késő van csak holnap nézem át, de 99,9% hogy jó
üdv.Foxi
A hozzászólás módosítva: Feb 10, 2014
(#) Hilo válasza foxi63 hozzászólására (») Feb 11, 2014 /
 
Köszönöm! Átnézem amint munka mellett tudom, remélem nem baj ha kérdezek még majd. Addig sosem használok egy programot amíg nem látom át mit, miért csinál pontosan, így tanulok.
Nagyon köszönöm az eddigi és a jövőbeni segítséget!
(#) Hilo hozzászólása Feb 12, 2014 /
 
Sziasztok, gyors kérdésem lenne, délután mennék vásárolni de nem szeretném ha nem azt venném meg ami kell nekem.
RFM12B-868-D ez ugyan az mint RFM12B-868-D és ha igen akkor ekkora eltérés lenn árban? Ebből a modulból kellene nekem kettő ha jól tudom.
Köszönöm előre is!
A hozzászólás módosítva: Feb 12, 2014
(#) vicsys válasza Hilo hozzászólására (») Feb 12, 2014 / 1
 
Igen és igen.
(#) foxi63 válasza Hilo hozzászólására (») Feb 12, 2014 / 1
 
Szia!
Mivel a modul 3,3V-os ezért a pic kimeneti jeleit 1K->4,7K osztóval le kell osztani a modul fele.
A PIC 4,3V-ról tökéletesen működik, ezért az 5V tápjába tegyél egy soros sima diódát. Ekkor a TTL bemenetű portok simán fogadják a modul 3,3V-os jeleit. Sőt még a schmidt triggeres bemenetek is, mint a BPORT megszakítás.
A vevő program is elkészült. Csatolom. A timer2 itt is 20msec időnként jelezhet a főprogramnak(timer2 nem kell ebben a progiban). Ezt át kéne írnod 20.5 msec-re, és úgy kéne szervezni a programot, hogy amikor beérkezik 20msec időnként az érvényes adat, akkor bőven van idő és ki lehet adni a szervóknak a jelet (1-2msec/szervo) majd a motornak is ezt is úgy kell mint a szervonak, vagy a hardweres pwm modult felhasználod. Tehát ha nincs érvényes adat 20msec-en belül, akkor a timer2 20.5 msecnél frissíti a szervokat. ez lenne a lényeg. A beérkező adatok megszakításban jönnek, ezért a főprogramnak egyáltalán nem kell a modullal foglalkoznia.
üdv.:Foxi

rfm12_rx.asm
    
(#) Hilo válasza foxi63 hozzászólására (») Feb 13, 2014 /
 
Szia, először is köszönöm!
Lehet rosszul emlékszem de mint ha a 16f886 adatlapján 2V-5.5V szerepelne. Ebben az esetben nem bonyolítanám a dolgokat és a PIC is és a modul is 3.3V-os feszültségről üzemelne.
Amint időm lesz rá, átnézem a programokat és kérdezek. Szeretném átlátni a PIC és a modul közti kommunikációt programozási nyelvtől független. A minta program alapján szeretnék csinálni mind adó mind vevő oldalhoz egy folyamatábrát hogy mi zajlik, ha ezt már átlátom akkor mindegy a programnyelv én is fogok tudni írni hozzá amit kell. Ebben szeretném majd a segítséged kérni hogy ezt megcsinálnám, te meg kijavítod ami elrontottam benne.
Farsang + gyerkőc szülinap a következő két hétben, így nem tudom mikor lesz ídőm ezekre, de amint jutottam valamire kérdezek!
Köszönöm!
(#) foxi63 válasza Hilo hozzászólására (») Feb 13, 2014 /
 
2,2V az LF sorozat alsó határa. A normál sorozatnál 4V aminél még tudja a 20MHz-et, ezután csökken a freki. 3,3V nál még épp tudja a 10MHz frekit.
(#) Báddzsó válasza foxi63 hozzászólására (») Feb 14, 2014 /
 
Nem tudom miért erőltetitek, hogy a rf modul adja a pic órajelét... A pic úgyis SPI-vel kommunikál a modullal tehát ott nem számít az órajel eltérés. A modulon meg úgyis be kell állítani a rf komm. bps-át. (A PIC-ben meg természetesen van belső oszcillátor.)
Szóval 3,3V-ról mehet minden, szintillesztő áramkör (feszosztó) nélkül, olyan frekin amin a pic szívesen megy 3,3V-ról és még ráadásul megspóroltok egy vezetősávot a NYÁKon.
A hozzászólás módosítva: Feb 14, 2014
(#) Hilo hozzászólása Feb 17, 2014 /
 
Szeretném részletesen átlátni a működését a modulnak, nem csak használni más által írt programmal, ebben kérnék segítséget. Előre láthatólag sok kérdésem lesz, aminek tudok utána olvasok, de inkább kérdezek majd sokat hogy jól értem e amit olvastam.
Első körben a "lábak" jönnének, kiegészítenétek illetve javítanátok/kiegészítenétek amit beírtam már? SPI adatátvitelt még csak most olvasom, lehet arról is kérdezek még, ha nem lesz tiszta.
Köszönöm előre is!
nINT/VDI - ???
VDD - +3,3V ide
SDI - SPI adat bemenet
SCK - SPI órajel
nSEL - ???
SDO - SPI adat kimenet
nIRQ - ???
FSK/DATA/nFFS - ???
DCLK/CFIL/FFIT - ???
CLK - Órajel innen jön ha a PIC a modul jelét használná
nRES - ???
GND - föld ide
(#) Báddzsó válasza Hilo hozzászólására (») Feb 17, 2014 /
 
adatlap 4. oldal. Bővebben: Link
(#) foxi63 válasza Hilo hozzászólására (») Feb 17, 2014 /
 
Szia!
Alapvetően 5 lábbal kell foglalkozni. SDI SCK SDO már adott. NSEL : logikailag alacsony az aktív szint, és a modul kiválasztására való! Mivel az sck és sdi lehet párhuzamosan más perifériák működtető jele is , a modul csak az nsel alacsony szintjén reagál rá.
NIRQ láb adáskor és vételkor is jelez, ha a modul tudja fogadni a következő byte-ot, illetve a fifo-ban van már annyi beérkezett bit ami az initben meg lett adva.
Lehetőség van a modul Status regiszterét is kiolvasni, ekkor a 0 parancsot kell kiadni, illetve mindegy hogy milyen szám megy parancsnak, ha az első bit nulla.Status beolvasásakor az első beérkező bit ha 1 akkor küldhető az adat...
A többi láb nem használatos, ha nem egyedi üzemmódot akarsz beállítani,
NRES resetláb, belsó ellenállással felhúzva, nem kell vele foglalkozni.
A másik pedig,hogy a PIC belső rc oszcillátora nagyságrenddel rosszabb, mint egy kvarcoszcillátorról kapott jel.
A hozzászólás módosítva: Feb 17, 2014
(#) Hilo válasza foxi63 hozzászólására (») Feb 19, 2014 /
 
Sziasztok,
El tudnátok mondani részletesen hogy is megy ez az adat átvitel a PIC és a modul között? Vagy egy forrást ahol utána tudok részletesebben olvasni?
Elolvastam az oldalon lévő anyagokat, fórum topic-okat amiket ezzel kapcsolatban találtam de nem tiszta még mindig. Kérdeznék sorban akkor?

A fifo tulajdonképpen micsoda? Ha jól vettem ki egy adatregiszter, ami jelen esetben 16 bites és a modulban van. Küldéskor ebbe töltjük bele az adatokat és ezt küldi ki, fogadáskor ebbe jön az adat és ezt olvassuk ki. Ezt jól értem?

NSEL az azt hiszem tiszta, ha logikai 0 van akkor használom a modult, ha épp nem használom akkor logikai 1? Folyamatosan küldök adatokat akkor folyamatosan logikai 0 van?

SPI adatátvitel hogy működik itt, mert még mindig nem tiszta.
Olyasmit szűrtem le hogy 2x8 bitet küldök a modulnak amit a SCK lábon órajellel vezérelve bitenként adom át a modulba ami a fifo-ba forog bele? Nagyon nem tiszta ez nekem.
A modul beállítása is SDI lábon keresztül történik, és az adatküldés is?

"NIRQ láb alacsonyra vált ha a küldés befejeződött". Alapból ez logikai 1 en van? Ha elküldte az adatot akkor logika 0 ra vált majd vissza 1 re? Ezt meg megszakításra használható fel?

Köszönöm a segítséget és elnézést ha fárasztó vagyok.
(#) foxi63 válasza Hilo hozzászólására (») Feb 19, 2014 /
 
Szia!
Először is a modul adatlapját nézd meg, különösen a küldhető parancsoknál!

FIFO igen regiszter, file input file output . A modulnak mindig 16 bites parancs megy ki.Ha adás üzemmódban vagy akkor 1byte kivitele a Transmitter Register Write paranccsal történik, ami áll a 0x B8yy 16 bites parancsból az yy a 8bites adat. Fogadáskor az NIRQ láb jelez, ha megtelt a fifo kiolvasható az adat (beprogramozható 1-16 bit ig, hogy mikor jelezzen)

NSEL : folyamatos küldési üzemmód is van, de nem küldheted el a parancsot, csak ha azt tudja fogadni a modul (SDO polling vagy NIRQ)

SPI adatátvitel :eddig nem foglalkoztam vele.

Igen minden parancs az olvasási parancs is CLK és SDI -n keresztül megy, azonban az olvasási parancs igazából 8 bites, a másik 8 órajel alatt már érkezik is sorban a 8 bit az SDO lábon.
Az NIRQ láb csak kérelmet jelez, ha a fifo megtelt, illetve adáskor kéri a következő adatot.
(adáskor inkább az sdo polling-ot használja a gyári példa progi)
Akár megszakításra is felhasználható (sőt...)
A hozzászólás módosítva: Feb 19, 2014

RFM12B.pdf
    
(#) Hilo válasza foxi63 hozzászólására (») Feb 20, 2014 /
 
Sziasztok,
Igyekeztem értelmezni a modul leírását és a minta programokat, az angol tudásom sajnos nem a legjobb, de megteszem amit tudok.
Leírom hogy értelmeztem a dolgokat kérlek javítsatok ki ha rosszul értettem.
A picből a fifo-ba töltöm fel az adatokat, akkor ahogy mondtad ez mindig 16 bit. Az első 8 bittel határozom meg milyen adat jön, a második 8 bit meg a beállítás/adat. Ezzel állítom be a modult minden alkalommal amikor üzembe helyezem. Adatlapon fent van minden beállítás, ez a rész tiszta.
Az adat küldéskor mindig "B8yy"-metódussal megy, azaz ha akarok küldeni több adatot akkor pl.: B8AA, B8AA, B8AA, B82D, B8D4, B8yy, B8xx, stb...
Ha küldök akkor sorban először
AA, AA, AA - ezek a szinkronizáláshoz kellenek ; 2D, D4 - azonosítók ; Küldendő adatok ; küldött adatok ellenőrző byte-ja (ezzel ellenőrzöm majd a fogadó oldalon hogy a kapott adatokból semmi nem veszett el) ; AA, AA (az utolsó két AA mire kell?)
Ha megjött a 16. bit akkor NIRQ alacsonyra vált ezzel jelez ha jól értem? Ezután visszavált logikai 1 re ás mehet a következő 16 bit?
Amit írtál a PIC ből való küldés a modulnak ez ha jól értem, kommentekben kérdezek
  1. WRITECMD:
  2. BCF SCK_ ; léptetőjel logikai 0-ra
  3. BCF NSEL ;modul aktiválása
  4. MOVLW .16
  5. MOVWF COUNT1 ;számlálóba 16
  6. W00:
  7. BCF SDI_ ; kimeneti érték logikai 0-ra
  8. BTFSC ADATH,7 ;SDI_ logikai 1 lesz ha az ADATH, 7 bit 1-es
  9. BSF SDI_
  10. BSF SCK_ ;léptetőjel logikai 1-ra (1 bitnyi adat SDI_ lábról ekkor megy át modulba)
  11. NOP ;vár
  12. RLF ADATL,F ;forgatás
  13. RLF ADATH,F ;forgatás
  14. BCF SCK_ ;léptetőjel logikai 0-ra
  15. NOP ;vár
  16. DECFSZ COUNT1 ;ha mind a 16 bit elment akkor kilép a ciklusból
  17. GOTO W00
  18. BSF NSEL  ;modul deaktiválása
  19. RETURN

Olyat írtál kommentben hogy SDO_ láb jelzi ha mehet a következő bit. Ez miként van? Ha jól értettem a programot, vizsgálom a SDO_ lábat és ha logikai 1 van rajta akkor mehet a következő bit. Én úgy értelmeztem a metodikát hogy:
SCK_ láb logikai 0-án van / SDI_ lábra kiteszem a küldendő bit-et. / SCK_ lábat logiaki 1 re váltom, ezzel a modul olvassa az SDI_ értékét és tölti fifo-ba / ekkor a SDO_ lábon még logikai 0 van. / modul feldolgozta a SDI_ lábról a bitett és SDO_ felé logikai 1 et jelez/ ekkor SCK_-t 0-ra állítom, akkor SDO_ is visszavált logikai 0-ra / folytatom a következő bittel / 16. bit után jelez a NIRQ láb hogy megjött a 16. bit és megy a küldés.
Van olyan parancs, kell e használni ami fifo-t kiüríti?
Köszönöm előre is, ha ezt már átlátom akkor jön a fogadás.
(#) foxi63 válasza Hilo hozzászólására (») Feb 20, 2014 /
 
Szia!
Nem jól értelmezed!
Először is azért kell várni,mert lassabb lehet az átvitel, mint a PIC sebessége.
A küldési parancs kiadásával, kell várni amíg az SDO nem lesz 1 ezután már nem nézzük a küldendő 16 bit belefér a modulba!
Ha megfigyeled az DSO pollingolását, az nem más, mint a status regiszter kiolvasási 16 bites parancsa, adat=0 NSEL=0 SCK= 1 erre beolvasódik a statusreg első bitje, ami nem más, mint hogy küldhető-e a következő adat. Ha küldhető, abbahagyjuk a statusreg további beolvasását, (SCK=0 NSEL=1) és továbblépünk a writecmd rutinra.

Az adás végén az AA AA talán kiüríti a fifo-t ??, de kell biztosan!!
Igen van WriteCMD(0xCA83); fifo reset és ezután nem is töltődik semmi a fifoba, csak a 2d d4 adat beérkezése után a következő byte.
(#) Hilo válasza foxi63 hozzászólására (») Feb 21, 2014 /
 
Szia, akkor újra nekifutok.
FIFO-ba adatot a következő metodikával adok át:
  1. SCK_ - 0
  2. NSEL - 0
  3. 16 x {
  4. SDI_ -0 vagy 1 küldendő bit értékének függvényében
  5. SCK_ - 1
  6. SCK_ - 0
  7. } SDI_ értéket forgatással cserélem
  8. NSEL - 1

Az adatlap küldés diagramján (19. oldal) azt vettem ki hogy a NIRQ lábat kell vizsgálni és az ha alacsony értéken van akkor mehet a 16 bitnyi adat. (Ezt jól értem? Ez így működő képes?)

Adó oldalon sorban ezt kell a programnak csinálnia:
- SDO_, SDI_, SCK_, NSEL, NIRQ lábak beállítás (ki/bemenet, stb)
- Szükséges regiszterek definiálása
- várunk 200mSec-et (ez a modulnak kell hogy magához térjen?)
- (Miért generálunk megszakítást TIMER2 vel, ez a rész nem tiszta.)
- Modul beállítása táblázatból (a 10Mhz-re váltás miért az utolsó?)
- Program lényegi része. (adatküldés pl.)

Adatküldéskor a program engedélyezi a "transmitter"-t, vár 150mSec az éledésre.
Engedélyezi a "base band block"-ot. (Ez micsoda? Ez a "2D D4"-es azonosítós rész?)
Miért kell a "transmitter"-t lekapcsolni küldés után? Csak spórolunk az elemmel van vagy más oka is?
Köszönöm a türelmet és a segítséget is!
(#) Hilo hozzászólása Feb 27, 2014 /
 
Valaki tudna válaszolni az utolsó hozzászólásomra, mert a hétvégén neki állnék és előtte mindenképpen szeretném átlátni a dolgokat.
Köszönöm előre is!
(#) foxi63 válasza Hilo hozzászólására (») Feb 27, 2014 /
 
Szia!
1. igen működőképes..
2. 200msec azért kell, hogy a bekapcsolási tranziensek lefussanak (PIC tápja perifériák stb.)
3.A timer2 más feladatot is ellát, de az adáscsomagokat is az időzíti, pl másodpercenként 20x küld adatokat.
4. Amikor vételről átváltasz adásra vagy fordítva, akkor kell 150uSec időt várni.
5.base band block a vevőrészhez van....
A 10MHz csak azért van utoljára állítva, mert az init parancsok a doksi alapján nagyjából sorba mennek, és ott is az az utolsó.
6. Az éter teli van mindenféle szeméttel, nem kell feleslegesen terhelni.hogy megy állandóan az adó. Más is szeretné ezt a sávot használni. Ráadásul 1/20 adás/szünet arány jelentősen kiméli a tápot, főleg, ha elemes...
egyébként működő komplett programot kaptál, felesleges átírogatni....
üdv.: Foxi
(#) Hilo válasza foxi63 hozzászólására (») Feb 27, 2014 /
 
Szia, Először is köszönöm a választ.
Nem akarom/akartam átírni a programot, viszont ha nem saját programot használok, addig nem állok neki amíg át nem látom teljesen. Alap célom hogy átlássam/megértsem a modul működését, új dolgokat tanuljak, ehhez viszont elengedhetetlen néha a sok, néha már fárasztó kérdés/boncolgatása a dolgoknak.
(#) Hilo hozzászólása Márc 5, 2014 /
 
Sziasztok,
A tüskés változathoz (RFM12B-868-D) hol lehet kapni ha lehet ráhúzható dugót? Az NDR-T elvileg rámegy, de a hozzá tartozó NSR házak már biztos nem.
Ehhez a NXT-G kéne ha a 2mm-es távot veszem alapnak, viszont ahhoz a házak egy sorosak, és a két hatos házat csak lefaragva tudnám egymás mellé tűzni.
Ami még eszembe jutott hogy, ráhúzom az érintkezőket, kinyomom műanyag ragasztóval és száradás után lehúzom, azaz saját házat csinálok neki.
Köszönöm a válaszokat előre is!
(#) foxi63 válasza Hilo hozzászólására (») Márc 5, 2014 / 1
 
Szia!
Sajnos én csak SMD modult használok, ott ilyen gond nincs...
A hozzászólás módosítva: Márc 5, 2014
(#) foxi63 hozzászólása Ápr 22, 2014 /
 
Hali!
Itt a C verzió:

rfm12b.c
    
(#) Pet91 válasza foxi63 hozzászólására (») Ápr 22, 2014 /
 
Köszönöm szépen
(#) Pet91 hozzászólása Ápr 27, 2014 /
 
Sziasztok!
Nekem most sikerült beüzemelnem egy ilyen trasceiver párt foxi63 aranyat érő segítségével.
Gondoltam megosztok pár észrevételt, és gondot amibe - leginkább a tapasztalatlanságom miatt - sikerült beleütköznöm:
Ha valaki a Wiki-ről művelődik az SPI-ről és nem elég alapos, akkor lehet hogy csak addig olvas amíg azt nem állítja a cikk, hogy MISO=SDI, igen ám, de csak a mesteren, tehát miután nem megy a kommunikáció egy ideje már, az adatlapot alaposabban tanulmányozva a modul SDO lába kimenet!!
Lehet hogy a reset láb belül is gyengén fel van húzva, de nekem csinál furcsa dolgokat a modul ha 10k-val nem húzom fel.
Sajnos mint rájöttem a mikro C nem fogad el globális változókat használó függvényt az interruptban. Lehet trükközni, de a flagek használata egyszerűbb.
Ha nem megy az inicializálás, akkor érdemes az órajel átállítás paranccsal nézni, hogy van-e kommunikáció, ez ugyanis jól mérhető egy kicsit jobb multiméterrel is.
Ha van, de az inicializáló parancsok kikapcsolják az órát, akkor érdemes kommentezéssel megkeresni melyik szó a hibás. Az én modulom például nem működik CC17 és CC37 pll beállításokkal 5MHz-es órajel fölött. Lehet hogy megint én nézek el valamit, de CC77-el eldöcög egyenlőre.
Akinek nem SMD tokozású a modulja, az figyeljen, hogy az antenna helyen két luk is van, ugyanakkor az antennát fixen nem oda kell bekötni amelyik mellé oda van írva hogy ANT.
Hirtelen ennyi volna
(#) yety válasza Pet91 hozzászólására (») Máj 12, 2014 /
 
Szia, abban biztos vagy, hogy a másik lukba kell forrasztani az antennát?! Érdekes módon ezen a képen nem úgy van mint az én rfm12b rev4.0-ás esetemben és itt lehet, hogy a másikba kell: http://plischka.at/images/RFM12B_DIP_1.jpg
De ha nem tévedek, akkor a balun végére kéne forrasztani és nálam pl már jó helyre nyomták az ANT jelzést. Megerősítést kérek , mert nem biztos, de nekem megy... szóval talán inkább érdemes figyelni, hogy ne a földbe forraszd az antennát, hanem a balunra. Igaz?!
Üdv!
(#) k3gy3tl3n válasza yety hozzászólására (») Jún 20, 2014 /
 
Szia! Nekem is az ANT felirattól távolabbi lyukba kellett tennem az antennát, az ANT felirat mellett közvetlenül a föld van. Rengeteg kép van neten ahol mégis az ANT mellé teszik... lehet hogy az újabb rev4.0 ban már máshogy van, meg kell nézni melyik megy a földre és a másikat kell használni.
Következő: »»   11 / 12
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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