H
hobby_85
Guest
Aš nusipirkau RF KIT, siųstuvas ir imtuvas, ir panašaus produkto svetainė yra žemiau.Dabar im bando parašyti kodą, tiesiog įsitikinkite, kad jį dirba.
http://www.sparkfun.com/commerce/product_info.php?products_id=8950
Im naudojant IPS 16f688 ir jei LED įsižiebia teisingas modelis, žinau kodas veikia.Tačiau taip nėra.
Čia yra TX kodas:
# include <16F688.h>
//------------------------------------------------ -------------------------------
# define WireTX PIN_C4 / /
# define WireRX PIN_C5
//------------------------------------------------ -------------------------------
# saugikliai XT NOWDT, NOPROTECT, NOBROWNOUT, Put
# naudoti nedelsiant (laikrodis = 4000000)
# USE RS232 (Baud = 2400, xmit = WireTX, VB = WireRX, Stream = COM_A)
void main () (
for (;
<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Mirkčiojimai" border="0" />
(
if (input (PIN_C2) == 0) / / if mygtuką nuspaustą
(
output_high (PIN_A1) / / išvesties aukštos Led
delay_ms (20) / / 20ms vėlavimą
fputc ( "T", COM_A) / / Siųsti duomenis
delay_ms (20);
delay_ms (1000); / / delsimas kai kurios VN
output_low (PIN_A1) / / išvesties mažai buvo
)
output_high (PIN_A1) / / jei mygtukas nespaustos tai tik ne buvo dėl PIN D1
delay_ms (50);
output_low (PIN_A1);
delay_ms (50);
)
)
Taigi, jei paspausite mygtuką, raidė T reiškia būti siunčiami per ir LED turėtų come on, tada išjungti tada ilgiau.
Čia yra atitinkami Gavėjo kodas:
# include <16F688.h>
# saugikliai XT NOWDT, NOPROTECT, Sumažinti apšvietimui, Put
# naudoti nedelsiant (laikrodis = 4000000)
//------------------------------
# define WireTX PIN_C4
# define WireRX PIN_C5
//------------------------------
# USE RS232 (Baud = 2400, xmit = WireTX, VB = WireRX, Stream = COM_A)
unsigned int8 duomenis;
int1 flag = 0;
# int_rda
void rd_isr (void) (
disable_interrupts (INT_RDA) / / Disable Serijos Gauti Nutraukti
disable_interrupts (global) / / Disable Global Interrupts
Duomenų = fgetc (COM_A);
if (duomenų == 'T') (
flag = 1;
)
enable_interrupts (Global);
enable_interrupts (INT_RDA);
)
void main () (
enable_interrupts (pasaulinis)
enable_interrupts (int_rda);
for (;
<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Mirkčiojimai" 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);
)
)
Taigi, jeigu pranešimas yra gautas, LED turėtų būti įjungti / išjungti 1 sek intervalais.Jei ne, tai tiesiog reikia Flash ir išjungti.
Turiu osciloskopu, todėl galiu pažvelgti į signalus, siunčiamus.Čia yra problemos:
1) jungiklis - Kai aš patikrinti RF signalo siunčiamos kai mygtukas buvo stumti, aš mačiau ant osciloskopu žingsnis.Pranešimas bus išsiųstas visiems laikams ir vadovauja tai šviesa, kaip koduoti.
Todėl žinau, ką buvo išsiųstas per.Tačiau po poros sekundžių, net tada, kai jungiklis buvo išjungtas, pranešimas buvo išsiųstas automatiškai.
Aš prijungtas 220K varža nuo MC išėjimo į LED, o tada GND.
2) Gavėjas - buvo paeiliui on / off, tartum jis didnt gauti viską.Tačiau, kai aš susijęs OSC į imtuvas / RX ir MC, I can see in signalą šuolis, atitinkančių signalas siunčiamas TX.So why isnt LED apšvietimas, kaip tikimasi?
Any ideas?
Ačiū
http://www.sparkfun.com/commerce/product_info.php?products_id=8950
Im naudojant IPS 16f688 ir jei LED įsižiebia teisingas modelis, žinau kodas veikia.Tačiau taip nėra.
Čia yra TX kodas:
# include <16F688.h>
//------------------------------------------------ -------------------------------
# define WireTX PIN_C4 / /
# define WireRX PIN_C5
//------------------------------------------------ -------------------------------
# saugikliai XT NOWDT, NOPROTECT, NOBROWNOUT, Put
# naudoti nedelsiant (laikrodis = 4000000)
# USE RS232 (Baud = 2400, xmit = WireTX, VB = WireRX, Stream = COM_A)
void main () (
for (;
<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Mirkčiojimai" border="0" />
(
if (input (PIN_C2) == 0) / / if mygtuką nuspaustą
(
output_high (PIN_A1) / / išvesties aukštos Led
delay_ms (20) / / 20ms vėlavimą
fputc ( "T", COM_A) / / Siųsti duomenis
delay_ms (20);
delay_ms (1000); / / delsimas kai kurios VN
output_low (PIN_A1) / / išvesties mažai buvo
)
output_high (PIN_A1) / / jei mygtukas nespaustos tai tik ne buvo dėl PIN D1
delay_ms (50);
output_low (PIN_A1);
delay_ms (50);
)
)
Taigi, jei paspausite mygtuką, raidė T reiškia būti siunčiami per ir LED turėtų come on, tada išjungti tada ilgiau.
Čia yra atitinkami Gavėjo kodas:
# include <16F688.h>
# saugikliai XT NOWDT, NOPROTECT, Sumažinti apšvietimui, Put
# naudoti nedelsiant (laikrodis = 4000000)
//------------------------------
# define WireTX PIN_C4
# define WireRX PIN_C5
//------------------------------
# USE RS232 (Baud = 2400, xmit = WireTX, VB = WireRX, Stream = COM_A)
unsigned int8 duomenis;
int1 flag = 0;
# int_rda
void rd_isr (void) (
disable_interrupts (INT_RDA) / / Disable Serijos Gauti Nutraukti
disable_interrupts (global) / / Disable Global Interrupts
Duomenų = fgetc (COM_A);
if (duomenų == 'T') (
flag = 1;
)
enable_interrupts (Global);
enable_interrupts (INT_RDA);
)
void main () (
enable_interrupts (pasaulinis)
enable_interrupts (int_rda);
for (;
<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Mirkčiojimai" 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);
)
)
Taigi, jeigu pranešimas yra gautas, LED turėtų būti įjungti / išjungti 1 sek intervalais.Jei ne, tai tiesiog reikia Flash ir išjungti.
Turiu osciloskopu, todėl galiu pažvelgti į signalus, siunčiamus.Čia yra problemos:
1) jungiklis - Kai aš patikrinti RF signalo siunčiamos kai mygtukas buvo stumti, aš mačiau ant osciloskopu žingsnis.Pranešimas bus išsiųstas visiems laikams ir vadovauja tai šviesa, kaip koduoti.
Todėl žinau, ką buvo išsiųstas per.Tačiau po poros sekundžių, net tada, kai jungiklis buvo išjungtas, pranešimas buvo išsiųstas automatiškai.
Aš prijungtas 220K varža nuo MC išėjimo į LED, o tada GND.
2) Gavėjas - buvo paeiliui on / off, tartum jis didnt gauti viską.Tačiau, kai aš susijęs OSC į imtuvas / RX ir MC, I can see in signalą šuolis, atitinkančių signalas siunčiamas TX.So why isnt LED apšvietimas, kaip tikimasi?
Any ideas?
Ačiū