One-Wire com 74HC595
Navegando pela internet, achei um projeto muito interessante na qual utilizava um registrador de deslocamento, o 74HC595, comunicando com o PIC através apenas de 1 pino.( One-Wire )
Com um pequeno circuito RC, proporciona um tempo de atraso para a linha de dados. Pulsos muito curto significa que foi deslocado o bit 1. Pulsos um pouco mais longo, significa bit 0. Pulsos muito longo é usado para pulsar o latch atualizando as saídas do registrador.
Veja o projeto completo aqui.
Observações:
Funciona com clock superior ou igual à 8MHz;
O Pino Q0 do 74HC595 será sempre 0.
Criei uma biblioteca mais enxuta. Veja:
BIBLIOTECA
MikroC PRO PIC
Exemplo:extern sfr sbit Ow74HC595_Out;extern sfr sbit Ow74HC595_Out_Direction; void OneWire74HC595_Init() { Ow74HC595_Out_Direction = 0; Ow74HC595_Out = 1; } void OneWire74HC595_Write( char wData ) { char i; Ow74HC595_Out = 1; for( i = 0; i < 8; i++ ) { if( wData.B7 ) { Ow74HC595_Out = 0; Delay_us( 1 ); Ow74HC595_Out = 1; Delay_us( 15 ); } else { Ow74HC595_Out = 0; Delay_us( 15 ); Ow74HC595_Out = 1; Delay_us( 30 ); } wData <<= 1; Delay_us( 30 ); } //Latch Ow74HC595_Out = 0; Delay_us( 200 ); Ow74HC595_Out = 1; Delay_us( 300 ); }
sbit Ow74HC595_Out at RD0_Bit; sbit Ow74HC595_Out_Direction at TRISD0_Bit; //copie e cole o código da biblioteca aqui!!! void main() { char i = 0; OneWire74HC595_Init(); while( 1 ) { OneWire74HC595_Write( i++ ); Delay_ms( 1000 ); } }
Referência: http://www.romanblack.com/shift1.htm
Nenhum comentário