Fórum témák
» Több friss téma |
A státuszregiszter visszaolvasgatása önmagában nekem nem vezetett eredményre. Gondolom valamit inicializálni kell előtte, de annyira nem mélyedtem bele, mert sikerült működésre bírnom. Az előzőekben említett könyvtárat ajánlani tudom, mert elég jól működik, amióta a lentebb említett hibákat kijavították.
Hali...
Én már vagy egy éve nyaggatok Ilyen RFM12B modult és teljes sikerrel. Arra kell figyelni, hogy a kimenetei OC azaz open collectorosak így fel kell 10K ellenállással vinni a Vdd-re. Pontosabban az FSK, NIRQ, lábakat, de jó ha az SDO labat is, így kevesebb a szívás vele. Én speciel komplett PIC modult hoztam össze egy haverommal, ami egy include és egy macro fájlból áll. Tutin megy. Üdv mindenkinek!
Szia!
Elvileg az rfm12b -nek a lábian van weak pull up resistor (133k). Esetleg ha még van benned segítő szándék akkor én is és gondolom a többiek is szívesen fogadnák a segítségedet. Esetleg valami bővebbet a modulról, főként a kódról. Hogy kétirányu e a kapcsolat pl. Illetve hogy mennyire zajos neked az adás, milyen messze megy, milyen sebességen? És hogyan köszübölitek ki a hibás adatátvitel miatti bítokat? Gondolom checksum, de az nem valami megbízható. Szóval ha neked tényleg megy akkor szívesen vennénk a segítségedet!
Minden adatátviteli rendszerben alkalmaznak vonali kódolást, ami lassítja ugyan a tényleges adatátviteli sebességet, de egyben biztonságossabbá teszi. A vonali kódolás mindíg az átviteli út tulajdonságainak egfelelő. Pl. semilyen átvitel nem visel el hosszú ideig azonos jeleket, sok 000000 -t vagy 1111111 -et, ezért valamilyen kódolást alkalmazni kell, és akkor már olyat, ami hibajavítási tulajdonsággal rendelkezik. többnyire redundanciával.
Ezeknél arádiós modemeknél többnyire Manchester kódolást alkalmaznak, ha végigolvasod a hasonló topikokat, láthatsz példákat is rá. A kódolást, dekódolást a mikrovezérlő programmja végzi (általában) Bővebben: Link Vezetékes átvitelnél probléma a hosszú vezeték feltöltödése is, ezért ott bipoláris kódolást használnak, pl. HDB3, AMI Ami a rádiós összeköttetést illeti, azt ki lehet számolni, az adatlapon megadott max adótejesítményből, és a vevőérzékenységből, a használt antennák nyereségei (veszteségei)ből, valmint az átviteli út csillapításaiból
Köszönöm a hozzászólásod!
Igen én is Menchesterre gondoltam előszőr. Bár ameddig még nincs meg a teljes framework, addig ezt a részét nem implementálom. Most még a lelkivilágát nézem az IC-nek és sok olyan dolgot találtam amit az adatlap nem ír....pl a küldés előtt ha az nFFs lábat nullába visszük majd küldés után vissza akkor lényegesebben kevesebb lesz a hiba. Az a datátvitelt meg csak elméletben tudod kiszámolni. Ok hogy a fizikája képes a megadott sebességre, de lehet hogy maga a kód az ami behatárol. Névlegesen hogy ugye mondjuk az adatráta lehet hogy 38kbps de minden byte elé kell írni a syn kódot meg a csomag elé a preamble szóval ezért kérdeztem hogy mekkora data rate-t sikerült elérni... meg persze ok hogy csinált egy könyvtárad hozzá, mi nagyon nemes dolog...csak azt szerettem volna még ebből megtudni, hogy pollingol vagy interuptal csinálja, illetve hardweres vagy softwares az spi. Mostani problémám, hogy az adásnál nekem nem akar feljönni a nIRQ láb, 10k -val tápra van kötve. Ezért mikor a bytokat küldöm akkor ugye elvileg ez a láb low jele jelzi hogy a TX buffer üres és írhatok. De mivel ez nem lesz táp így állandóan flood van...
Sziasztok!
Na elég szépen megy a dolog...de azért még nem minden tiszte. PIC-et használok: A küldés kódja a következő void RFSend(unsigned char data){ unsigned int tmp=0; while(nIRQ) {} tmp=Write_SPI(0); nFFS=1; Write_SPI(0xB800+data); nFFS=0; Delay_us(280); } Az érdekesség az, hogy az nIRQ láb valahogy nem azt csinálja amit kell...vagy én nem tudom hogy hogyan kéne mennie... Szóval ha kiveszem a késleltetést akkor nem látom az oscilloszkópon a jelét az nIRQ-nak és az átmenő adatok is nullák. Ha benn van a késleltetés akkor meg látszik hogy mozog az nIRQ, nem 280us-ig tehát attól független. Csak azt nem értem ha meg kell várni az adat kiküldését akkor minek van IRQ láb?
Szia!
Esetleg nem osztanád meg velünk a könyvtáradat? Bevallom most jól jönne! Előre is köszönöm! (Köszönjük, a többi forumozó nevében is.)
Hali
Én is küzdök már 1 hete rfm12b-868-smd modullal, nem sok sikerrel. a status regiszterre csak nullák jönnek vissza. Úgyhogy örülnék egy működő kódnak. PicBasicben nyomom, úgyhogy ha sikerülne elindítanom, akkor szívesen visszaosztom a basic kódot.
nem lehet hogy az nirq lassan vált vissza, a programod hamarabb újra a rfsend rutint hívja, mielőtt az előző átvitel irq-ja visszaállna?
Szia!
Pár tapasztalat. Az RFM12B jalű moduloknak a lábait nem open collectorosak. Nem kell már nekik felhúzó ellenállás. Pár jó tanács. Az nRES lábat érdemes lekötni és nem programból rángatni. Amikor elkeztem vele dolgozni akkor alacsony frekis SPI-vel dolgoztam. Akkor elindult, gyorsítottam az SPI-n és már nem ment, pedig a kódban nem volt időzítés. A status regisztert haszáltam kiolvasásra. Nekem az IRQ-láb nem akart rendesen menni, helyette érdemesebb használni a status regisztert, vagy az FFIT-lábat. Küldésnél ne feledjétek küldenk a syncron bítokat a preambulum után. Illetve gy kis érdekesség 1sync word esetén minten adat előtt kellett küldenem a syn-et. De 2 sync word esetén csak az elején utánna bármennyi byte átjöhetett burstben. Illetve ami még segített, annak elenére hogy adatasheet azt írja hogy a status regisztert reseteli olvasáskor ez nem míndíg törénik meg. Nálam azt hozta helyre hogy a fifo-t minden csomag után resetelem. Én az rfm12b-433-as modult használtam. 192kbit/s-et sikerült vele elérnem. Stabilan. Drótantennával, nagyon nem tudtam sétárgatni vele. De vasbeton épületen belül kb olyan 50 métert vitt még elég gyorsan utána radikálisan lelassult az adatfolyam. Lehet hogy alacsonyabb sebességen jobb a hatótávolság. De nekem ennyi is elég. Sok sikert mindenkinek! És csak egy megjegyzés, valahogy nem díjazom azon embereket akik csak beszólogatnak hogy "én már egy éve használok ilyeneket, haverral már komplett könyvtárunk van hozzá". Mert ez nem segítség hogy: bibibíííí nekem megy. Az ilyeneket lazán warn-al jutalmaznám, mér azt megértem hogy nem adja ki a könyvtárat mert ok...azt én se tenném szívesen. De hogy még kódrészletet sem...na mind 1. Ja igen nekem néha volt holyan hogy nem akart adni a modul bekapcsoláskor, csak akkor mikor újraprogrmoztam! És sajnos azt kell hogy mondjam hogy addig nem érdemes átlépni az ic rf részére amíg a status regiszter kiolvasása nem megy.... Ügyelni kell az DOUT CLK alapállapotára. És hogy full duplex a kapcsolat, tehát miközben írsz ő már löki is a biteket.
Az rfm12b-el látótvolság esetén 100m-150m körül, alacsony bitrátán.
A nagyobb teljesítményűvel nincs tapasztalatom.
"Sziasztok! Kitettem az adót a harmadik emeleti erkélyünkre. 474m-ig volt türelmem elsétálni, aztán visszajöttem. Hibátlanul átmentek néhány bájtos adatcsomagok. "
Ha jól emlékszem ennél a tesztnél 4800bps-t használtam. Jó lenne összefoglalni és így egyértelművé tenni a modul/IC működését. Pl.: Glory: "Én arra emlékszem így néhány év távlatából, hogy az IA4420-nál amikor az ember fel inicializálja és beállítgat mindent, valami parancsot kétszer kellett kiküldeni neki, mert elsőre nem mindig működött. " Továbbá Gatery tapasztalataiban leírtak. Hibás az adatlap? Nem tér ki mindenre? Vagy arról lenne szó, hogy bizonyos időzítéseket nem tanulmányoztunk rendesen és azért van ez a bizonytalannak tűnő viselkedés? Én a lábakat használom jelenleg, pár készüléket készítettem itthonra, 19200bps-t használok és hibátlanul működnek. De szeretnék majd elérni nagyobb sebességeket is.
Szia! Ezt a távolságot rfm12b, vagy 12bp modullal nézted?. Csak tájékoztatásképpen: az rfm12bp modulnak nincs fcc bevizsgálása (a 12b-nek van), és a gyártó nem is tervezi. Szóval ha termékbe megy, csak óvatosan... A CE jelölés gondolom egyikre sincs, még nem jártam utána. Valaki próbálta már beméretni milyen fel/alharmonikusokon, mekkorát sugároz?
Köszi Gaterynek is a tájékoztatást.
Készítettem egy képet a Spektrumáról.
A vivőfrekvencia kereken 433-ra van állítva. Power Output: Max Deviation: 120kHz Szerintem nagyon korrekt kis jele van.
Köszi, a hatótáv miatt nekem a 12bp 500mW-os kellene. Ekkora teljesítmény csak a 869.4MHz-nél engedélyezett. A spektruma egyébként nem itt, hanem a fel ill. alharmonikusoknál az érdekes. Találtam radiocrafts-os 500mW modult, ennek legalább van CE jelölése, az ára sajnos húzós
Sziasztok!
Szeretnék összehozni egy adó-vevő párost az RFM12B-868-DRFM12B-868-D Transciever-el. Volna pár kérdésem a vezérlésével kapcsolatban, néhány dolog nem világos. Az adatlapban látható kód jól látom, hogy valamiféle szoftveres SPI buszt használ? Melyikkel jobb vezérelni, hardveressel vagy szoftveressel? Az adatlapban a 11. oldaltól kezdődően látom a konfigurációs leírásokat. Hogyan vannak ezek a bitek? Nem igazán értem, ha lennének regiszterek, mint az AVR-eknél pl a DDRD, akkor sokkal egyszerűbb volna. Hogyan kell 1-es állásba tennem például a e l: Enable TX register-t? Van egy sejtésem a dologról. Ezek sorrendben vannak? Pl 1. bit, amit kiküldök, 2. bit, amit kiküldök, stb.? Akkor úgy kell az e l: Enable TX register-t 1-esbe állítani, hogy 0000000100000001? Az utolsó 8 bit pedig üres, az utolsó egyes. Miért? Azok fix értékek, fixen azokat kell elküldeni? Vagy éppen onnan tudja az Transciever, hogy milyen parancsot küldök ki (Configuration Setting Command, Power Management Command, stb.)? Olvastam, hogy küldéskor, vagy fogadáskor az egyik lábat valamilyen szintre kell billenteni. Melyik is ez a láb? A HEStore-ban ezt írják: "Analog and digital signal strength indicator (ARSSI/DRSSI)" Ennek segítségével a vett jelerősséget tudom mérni? Erről semmit sem találtam az adatlapban. Hol olvashatok róla többet?
Szia!
A 11. oldal azzal kezdi, hogy milyen sorrendben kell a biteket kiküldeni. Én azt javaslom, hogy először maradj a szoftveres SPI-nél, ha ez működik áttérhetsz hardveresre. Előnye, hogy amíg az adatátvitel tart, addig a CPU futtatja tovább a programodat. Amit kérdezel az a "Configuration Setting Command". Az egyes parancsokat a felső bitek határozzák meg. Látod az alapértelmezett értéket (POR - Power-On Reset). Ha ezt a parancsot kiküldöd, minden bit-et be kell állítanod kiküldés előtt. Ezeket célszerű a programodban előre definiálni az átláthatóság kedvéért is. Tehát még egyszer: beállítod az összes bitet (ahogy írtam a programod ezeket változókban tárolja) és kiküldöd az adott parancsot. Ugye ha tárolsz pl egy alapértelmezést minden beállításról, akkor logikai műveletekkel módosíthatod az adott bitet, majd az adatot elküldöd a modulnak. Pl.: szeretnéd az Enable Tx register bitet 1-re állítani: ConfigurationSettingCommand |= 128; kikapcsolni: ConfigurationSettingCommand &= ~128; Én úgy oldottam meg, hogy minden egyes parancs külön függvény. A 434MHz-es modulomnál ezt használom:
Küldés alatt az nSEL bemenetet kell alacsony szintre tenni - ha erre gondoltál? Ha visszalapozol, megtalálod az IC-t ami a modulban van és annak az adatlapját.
Köszönöm a választ!
Így már majdnem minden világos. Még azt nem tudom, hogy hogyan kell vele küldeni és fogadni. Gondolom mindig a TX és RX-et kell engedélyezni és tiltani, mikor mit. Ugye? Az nSEL-t mindig magas szintre kell billenteni, amikor küldök neki adatot, nem? Az a Chip Select volna, arra az esetre, ha több SPI-s eszközt kötnék egy buszra? A Te forráskódod publikus? Esetleg megosztanád velem?
Amire nekem kell arra jó. Még lehet szépíteni, bővíteni, optimalizálni, de egyelőre ezt használom.
Az "&& rf_stop == 0" részt kitörölheted. Ez a ciklusból való kilépésre szolgál ha kell. 433MHz-es modulhoz írtam. Definíciós példa:
Ne felejtsd le beállítani az adatirány regisztereket! Az nSEL alacsony szinten aktív (negativeSelect).
Köszönöm!
Ha megjöttek a modulok, akkor megpróbálom majd saját erőből beállítani. Bár pár helyen fogalmam sincs, hogy mit kell beállítani, pl kell valamilyen kondenzátor értéket is, Bandwidth, stb. Inkább a hardveres SPI-t használnám, azt jobban szeretem és szerintem stabilabb is. Hány MHz-es órajelet enged meg maximum az SPI-n? Az hogy lehet, hogy a HEStore-ba fel van tüntetve az adó-vevő moduloknál a nevében hogy pl: RFM12B-868-D. A 868 azt jelentené, hogy csak 868MHz-en megy? De fel lehet konfigurálni pl 915-re is, ugye?
A 868 MHz az 868, nem lehet "programmozni" 915 MHz re. Az egy másik verzió.
A 915 MHz nálunk erre a célra nem engedélyezett, ilyen (elvileg) forgalomba sem hozható.
Akkor a konfigurációs biteknél 868MHz-et kell kiválasztani (Select Band)?
És mi van, ha 915-öt választok ki?
Hali mindenki.
Bocsi hogy csak most írok, de nem voltam elérhető egy ideig. Persze a kapcsolat 2 irányú, mint kérdezték is. A távolság ideális Quad antennával kb 1000m volt nyilt terepen, de városban 500m-et simán viszi. Minden ASM- nyelven van megírva és szoftveres SPI-t használ. Én 434 MHz-s modult használok jelenleg is.
Ja azt elfelejtette, hogy nem használok semmi kódolát, és tökre jól megy FSK modulációban. Ez nekem nem volt gond, ge ha valakinek kell a kódolás is, arra is van sw modulom. Én most spec egy PCF8563 RTC-vel görcsölök, ami mindíg kihal, ha indulás után rögtön nem állítom be az óráját. Utánna újrabeállítani nem tudom, mert zagyvaság jön ki belőle. ha erre tud valaki valamit. szóljon.
Megosztod velünk a Quad antenna tervét?
Persze:
434MHZ-re: Melegér 16,4cm És 4db testszál Szintén 16,4cm.
A main rész hogyan néz ki?
Mit kell még pontosan beállítani a main-ben? A frekvenciát és a tx_mode vagy rx_mode függvényt meghívni? Azt tervezem, hogy először csak működjön, értsek meg mindent szépen lassan, aztán egy picit átszerkesztem a programot. |
Bejelentkezés
Hirdetés |