Čtení z Manchesteru Kód U2270

V

viknes1985

Guest
Ahoj, jsem se snažil získat pomoc od mnoha lidí na machester dekódování.Nikdo nemohl pomoct.Tak jsem začal číst Manchester kód.Záměrem je, pokud se šířka impulsu je 90us, pic začít vzorku po 45us.Takže by to vždy ve středu na puls.To je tak daleko jsem to, ale netuším, proč by tato práce nikdy.někdo, prosím, pomozte

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Pláč nebo velmi smutný" border="0" />

Prosím pomozte.Budu pracovat na sobě na dekódování, zatím jsem jen chcete přečíst kód z EM4001.Pokud jste na jakékoliv jiné metodě, dejte mi vědět (viknes1985 (at) hotmail.com)Kód:# include <16F877A.h>

/ / # Pojistky XT, NOWDT, NOPROTECT, NOPUT, HS, NOLVP# Pojistky NOWDT / / Ne Pozor Dog Timer

# Pojistky HS / / Vysoká rychlost OSC (> 4mhz)

# Pojistky NOPUT / / Ne Power Up Timer

# Pojistky NOPROTECT / / Kód nejsou chráněny před čtením

# Pojistky NODEBUG / / Ne Ladicí režim pro ICD

# Pojistky NOBROWNOUT / / Ne zahnědnutí reset

# Pojistky NOLVP# použití zpoždění (hodiny = 20000000)

# používat RS232 (baud = 9600, xmit = PIN_B6, rcv = PIN_B7, proud = TOPC)

/ / # použití RS232 (baud = 9600, xmit = PIN_D7, rcv = PIN_D6, stream = SIGNAL)/ / # byte a_port = 5 / / Port, který chcete použít

# byte b_port = 6

/ / # d_port byte = 8# int_ccp1void main ()(

/ / SET_TRIS_A (0x0A);

SET_TRIS_B (0x81);

setup_ccp1 (CCP_CAPTURE_RE); / / znát výchozí bodif (CCP_1) / / pokud neexistuje žádné stoupá okrajem

(

delay_us (45), / / posun na polovinu z impulsů

while (TRUE)

(

int x = 0;

while (x <= 64) / / pro 64 bitů

(

if (vstup (PIN_B0)) / / od u2270 výstup (Manchester kód)

fputc ('1 '); / / show 1 při vysokých

jiné

fputc ('0 '); / / show při nízké 0delay_us (90), / / posun na další impuls

x ;

)

delay_ms (1000);

fputs ( "Next 64 bitů");

)

)jiné

(

fputs ( "Dosud najít stoupající hrany");

)

)
 
Přejít na Microchip a typu 'Manchester Decoder'.

KEELOQ se používá kódování Manchester.

Ty by měly najít uplatnění poznámky o dekodéry.

 
Díky za rychlou odpověď btbass ....Z toho, co jsem hledat na mikročipovými stránky, tam
je k dispozici pouze, hotové dekodér jako PIC16C56.Ale jak to provést v PIC16F877a.Opravte mě, jestli
jsem špatně.Jsem nový tohoto PIC.

Díky

 
V Pic16C56 je ve velmi rané pic mikroprocesor, C56-li, můžete tak učinit, pak novější zařízení jako Pic16F877a by měl být schopen.
Podívejte se na aplikační poznámka 'AN744', která popisuje dekodér pro Pic16f872 napsané v C. Vy mohli port kód.Jedna věc, o Fotografie microprossesors je, že podíl na společných modulů.Registry mají stejná jména.Takže říci, kód,
napsaný pro A / D převodník pro jednu variantu Pic16F více než pravděpodobné, zkompilovat a spustit na jiném Pic16F variantu.Portace kódu mezi variantami je poměrně snadné.Normaly stačí změnit konfigurační pojistky a pár rejstříku jmen.

Jsem napsal Manchester dekodér pro Philips RC5.Vím, že to je mnohem pomalejší a kratší, ale jsem si najít nemůžete věřit načasování, když je malá chyba, je accumalates nad daty délku a šrouby do dekódování.S RC5, první 2 bity jsou vždy 1, tak jsem využil první 2 bity pro kalibraci načasování.Na každé nové příkazové načasování je znovu zkalibroval a funguje to ok.
Zde je kód, je C funkcí, ale kód je psán v assmbler, možná vám některé nápady.

Hlavička souboru:

Kód:/*--- Rc5decode.h ---*/# ifndef RC5DECODE_H

# define RC5DECODE_H# include "types.h"/*--- Funkční prototyp ---*/uint8_t rc5Decode (void);/*---- GLOBALS ---*/extern uint8_t velení; / * RC5 kód příkazu * /

extern uint8_t adresu; / * RC5 systém adresu * /# endif/*--- Makra ---*/# define IR_IN _GPIO, 0 / * Infra Red vstupní pin * /

# define TMR _TMR0 / * Pulzní časovač * //*--- Konec souboru ---*/
 
Díky za odpověď btbass ....I'll pokusí sestavit a zapsat se brzy ....

 
Existuje nějaký kód v jazyce C, tak jsem mohl porozumět základním toku.

 

Welcome to EDABoard.com

Sponsor

Back
Top