Mikä vialla?

H

hobby_85

Guest
Ostin RF pakki, lähetin ja vastaanotin, sekä verkkosivuilla samanlainen tuote on alla.Nyt IM yrittää kirjoittaa koodia, vain varmista, että se toimii.

http://www.sparkfun.com/commerce/product_info.php?products_id=8950

IM käyttämällä PIC 16f688 ja jos LED syttyy oikea malli, tiedän koodi toimii.Kuitenkin, se ei ole.

Tässä on TX-koodi:

# include <16F688.h>
//------------------------------------------------ -------------------------------
# define WireTX PIN_C4 / /
# define WireRX PIN_C5
//------------------------------------------------ -------------------------------
# sulakkeet XT, NOWDT, NOPROTECT, NOBROWNOUT, PUT
# käytön viive (kello = 4000000)
# käyttö RS232 (baud = 2400, XMIT = WireTX, ssä = WireRX, Stream = COM_A)

void main () (

for (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Räpyttää" border="0" />

(

if (input (PIN_C2) == 0) / / Jos painiketta painetaan
(

output_high (PIN_A1), / / output korkea Led
delay_ms (20) / / viive 20ms
fputc ( "T", COM_A), / / lähettää tietoja
delay_ms (20);
delay_ms (1000) / / viive noin ms
output_low (PIN_A1), / / output alhainen johtanut
)

output_high (PIN_A1) / / Jos painiketta ei paineta Sitten off LED PIN D1

delay_ms (50);
output_low (PIN_A1);
delay_ms (50);

)
)

Joten jos painiketta painetaan, kirjain T on tarkoitus lähettää yli, ja LED pitäisi tulla, sitten pois sitten pidemmän aikaa.

Tässä on vastaava vastaanotin koodi:

# include <16F688.h>
# sulakkeet XT, NOWDT, NOPROTECT, BROWNOUT, PUT
# käytön viive (kello = 4000000)
//------------------------------
# define WireTX PIN_C4
# define WireRX PIN_C5
//------------------------------
# käyttö RS232 (baud = 2400, XMIT = WireTX, ssä = WireRX, Stream = COM_A)
unsigned int8 tiedot;
int1 flag = 0;

# int_rda
void rd_isr (void) (
disable_interrupts (INT_RDA), / / Poista Serial Vastaanota keskeytys
disable_interrupts (GLOBAL), / / Poista Global Keskeytykset

data = fgetc (COM_A);
if (data == 'T') (
flag = 1;
)

enable_interrupts (GLOBAL);
enable_interrupts (INT_RDA);

)

void main () (

enable_interrupts (maailmanlaajuinen);
enable_interrupts (int_rda);

for (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Räpyttää" border="0" />

(

if (flag == 1) (
output_high (PIN_A1);
delay_ms (1000);
output_low (PIN_A1);
flag = 0;
)

output_high (PIN_A1);
delay_ms (50);
output_low (PIN_A1);
delay_ms (50);
)
)

Joten jos viesti on vastaanotettu, LED pitäisi tulla päälle / pois päältä 1 sekunnin välein.Jos ei, se olisi vain vilkkua päälle ja pois päältä.

Olen oskilloskooppi, jotta voin tarkastella signaalia siirretään.Tässä on ongelmia:

1) kytkin - Kun olen tarkistanut RF-signaali lähetetään, kun painiketta meni, huomasin askel oskilloskooppi.Viesti välitetään ikuisesti ja johti olisi valoa koodattu.
Joten tiedän jotain lähetettiin yli.Kuitenkin, kun pari sekuntia, vaikka kytkin on pois päältä, viesti on lähetetty automaattisesti.
Olen kytketty 220k aseistakieltäytyjä alkaen tuotannon MC LED, ja sitten GND.

2) vastaanotin - johti kytkeytyy päälle / pois, kuin se didnt saa mitään.Kuitenkin, kun olen kytkenyt OSC vastaanottimeen / RX ja MC, näen hypätä signaalin, vastaa signaali lähetetään TX.Joten miksi isnt LED-valoilla odotetusti?

