bom vou tentar ser bem simples.
Suponha que vc vai enviar 32 bits.. 4 bytes.
O HT6P20B funfa assim..
T=400uS
1Bit = 3T = 1.2mS
Bits entendidos como zero.
Start bit = 400uS
1T em baixo e 2T em alto.
Bits entendidos como hum.
Start bit =400uS
2T em baixo e 1T em alto.
Vou mandar um byte no padrão HT6P20.
- Código: Selecionar todos
T T T T T T T T T T
|´´|__|´´´´|____|´´|__|´´´´|................................
ST | Bit0 | Bit1 | Bit2 |
nivel 0 1 0 ....................................
Observe que no protocolo foram usados 10T.
Sendo 1 T para start e mais 9T/3=3Bits
Você pode por exemplo fazer uma procedure ou function que entre com 1,2,4,8,16,..... bytes.. Ele vai rotacionando pra direita ou pra esquerda conforme sua necessidade MSB e LSB..
Pro protocolo na parte de recepção funcionar sertinho fica assim.
Chegou um pulso... esta em 1 ?? sim..
Dispara contador que quando chegar a 420uS ele sai da interrupt pois é outro codigo ou ruido....
Mais vamos la..
o pulso passou de 1 pra zero.. quanto tempo deu ?
Deu 280uS..
Intão não é meu codigo pois eu aceito que é se o start permanecer apenas entre 380 e 420uS..
Espero ter ajudado,,,
Fabim