Fórum témák
» Több friss téma |
Fórum » RFM73 modul programozása
A SwitchToTxMode függvényben van a CE vezérlés, a függvény végén 1-re húzza. Lehet, hogy a Send függvény végén le kéne húzni 0-ra?
Ráakasszam a szkópot a CE lábra? Lehet, hogy rendelek egy logikai analizátort, ha azt rádrótozom az rfm lábaira, akkor egy időben látni lehetne, hogy mi mit csinál.
Idezem a datasheetet
4.5 TX Mode PTX device (PRIM_RX=0) The TX mode is an active mode where the PTX device transmits a packet. To enter this mode from power down mode, the PTX device must have the PWR_UP bit set high, PRIM_RX bit set low, a payload in the TX FIFO, and a high pulse on the CE for more than 10μs. En legalabbis igy ertelmeztem. Szoval valszeg, amikor te atkapcsolod adasra, akkor meg ures a TX FIFO. Probalj egy CEhigh, szunet 10ms,CElow utasitast kiadni az irasod utan, hatha jobb lesz. Nezzuk az aramfelvetelt. A hozzászólás módosítva: Márc 15, 2015
Esetleg meg annyi, hogy ha majd ado-vevokent fogod a modult hasznalni, akkor celszeru csak annyi idore lefoglalni a csatornat, amig adsz, utana a vevo reszere erdemes felszabaditani azt, en ezert alkalmaztam a lenti megoldast.
Nalad a forraskodban ha a CE-t alacsonyra huzod, utana nincs, ami visszahuzza, mert tobbszor nincs adasra kapcsolas a ciklusban.
Most így néz ki a Send függvény.
Az áramfelvétel 0.39mA. A vevő még mindig nem vesz tudomást az adóról. Egyelőre az egyik modult csak adóként, a másikat csak vevőként használom, de ha működik, ki tudja később mire használom majd..
Mark, az adopufferbe iras UTAN kell a pulzust kiadni...
Szoval MIUTAN feltoltotted a puffert. Nezegetted mar az adatlapot vagy csak a peldaprogram alapjan probalkozol? Ja, es szerintem az adasra kapcsolas magasan hagyja a CE bitet.... Tehat ha mindenaron a rutinokkal akarsz bohockodni, akkor MIUTAN feltoltotted a puffert, kerj egy adas rakapcsolast, aztan varj 10us-t, utana kapcsolj olvasasra. A hozzászólás módosítva: Márc 16, 2015
Ja, értem, szóval ez után a sor után kellett volna írnom?
SPI_Write_Buf(W_TX_PAYLOAD_NOACK_CMD, temp_buf, 17); Megtettem, de ugyan az a jelenség. Rendelek 16F690-es pic-eket és összerakom, az eredeti programot beégetve. Ha azzal működik, akkor megpróbálom visszaírni úgy az eredeti programot, hogy nekem jó legyen, sajnos fogalmam sincs, hogy abban a formában milyen fordítóval tudnám lefordítani, mert a CCS C Compilernek nem tetszik az egész.. Ha valaminek, akkor annak működnie kell, amit a gyártó közölt hozzá.
Az egyaltalan nem biztos. Mikrochipék nem arrol hiresek.
Ugy ertetted, hogy spi writebuf utan tettel egy switchtotx aztan 10us varakozas utan switchtorx? Mert en igy.
Na, talán lesz valami. A CE láb vezérlését írtam be, azzal nem adott, de most beleírtam a switchtotx és rx függvényeket, így már felveszi az áramot, a műszer 14mA körüli értéket mutat, így meg is van az a huszon pár mA, amit az adatlap ír.
A vevő viszont még mindig nem veszi, az IRQ lábon sincs feszültség változás, teljesen tápfeszültségen van, szóval semmit sem vesz. Ezzel mi lehet a probléma?
A megfelelo cimu pipeline-t kell olvasni.
Stimmelnie kell a 2Mbps/1Mbps-nek, a csatornaszamnak, es a vevo- es az ado cimenek is. Ezeket elore be kell irnod, mielott elkuldesz barmit. Maskulonben nem vesz semmit. Adatlapban megtalalod. Aztan az ACK/NOACK is stimmeljen. Egyebkent siman olvashatsz a megfelelo vevopufferbol, hogy megjott-e. De ha a fenti dolgok nem stimmelnek, akkor egyaltalan be sem teszi. Az IRQ-t szerintem egyelore ne hasznald. Szoval ahelyett, hogy kritika nelkul atveszed a peldaprogramot, probald megerteni a mukodeset, hogy mit miert csinal, parhuzamosan az adatlap ertelmezesevel. Ja es ami az egyiknel adocim, az a masiknal ertelemszeruen vevocim. Ha megnezed a progimat, ott minden assembly ellenere kommenteztem, hogy melyik melyik nevu csati, - adonal es vevonel egyarant - igy azonosithatod, atnevezheted oket, amire te szeretned. A hozzászólás módosítva: Márc 16, 2015
Elég sok kihagyás után végre volt időm ezzel is foglalkozni.
Nos a sebesség, a csatornaszám és a címek stimmelnek, mert tulajdonképpen ugyan az a forráskód, csak a main függvényben az adónál a Send, a vevőnél pedig a Receive rutinra hivatkozok, ennyi a különbség a kettő között. Az adócím és a vevőcím az én forráskódom elején egy változóban van megadva, és mindkét helyen azt használja, szóval az sem térhet el. Átírtam a vevő rutint, hogy már akkor jelezze a vételt, ha új adat került a fifo-ba, de itt sem villog a led, így már oda sem érkezik meg, nem csak az ellenőrzésen akad meg. Pedig reméltem, mert azzal lehetne mit kezdeni.. Megint ott vagyok, hogy minden stimmel, de valami mégse.
Elsokent erdemes lenne egy olyan rutint irnod, ami kiolvassa a kiolvashato regiszterekbol a dolgokat es ezt osszevethetned az ado es a vevo oldalan.
A vevo aramfelvetele hogy alakul? Mert vetelkor szinten 10mA nagysagrendunek kell lennie. Ugye, az ado cime es a vevo cime a ket kulon PIC eseten felcserelodik... Szoval szerintem vagy nem vesz (ugyanugy standby-ban van, mint az ado volt) vagy a cimzes nem megfelelo, vagy abban az ACK modban van, ami nem kellene. Kuldtem neked a taviranyitos kisautom kodjat, ott benne van, hogy mi az ado cime es mi a vevo cime. Ha esteleg azokat a megfelelo helyre beirod (ezert kellene visszaolvasni), akkor sem megy?
Ezt a kiolvasható regiszterből való kiolvasást nem igazán értem. Hogy tudom kiolvasni?
Az adó és a vevő címe felcserélődik? Szóval kettő címnek kéne lennie? Nekem egy változóban van meghatározva egy cím, ami így néz ki.
Később, az RFM73_Initialize rutinban a SwitchCFG(0) után (azaz amikor a Bank0-t használja), van a programban egy ilyen rész:
Itt azt írja, hogy a Tx címnek meg kell egyeznie a pipe0 vételi címével. (Én csak pipe0-t használok.)
Hat hogy nem irod, hanem olvasod az adott regisztert. Mint mikor pl a statust ellenorzod.
Igen, de a vevo tx cime mas kell, hogy legyen, mint az adoe. Azon kivul a vevo Rx1-es csatornajaba kell irni az ado tx cimét. Az rx0 az az ACK fogadasara valo.
Tudok így hozzáadni egy másik címet, hogy csak írok egy új változót neki, és a változó nevét beírom a megfelelő helyre? Vagy a bank regiszterekben is át kell írni valamit, hogy elfogadja az új címeket?
Sajnos a C-ben nem tudok segiteni, azt hittem, neked ez nem okoz gondot.
A regiszterbe siman beirhatod, nem lesz baja. Engedelyezve van a vetel a megfelelo csatornan a 0x22-es regiszterben? A 0x23-as regiszterben az adonal es a vevonel is 3 vagy 5 byte-os cimet allitottal?
Nem is a C-vel van a probléma, mert beírni be tudom, csak az volt a kérdés, hogy nem baj-e, ha két címet használok, a bank regisztereken nem kell változtatnom? De ezek szerint nem.
A vétel engedélyezést nem találom, melyik regiszterről van szó? Az adatlapban se találom, hogy melyik ez. Beírom a másik címet is, és meglátjuk, hogy mi lesz.
Bocsi, nem 22-es, hanem 2-es regiszter (csak en mar az iras parancsot hozzaadtam, attol lett 22). Ott van a data pipe enable bitszinten. Ezt legalabb 3-ra kell allitani (b'00000011') a 0. es az elso engedelyezesehez.
Tehat vesz fel a vevo rendesen aramot? Mert akkor legalabb vesz. Ha a cimek is jol vannak beallitva es az engedelyezes is megtortent, akkor mar vennie kellene adatot is.
Eléggé elhanyagoltam mostanában a témát.
Meguntam, hogy nem működik az egész, és vettem Attiny26L mikrovezérlőket, amiket Áron is használt, és az ő által fordított hexeket beégettem az avr-ekbe. Érdekes módon, ugyan azt csinálja, mint a pices áramköreim: Az adó oldalon villog a led, a vevő oldal semmit nem csinál. Lehet, hogy rossz modulokat küldtek a chipcad-től? Kétszer is rendeltem, egyik rendelésből valóak sem működnek..
Nagyon valoszinutlen. Esetleg a tap es a fold koze rakj egy 100nF kondit.
Aron rf70-est hasznalt vagy rf73-at?
Es a kapcsolas is tokeletesen megegyezik?
Hany volttal taplalod meg az ic-t es hannyal a modult? Milyen regulatort hasznalsz?
Szia! Usbisp- ről tápláltam 3.3V-tal. De megvan a hiba, az AVR-esnél egy figyelmetlenség miatt nem volt jó a nyákterv, a modul két kivezetését nem jó helyre kötöttem be. Megcsináltam a picest is, a változók elnevezései zavartak meg, ez sajnon nem "szabvány" a fordítókban, és az uint32 helyett 16 bites változót definiált. Kijavítottam, már működik az is szépen. A hatótávja valóban elég gyatra, de amire most nekem kell, arra teljesen elegendő.
A hatotav valtoztathato, a dB erteket tedd maximumra az adonal (ha csak egyiranyu). Cserebe tobbet fogyaszt. Az antennat is barkacsolhatod kicsit, pontos hosszra hangolva.
De 100m-t akkor sem fog vinni, max. iranyitott antennaval. Ezeket foleg belterre terveztek, egy szobara. 250Ft, szoval szerintem a hulyenek is megeri.
Jo, az rfm70-es volt annyi, ez horribilis 370 most. En vettem vagy huszat anno, annyiert.
Bővebben: Link
OK, én itt néztem: Bővebben: Link
Meg szoktam nezni a datumot. Az evet minimum.
Egy ideje használom, tesztelgetem a modulokat. De a vevő oldal áramfelvétele sajnos túl nagy (20mA körül, folyamatosan) ezt nem engedhetem meg a tápellátás módja miatt. Mit tudok vele kezdeni? Vegyem le az érzékenységet? Az nem baj, ha az adónak nyélgázon kell menni, mert ritkán van adás, és ott nem számít annyira.
Más: Mennyire lenne stabil, ha a modul a tápot is a pic egyik kimenetéről kapná? Mert az áramigénye miatt simán ráköthetném, és csak akkor kapcsolom be a modult, ha kell.
Ha a feladat megengedi, hogy az ado szoljon elotte, ha adni akar majd, akkor eleg a vevot rovid idokozokre bekapcsolni, mikozben az ado hosszu sorozatokkal probal kapcsolatot teremteni, majd ha erzekeli, hogy majd adas jon, akkor teljesen vetelre allitani, a transzmisszio utan ujbol visszaalitani erre a figyelo modra.
A vevo erzekenysege szerintem nem allithato, de valoszinuleg nem is befolyasolja az aramigenyt. A kapcsolas ELVILEG lehetseges a PIC adatlabarol, de szerintem egy pirinyo FET sot23-as tokban odafer, mondjuk 150-200mA terhelhetoseggel. Egy hibafaktorral kevesebb. A modult elkuldheted alvo allapotba is, akkor elvileg uA a felvetele, ugyanakkor gyorsan ebred. A feladat fuggvenyeben erdemes ezeket fontolora venni.
Köszi a választ!
Értem, hogy mit mondasz, de sajnos a késés nem igen játszható meg, elég sok bosszúságot okozna. Ránézek erre az alvó módra, úgy már nagyon jó lenne, sajnos a használat közbeni áramfelvétel még mindig problémát okoz, de lehet, hogy a tápláláson kéne módosítani, most egy CR2032-ről megy, lehet, hogy valami combosabb áramforrást kell keresnem. |
Bejelentkezés
Hirdetés |