Any ideas?

Kiitos

 
Jos olet koukussa sinun oskilloskooppi tietojen tuotos moduulin Uskon näet Whats tapahtuu.Moduuli on AM ja lähes varmasti on tietoa Slicer sisällä.Tämä kappale keskimääräinen tietojen taso (Huomaa, että tämä ei ole sama kuin keskimääräinen radiosignaalin taso).Se mukautuu ei signaalin (logiikka 0 menossa lähetin) ja säätää sen Slicer tasolle kohinaa.Tulet todennäköisesti huomaamaan, että satunnainen tietoja jättää moduuli ja koska olet vain etsimässä yhden Matching tavun, se tapahtuu joskus sattumalta.

On monia tapoja korjata ongelman.Valitettavasti moduuli ei ole signaalin tason lähtö seurata, muuten voi yksinkertaisesti jättää jotain, joka tuli ulos, kun mitään ei ole saatu, joten sinun on pakko ohjelmistoratkaisu.

Yksinkertaisin tapa yrittää on toimittaa useita nollaa (0x00, ei '0 ') ennen kuin tiedot, jotta vastaanotin muuttaa, niin on enemmän kuin yksi tavu tehdä viestisi.Muista, että jokainen ylimääräinen tavu saat 255 kertaa pienempi todennäköisyys rakenteessa on väärin.Minun hankkeet olen yleensä lähettää koko merkkijonoa joten pidätän ASCII "STX" luonnetta "selkeä saavat puskuri ja valmistautua vastaanottamaan tietoja" signaalin.Voin lähettää useita STX merkkiä, viestini ja sitten CRC-arvo vahvistaa kaiken menneen perille.

Olet selvittää kantapään kautta, että RF dataliikenne ei ole niin helppoa kuin miltä se näyttää.Sinnikkäästi kuitenkin, kun ymmärtää syy epäonnistumiseen ja suunnittelun puolustautui saat hyviä tuloksia.

Brian.

 
Hei Brian,

Kiitos vastauksesta.Tämä oli todella informatiivinen.Tämä on nyrkki kun olen leikkimässä RF, niin oikealla, se vähän turhauttavaa.Mutta olen halukas saamaan tämän työ-ja varmasti selvittää, mitä sanoitte.Minulla oli myös pari kysymystä, ja olisi todella kiitollinen, jos voisitte minua.

Ennen kuin pääsen kysymyksiin, Id haluan selittää hakemuksen lyhyesti.Minulla on 5 lähetin / vastaanotin paria.1 Master ja 4 orjia.Anteeksi, jos sain / saan terminologiaa väärin.Joka tapauksessa, jokainen 4 orjia on tunnistetaan ainutlaatuinen osoite.Nyt, antaa vain soittaa heille orja 1, orja 2 ja niin edelleen.

Ensinnäkin Master Tx on yhteyttä Slave1.Slave 1 saa satunnaisesti ei-tärkeän viestin ja lähettää ACK takaisin.Kun Master Rx saa tämän ACK, se on yhteyttä Slave 2 ja niin edelleen.Jos se doesnt get ACK tietyn ajan kuluttua jostakin orjia, se automaattisesti yhteyttä seuraavaan orja.Joten oikeassa, minun täytyy varmistaa, että signaali on koodattu oikein, ja tarkistussummat ja kaikki, niin että tiedän, mikä orja lähettää ACK takaisin.

Te sanoitte, että minun pitäisi ehkä lisätä pari 0: n varoittaa vastaanottimen, että viesti on välitön.Tämä on HEX, kuten sanoitte.Ok, joten antaa sanoa lähettää kolme 0: n ennen jokaista viestiä.Nyt Mestari on yhteyttä slave 1.Koska kaikki muut orjat ovat samassa huoneessa, jokainen orja tulee varoa tiettyjä "koodin" varmistaa, että viesti on tarkoitettu heille.Tämä on niiden orja tunnus.Joten orja 1, antaa tehdä 001.2 on 010 ja niin edelleen.

