Fórum témák
» Több friss téma |
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?
Sziasztok, tudtok esetleg egy assembly minta programot küldeni fogadásra, és küldésre?
Előre is köszönöm!
Szia!
Bár C-ben van meg, de összerakok egyet asm-ben este, mi is a konkrét áldozat? 16F886 ?
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!
Szia!
Az adás megvan.:
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
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!
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
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
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!
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.
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
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
adatlap 4. oldal. Bővebben: Link
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
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.
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
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
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. ![]()
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.
Szia, akkor újra nekifutok.
![]() FIFO-ba adatot a következő metodikával adok át:
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!
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!
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
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. ![]()
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!
Szia!
Sajnos én csak SMD modult használok, ott ilyen gond nincs... A hozzászólás módosítva: Márc 5, 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 ![]()
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 ![]() Üdv!
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.
|
Bejelentkezés
Hirdetés |