Joten, nyt viesti on 000-001 (for slave1).Nyt minun täytyy lisätä tarkistussumma kertoa vastaanottajalle, että koko viesti on vastaanotettu.Tässä on im getting sekaisin.Mitä pitäisi olla?Kolme muuta 0: n?Päinvastainen mssage ja Z kertoa vastaanottajalle, että kaikki on saapunut.Hows 000-001100-Z päällikön ja raataa 1, 000-010010-Z päällikön ja raataa 2 ja 000-011110-Z päällikköä slave3?

Nyt Sanotaan saamme tämän lajiteltu.Orja on lähettää oma ainutlaatuinen ACK päällikölle.Tämä on todennäköisesti 000-ACK-z.Samoin, B: n ACK olisi 000-BCK-z.

Olen menossa oikeaan suuntaan tässä?Vai olenko se completly väärin?

Kiitoksia, ystävä.

Käytössä Sivuhuomautuksena Brian, youve ollut vastaaminen Toinen viestit vuorovaikutuksessa RF-modulit IO nastat.TX / RX nastat PIC ovat käyttää RS232 puhua tietokoneeseen, joten minun täytyy oppia hallitsemaan RF-moduulien avulla IO nastat.Mielestäni tämä on nimeltään ohjelmisto UART.Pitääkö tämä paikkansa?Minulla ei ole aavistustakaan siitä, miten valvonta ry käyttäen UART on kuva, saati sitten valvoa sitä IO nastat.Mutta olen valmis pelaamaan kiinni ja oppia, joten jos voisitte auttaa minua, se olisi erinomainen.

Kiitos

 
Hi Hobby_85.

Järjestelmä on hyvin samankaltainen kuin yksi minun.Minulla on yksi master-ohjausyksikkö sisätiloissa ja 5 orjia ohjata sitä.Päällikön on radiolinkin, yhteys tietokoneeseen, ja LCD-näyttö, näppäimistö ja muutama varoitus valot / summerit.Orjat eivät eri asioita seurannan RFID valvontaan pumppulaite.

Ensinnäkin, isäntä / orja on hyvä tapa nimetä niitä, se tarkoittaa, että toinen on pomo, ja muut olisi noudatettava sitä!

Aion kuvata Viestit omassa järjestelmässä, vaikka olet tietenkin vapaasti luoda omia, ei ole olemassa sääntöjä, vain esimerkkejä.Haluan huomauttaa, että olen osoitteellinen FM moduulit sijaan AM niistä käytät, mutta periaate on sama.

Ylimääräisiä merkkejä voit lähettää ennen kuin todellinen sanoma on nimeltään "johdanto" ja niiden tarkoitus on kaksi puolta: ne antavat vastaanottimen aikaa sopeutua signaalin voimakkuuden ja ne antavat UART jotain märehtiä on saada se synkronoidaan.Lähes kaikki radio-moduulit ovat AGC (Automatic Gain Control), joka auttaa vastaanottimen selviytymään heikkoja ja vahvoja signaaleja yhtä hyvin.Jos he juoksivat täyttä herkkyyttä, jotta he voisivat kuulla heikkoja signaaleja he todennäköisesti ylikuormitus on vahva.Vastaavasti, jos voitto on asetettu matala, joten vastaanotin ei ylikuormittaa, se on "kuuro" ja heikkoja signaaleja.AGC vähentää voitto signaali saa enemmän, mutta se vie aikaa reagoida joten jos tietojen aloittaa heti ensimmäisen bittiä saattaa olla vioittunut.Heittää muutaman "jättää minut" tavua ulos ensimmäinen tekee, että se on valmis aitoa tavaraa.

Tästä näet, että johdanto on lähetettävä ennen kunkin puhkesi lähetyksen, riippumatta siitä, mikä moduuli lähettää sen.

Sinun on tehtävä ero sen välillä, mitä tietoja ja mitä ei.Esimerkiksi, jos käytät 0x00 kuten todetaan, et voi käyttää sitä tietosi.Olisi vaikea saada selville, mitä on todellinen viesti ja mitä pitäisi jättää huomiotta.Mitä voin tehdä, on lähettää kaikki tiedot tekstinä niin vain ASCII-merkkejä 0x20 läpi 0x7F käytetään kuljettaa tietoa.Tämä jättää valvonnan osa ASCII taulukon voidaan käyttää valvonnassa.Käytän STX (0x02) sen alkuperäiseen tarkoitukseen, joka on "Start of Transmission" esimerkiksi.Jos haluatte lähettää 0x1234 olisit itse lähettää 0x31, 0x32, 0x33, 0x34, ASCII-koodit yksittäisiä numeroita.

Joten tyypillinen viesti minun elimistö voi olla:
0x00, 0x00, 0x00, STX, 'H', 'e', 'L', 'L', '0 ', CR, [CRC]

jos CR on rivinvaihto (0x0d) ja [CRC] on tavu lasketaan kaikki välillä STX ja CR.

Se on hieman monimutkaisempi omassa järjestelmässä, koska minun täytyy ladata reitityksen osoitteet moduuleihin sekä tietojen ja käytän jotain vastaavaa Manchester-koodaus parantaa tietojen eheys, mutta näet yleinen ajatus.

Jos noudatat minun ASCII esimerkiksi voisitte vastata viestiin:
0x00, 0x00, 0x00, ACK, CR, [CRC] tai jos se ei ole, NAK sijaan ACK.

Olet oikeassa ohjelmiston UART, se on periaatteessa wiggling pelimerkkejä nastat oikeaan aikaan, niin se näyttää todella UART tekee sen.

Brian.

 
Jep, kaikki on järkevää nyt.Viime kysymykset ajattelin pois.In my system, kuten mainitsin, tietojaan viesti itsessään ei ole tärkeä.Itse asiassa kaikki MSG sisältää on joka raataa sen tulevan.

Joten tämä tarkoittaa lähettimen puolella, olen todella kova koodi MSG sisään tavoin todeta, että yllä oleva koodi, joka lähettää ja kirjain "T", haluaisin korvata sen ....

delay_ms (20) / / viive 20ms
fputc ('0 x00, 0x00, 0x00, STX, '', '', '', CR, C3, COM_A), / / lähettää tietoja päällikköä SLAVE 1
delay_ms (20);

minä laskettu CRC on C3 lisäämällä = 0xC3.

Oletan i laiminlyödä pilkkuja, kun kirjoitat koodin?

Kun kirjoitat vastaanotin koodia, se olisi jotain tällaista.Ill vain kirjoittaa psedo koodi

while (1) / / Do loputon silmukka
(
Int johdanto;
Int Data1;
Int Data2;
Int data3;
Int op;
Int CRC;

johdanto = fgetc (COM_A);
jos (johdanto == 0x00) (
johdanto = 0;
johdanto = fgetc (COM_A), / / ei vielä saada seuraavaan johdanto.
/ / tarkistaa, onko seuraava 2 johdanto on 0 Hex.Varmista, että johdanto-osassa on selvitetty ennen kuin se saa seuraavan merkin;
/ Get data yksi kirjain kerrallaan, ja tallentaa osaksi Data1, Data2, data3.
/ / seuraava arvo on op, jos ei ole, sen virhe
/ / Get CRC-arvo ja säilytä huomioon Int CRC
/ / kirjoittaa, jos ilmoitus lisätään Data1 Data2 data3 Hex ja katso, jos arvo on CRC.Jos ei, virhe, jos kyllä, valo LED tai jotain
)

Miten olen menossa tähän mennessä Brian?Tämä näyttää naurettavan hauskaa niin huonosti kertoa, miten se menee, kun testi on tänään.Onko mitään, mitä minun pitäisi muuttaa tällä välin?

IM yrittää selvittää RF (sekä perusteet atlease), jonka viikonloppuna.Ill on iskeä sinut miten tehdä IO nastat toimia RX / TX jossain vaiheessa myös.

Ja kiitos pitkän ja erittäin hyödyllisiä vastauksia.He ovat loistavia.Edelleen, TX, ei pilkuilla oikeutta? ... Im vain huolissaan siitä, että kun TX lähettää koko erä yhdessä, miten RX tulee erottaa toisistaan ja tallentaa em?jos laitan viive välillä jokainen ... mutta en tajua tarkoitus johdanto ja kaikki.

Kiitos

 
Melkein oikein!

Täytyy muistaa, että johdanto-osassa on siellä "selkeä polku" ja muut tiedot ja voi itse pääse läpi, koska AGC ongelma.tästä syystä, on parasta keskittyä löytämään STX kuin 0x00.

Olet oikeassa pilkkuja, ne ovat vain osana ohjelman syntaksia mutta olen hieman huolissani, että fputc ()-funktiota käsittelee niin monia muuttujia.Tarkista kääntäjällä asiakirjoja, mutta yleensä se hyväksyy vain yksi merkki kerrallaan.

Tämä on osa minun saada koodi näyttää, miten teen sen:
Koodi:void GotByte ()

(InByte = WaitRx ();jos (InByte == STX) / / STX aloittaa lähetyksen

(

InPtr = 0;

* InBuffer = 0;

LocalCRC = 0;

return;

)if ((InByte == CR) | | (InByte == ETX)) / / CR tai ETX lopettaa lähetyksen

(

ParseInBuffer (), / / prosessi puskurin sisältö

return;

)/ / Jos vielä tilaa InBuffer ja luonne on aakkosnumeerinen, liittää sen InBuffer

if ((InPtr <0x10) & & (InByte> 0x1F) & & (InByte <0x7F))

(

jos (InPtr <0x0E) LocalCRC = InByte;

InBuffer [InPtr ] = InByte;

InBuffer [InPtr] = 0;

)

)

 
lyh Gotcha,

joten tämä on mitä im muuttuu:

1) dont Etsi johdanto.(nollaa).Etsi STX
2) käyttää fgets () ja tallentaa merkkejä merkkijonon
3) Etsi CR
3) käsitellä arvot merkkijono varmistaa ASCII lisäksi vastaa localcrc.
4) Virhe on CRC dont ottelu, mutta jos se, thats viesti.

Sinut kaveri.Kiitos kaikille apua.Kun saan tämän menossa, Ill kertoa.

IM käyttäen RX / TX nastojen tällä hetkellä vain testata sitä.

IM vain lähettää tietoja osaksi PC, ei saa mitään.Niin voisin ehkä kytkeä RF-vastaanottimen RX-pin, TX on RS232 ja sitten Ill tarvitsee vain pelata 1 IO-nastaa ja tehdä se toimii kuin toinen tx ..

ps.oman oikeassa fputc.i didnt mielestäni kautta.huonosti Tarkista kääntäjä käsikirja ja selvitämme sen.

Thanks kasoihin.

 
Ehdottomasti paikalla!

Haluan tietää, miten pääset alkuun.
Olen parhaillaan hankkeen 2 UARTs ja vähän hakkaamista sekä niin voitte kuvitella mitä se on niinku!Se on käytössä useita 18F46J11 pelimerkkejä, käydessä 40.6MHz ja on 1Mb RAM roikkui sen hyvin.

Missä olet?Olisi mukavaa, jos jäseniä oli käytössä ainakin maansa niiden profiilit niin se antoi käsityksen siitä, mitä aikavyöhykettä ne sisään olen ollut joku valittaa olen hidas vastata (vaikka se on täysin vapaaehtoista), kun se on 3am täällä.

Brian.

 
Mitä teet tekee projektin näyttämään lasten leikkiä.Vaan koko järjestelmän asioita, IM todella yrittää tehdä huoneen tason paikannuslaitteet laite, avainsana on yrittää.Dont osata kuinka paljon huonosti päästä, mutta se kannattaa aina ammuttu mielestäni.

IM ultraäänellä ja RF saada TDOA merkeistä ja koska tiedän, korkeus huoneen, nopeus ääni ja valo, minun pitäisi pystyä löytämään sijaintiin perustuva kolmivaiheinen.Hyvin, että hieman selittää se Oletan.

IM Sydney tällä hetkellä, minun viimeinen istunto sähkötekniikka.Mutta olin esille Yhdistyneessä kuningaskunnassa.Pääaineeni on vallassa, niin im melko paljon pelissä kiinni televiestintä.Mutta sen def mielenkiintoinen.

Entä sinä?Teollisuuden ja uni?
(* ristiä sormet ja toivoo, te dont sanoa "lukio" *) haha

 
Lukion!!!

Haluan!

Vasemmalla 40 vuotta sitten.Olen nyt tekemässä elektroniikka lähinnä harrastus, mutta olen viettänyt monta vuotta televiestintä-ja testauslaitteet teollisuuden Yhdysvalloissa ja Euroopassa.

Brian.

 
välimailla kirjoitti:

Lukion!!!Haluan!Vasemmalla 40 vuotta sitten.
Olen nyt tekemässä elektroniikka lähinnä harrastus, mutta olen viettänyt monta vuotta televiestintä-ja testauslaitteet teollisuuden Yhdysvalloissa ja Euroopassa.Brian.
 
Jostain syystä, viimeisin vastaus on kadonnut niin minä kantaa siihen, mitä voin muistaa sen.

Se näyttää OK, mutta voisit kokeilla joitakin muutoksia:

STX ja CR todennäköisesti olisi "merkkiä" eikä "int", mutta se olisi parempi käyttää "# define-direktiivillä on tarkoitus asettaa ne.Käytän pienen tiedoston, alla, kutsutaan ascii.h ja # include sen yläosassa minun ohjelmia.
Koodi:/ / ASCII säätöomi määritelmät# define NUL 0x00

# define SOH 0x01

# define STX 0x02

# define ETX 0x03

# define EOT 0x04

# define ENQ 0x05

# define ACK 0x06

# define BEL 0x07

# define BS 0x08

# define HT 0x09

# define LF 0x0A

# define VT 0x0B

# define FF 0x0C

# define CR 0x0d

# define SOH 0x0E

# define SI 0x0F

# define DLE 0x10

# define XON 0x11

# define DC2 0x12

# define XOFF 0x13

# define DC4 0x14

# define NAK 0x15

# define SYN 0x16

# define ETB 0x17

# define CAN 0x18

# define EM 0x19

# define SUB 0x1A

# define ESC 0x1B

# define FS 0x1C

# define GS 0x1D

# define RS 0x1E

# define US 0x1F

# define DEL 0x7F

 
OK sinut.ill get it sorted out by Tomo.kiitos kaikille apua Brian.

sairaat yrittää saada ohjelmisto UART menee myös, niin saan tietää, ennen kuin viesti.

onnea projektin kanssa.

 
Brian,

Testasin pois minun koodi ... eikä onnea.Im alkaa tuntea syyllisyyttä siitä, että Im vaatii niin paljon apua, jossa jotain yksinkertaista ylös.

Lähetin näyttää työtä.OSC näkyy tietoja lähetetään ulos.Tiedot ovat kuitenkin edelleen lähetetään, jos kytkin isnt painettuna.Minun täytyy lopettaa tähän, koska minun projektini pyörii sen ympärillä on tarkka.En voi antaa sen ampua pois tietoja, ellei se tarkoitti myös.

TX-koodi on seuraava.IM mikä helpottaa nyt, lähettää yksi bitti kerrallaan.

Koodi:# include <16F688.h>

# include <ascii.h>//------------------------------------------------ -------------------------------

# define WireTX PIN_C4 / /

# define WireRX PIN_C5

//------------------------------------------------ -------------------------------

# sulakkeet XT, NOWDT, NOPROTECT, NOBROWNOUT, PUT

# käytön viive (kello = 4000000)

# käyttö RS232 (baud = 2400, XMIT = WireTX, ssä = WireRX, Stream = COM_A)Int CRC = 85; / / CRC asetettu koodin testausta vartenvoid main ()

(setup_adc_ports (NO_ANALOGS) / / asettaa kaikki panokset digitaaliseenja (;;){if (input (PIN_C2) == 0) / / Jos painiketta painetaan

(output_high (PIN_A1), / / output korkea Led

delay_ms (20);fputc (NUL, COM_A), / / lähettää stream AAA

fputc (NUL, COM_A);

fputc (NUL, COM_A);

fputc (STX, COM_A);

fputc ( '', COM_A);

fputc ( '', COM_A);

fputc ( '', COM_A);

fputc (CRC, COM_A), / / lähettää tarkistussumman 85

fputc (CR, COM_A);delay_ms (20);

delay_ms (1000) / / viive noin ms

output_low (PIN_A1), / / output alhainen johtanut

delay_ms (1000);

)muut (output_high (PIN_A1);

delay_ms (50);

output_low (PIN_A1);

delay_ms (50);

)

)

)
 
Se näyttää rakenteellisesti OK, mutta minulla on muutamia kommentteja ja kysymyksiä.En ole varma, mikä C-kääntäjä käytät joten varmista, mitä löydän, sitä ei saa soveltaa se syntaksia.

Toimittamasta
1.Oletan lausuntoja, kuten (PIN_C2) viittaavat Port C, bit 2.Onko ilmoitus "input (PIN_C2)" automaattisesti tee sataman vähän tulo?Toisin sanoen, sekä lukiessa, se asettaa TRIS vähän tätä PIN voidaan syöttää?
Onko leuanveto vastus tehdä suuria, kunnes maassa on?

2.Onko "fputc" komento jonoon tiedot (puskuriin on)?Saatat olla voimassa syöttää kaikki bytes ennen kuin ne ehtivät läpi UART.

Vastaanotto:
1.Tee data [] array vähintään yhden tavun isompi nyt, voit pienentää sen kokoa myöhemmin.Sinulla ei ole mahdollisuutta asettaa viestin pituus on tällä hetkellä niin "fgets" luultavasti kaapata kaiken asti CR ja ylivuodon array.

2.Ole varma tarkistaa kolmen "-merkit ovat oikein.Kuten olet Anding logiikkaa merkkiä yhdessä, ei voi olla muita yhdistelmiä, jotka läpäisevät testin.Kokeile tätä sijaan:
if ((data [0] == '') & & (data [1] == '') & & (data [2] == '')) (

Kokeile näitä muutoksia, ja haluaisin tietää, miten pääset alkuun.
Brian.

 
Brian,

Toimittamasta

Tämä osa on lajiteltu.Olen sijaitsee pieni ongelma kytkin Käytin, ja RF välittää täydellisesti kuin halusi.Thanks for the help.

IM käyttäen CCS kääntäjä, niin kyllä, (PIN_C2) on Port C, bit 2.Input C2 lukee panos riippumatta siitä, miten tris on asetettu.Joten se toimii automaattisesti.

Joten TX on hieno.

Vastaanotin:

Muuttanut puskurin koon ja tietojen tarkistus ilmoitus, kuten olette ehdottanut.Olen myös ottanut LED kussakin vaiheessa.Tämä on mitä olen havainnut.

1) Led kun STX on havainnut syttyy, mutta vain kerran ... riippumatta siitä, kuinka monta kertaa viesti on lähetetty.Se vain tapahtuu ensimmäistä kertaa liikaa, ja vain silloin, kun kytket virran hallitukselle.

2) I dont ajatella lukee 85, minun tarkistussumma.Johti tässä vaiheessa doesn't pala, missä vaiheessa tahansa.Ja ofcourse, LED viesti vastaanotettu doesnt syttyä joko.

Im ole varma, miksi STX on saanut vain kerran kuitenkin.atleast että pitäisi toimia kaikkialla.

kun olen liittänyt OSC on RX-ja TX nastat RF-moduulin, huomaan, että vastaanotin on picking it up.jossain määrin kuitenkin.sijaan piristymisen täydellinen kanttiaalto tyyppi signaalia lähettää, se osoittaa kolmion versiot ... mutta jälkeen TX.Joten siru toimii.Toivon, että tämä on järkevää.

Mitään ajatuksia?Tarkistanut Circuit 10 kertaa ja laskentaa.

Kiitos

 
Epäilen sinun diagnoosi CRC ei ole oikea, mutta ei ehkä siitä syystä luulet.

Mitä kertoo fgets ()-funktio lopettaa?

Oma arvaus on, että CRC on jo saanut fgets () ja tallennetaan array (jos se ei tulvi yli), joten etsimme sitä jälkeenpäin ei tule toimimaan.

Ei yrität poistaa fgets () ja korvaamalla se fgetc () loop että tarkastuksia kunkin merkin puolestaan ja tallentaa sen, kuten tein esimerkin.Näin voit löytää CR ja CRC missä se on viesti.

Arvailla kerran - syystä toimi, kun vain on, että matriisi tulvillaan ja lahjoa mikä muuttuja on tallennettu jälkeen.Muista, että 'C' ei tee rajojen tarkistusta.Jos CCS kääntäjä luo tiedoston osoittavat osoitteet myönnetty muuttujia, katso mikä on, kun tiedot matriisi, se luultavasti sai päälle.

Brian.

 
Minulla on pieni ehdotus (ei tiedä tässä kehitysympäristö - laitteiston sekä PIC-kääntäjä-kirjastot).Kokeile asettaa kääntäjä optimoinnin EI OLE (helpottuisi debugging) ja varmista, että osoitteet oheislaitteista on "epävakaa"-säännöllä.
Onnea.

 
Hei, vielä työstää vastaanotin tällä hetkellä, ja kertoa, miten se menee.

Olen yrittänyt lyhentää koodia eristää ongelman siten, että kun se saa STX, itll syttyvät johdolla.Tämä on kanssa jatkuvana lähetyksenä muutaman sekunnin välein.No onnea.

Vielä yrittää.Thanks for the help toistaiseksi.Lisätään 3 tuntia 39 minuuttia:Hei Brian,

i havent voineet korjata minun vastaanottimeen koodia, mutta onnistui löytämään C-koodit verkossa, joka osoittaa, miten voit lähettää RF-signaalit IO nastat kuin TX / RX niistä on PIC.

http://www.electro-tech-online.com/micro-controllers/92375-manchester-routines-c-pic.htmlLöysin sen toisella foorumilla.Vain Selaa alaspäin kunnes tulet 2 liitetiedostoja.Joku lähetetty sen mukana pdf-asiakirja, jossa selitetään prosessia.

Olen testannut sitä.No, jossain määrin.Otan sen käyttöön omassa PIC ja onnistui kaapata lähettää ja vastaanottaa signaalia oskilloskoopilla.I dont know, jos vastaanotin kiinni oikean viestin, mutta huonosti eivät LED-testi Tomo tarkistaa.

Mitä minun vastaanotin, im vielä yrittää selvittää, missä im vialla.Olin myös kysyä, jos minun pitäisi käyttää HT-12 kooderi ja dekooderi.Olisiko se auttaa?

Kiitoksia, ystävä.Toivottavasti projekti on tulossa pitkin parempi kuin minun.

 
Anteeksi, etten vastaa aikaisemmin, minulla on ollut muita töitä tehdä tänään.

Haluat ehkä etsiä tätä lautakunta aiheesta "Ongelma on langaton sarja transmisson" (huom. kirjoitustapa erehtyä!), Joka menee kiivaita keskusteluja tietojen koodaus-menetelmiä lähetyksen.

Voisit käyttää HT-12, mutta se lisää kustannuksia.Haluaisin antaa periksi ohjelmistoratkaisu, ennen kuin rahaa.Saan 100% tuloksia 19200 bauds pitkiä matkoja yksinkertaisia moduuleja, jotta se voidaan tehdä.On myös syytä huomata, että HT-12 ja ohjelmistojen syntyvät Manchesterin koodit on hyötyä vain, jos käytät FM-moduulit, mutta sinun on AM.Se kuitenkin toimi, jos käytät Manchester koodaus, mutta on vähemmän läpäisyä, koska ylimääräisiä bittejä on lähetettävä.PM me with the latest code you are working with so I can look at it again. Brian.

 

Welcome to EDABoard.com

Sponsor

Back
Top