74HC165 & 74HC595

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

74HC165 & 74HC595

Mensagempor Patrik.Fernandes » 29 Mar 2010 20:31

Não vou dizer que sou novato na área porque devem estar cansados de ler isso.
Gostaria que me ajudem em uma questão com os registradores:
1: Como defino no programa CCS uma entrada, por exemplo a entrada DO do registrador 74HC165 como Input_I1. (Estou usando dois CIs 74HC165 2 74HC595). Acho eu que o caminho é por macros mas não tenho certeza e outra não sei como fazer o CCS entender que D0 é igual Input_1.
2:Gostaria de um exemplo simples onde uma entrada do 165 acione uma saída no 595 utilizando o PIC 18F4550.(Li algo sobre BIT_SET e BIT_TEST).

Software usado CCS
PIC Usado 18F4550

Obrigado pela atenção!!!
Patrik.Fernandes
 
Mensagens: 4
Registrado em: 28 Mar 2010 23:48
Localização: Brasil RS

Mensagempor Patrik.Fernandes » 29 Mar 2010 22:32

int32 DataOut;
int32 DataIn;

void main()
{
BYTE DataIn;
BYTE DataOut;

setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_PWM_FULL_BRIDGE|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
setup_ccp2(CCP_PWM);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
enable_interrupts(INT_LOWVOLT);
enable_interrupts(GLOBAL);
setup_low_volt_detect(FALSE);
setup_oscillator(False);


do{
read_expanded_inputs (&DataIn);

if (DataIn&0x01) (output_high(PIN_C0)); // Liga Led
if (!DataIn&0x01) (output_Low(PIN_C0));//Desliga Led
write_expanded_outputs (&DataOut);

}while (TRUE);
}



Consegui acionar uma sai´da do PIC através da entrada do 74HC165
Porém ficou lento o acionamento...É assim mesmo???

Agora preciso saber como eu Defino as entradas e como aciono uma saída!!!!

Por favor ajuda ai pessoal
Patrik.Fernandes
 
Mensagens: 4
Registrado em: 28 Mar 2010 23:48
Localização: Brasil RS

Mensagempor ze » 30 Mar 2010 11:13

mesmo cansado de escrever a mesma coisa, vou dizer: aprender sobre uC baseando só no compilador não parece ser muito inteli... eficaz. tente ler o dataxit dos bixos. do uC e das portas.
mas se só quer "soft", debulhe a função write_expanded_outputs() e etc. sabe o que ela faz? não?? ou usa de olhos fechados?? aí ferrou... (eu também não sei e não quero saber... ccs...ieca)

posta o circuito. pode ajudar quem for te ajudar. ajude a quem for te ajudar. mas isso é "hard" portanto tem que "abrir o olho"
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor vtrx » 30 Mar 2010 12:16

Gostaria de um exemplo simples onde uma entrada do 165 acione uma saída no 595

O pic pode 'simular' esses CIs,aí sim voce poderia programar algo relacionado em C.
Voce tem conhecimentos em eletrônica digital?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor Patrik.Fernandes » 31 Mar 2010 22:06

write_expanded_outputs() e etc. sabe o que ela faz? não?? ou usa de olhos fechados?? aí ferrou...


Sim eu sei o que esse comando faz....
O que acontece é o seguinte eu não consigo dizer por CCS qual saida do 74hc595 eu quero acionar.... As entradas eu consegui em bora achei meio lento na simulação no proteus. So pesso ajuda para um exemplo simples onde eu possa entender como eu digo pro ccs colocar o pino Q0 do 74hc595 em high.
Peço desculpas porque parece que não fui o unico a perguntar por esse registradores mas acontece que não encontrei respostas relacionadas a minha duvida, tirando a parte de ser novato no assunto. Mas pra quem esta a menos de um mês estudando muito sobre isso acho que até to bem.[/quote]
Editado pela última vez por Patrik.Fernandes em 31 Mar 2010 22:16, em um total de 1 vez.
Patrik.Fernandes
 
Mensagens: 4
Registrado em: 28 Mar 2010 23:48
Localização: Brasil RS

Mensagempor Patrik.Fernandes » 31 Mar 2010 22:13

O pic pode 'simular' esses CIs,aí sim voce poderia programar algo relacionado em C.
Voce tem conhecimentos em eletrônica digital?



Já estou simulando no proteus junto ao CCS e estou montando 7 placas eletronicas para iniciar meu desenvolvimento, assim que terminar as placas eu posto as fotos.
1 Principal com o PIC + cristal + USB
1 Placa com 12 reles
1 Placa com 12 entradas
1 Placa com 4 entradas analogicas de 0 a 5 e de 4 a 20ma
1 Placa com display
1 Placa com os registradores
1 Placa com teclado
Patrik.Fernandes
 
Mensagens: 4
Registrado em: 28 Mar 2010 23:48
Localização: Brasil RS

Mensagempor lucasi » 06 Abr 2010 23:23

Patrick...

Fiz um código talvez deva te ajudar...
Fiz ele para expandir as saidas de um 16F877 usando dois 74HC595

Abs
lucasi

#include <16F877A.h> // seleciona o PIC16F877A
#define EXP_OUT_ENABLE PIN_B0 //RCK - Pino 12 do 74HC595(1) & Pino 12 do 74HC595(2)
#define EXP_OUT_CLOCK PIN_B1 //SCK - Pino 11 do 74HC595(1) & Pino 11 do 74HC595(2)
#define EXP_OUT_DO PIN_B2 //SER - Pino 14 do 74HC595(1)
///////////////////////////////////////////////////////////////////////////
//// O DS do 74HC595(2) é alimentado pelo Q7' do 74HC595(1) ////
//// ////

#fuses HS,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP
#use delay (clock=4000000)
#ZERO_RAM

Byte data1 = 0b00000011;
Byte data2 = 0b10101011;

//------ 74HC595 serial chip --------------
void outSerial(int8 chip1,int8 chip2)
{
int8 i;
int16 data;

data = chip2;
data = data<<8;
data = data | chip1;

// Output to serial line
for(i=0; i<16; i++)
{
if(data & 0x8000)
{output_high(EXP_OUT_DO);}
else
{output_low(EXP_OUT_DO);}

data = data<<1;

output_low(EXP_OUT_CLOCK); //Shift data
output_high(EXP_OUT_CLOCK);
}

output_low(EXP_OUT_ENABLE); //Output on pins
output_high(EXP_OUT_ENABLE);
}

void main()

{

setup_adc_ports(NO_ANALOGS); // nao usaremos nenhum porta analogica
setup_adc(ADC_OFF); // desligamos o conversor AD
setup_psp(PSP_DISABLED); // nao utiizamos a porta PSP
setup_spi(FALSE); // nao utilizamos a porta SPI
setup_counters(RTCC_INTERNAL,RTCC_DIV_2); //configuracao TMR0 DEFAULT
setup_timer_1(T1_DISABLED); // desabilitarmos o TMR1
setup_timer_2(T2_DISABLED,0,1); // desabilitamos o TMR2
setup_comparator(NC_NC_NC_NC); // desabilitamos os comparadores
setup_vref(FALSE); // desabilitamos a tens?o de referencia

outSerial(data1,data2);

}
lucasi
 
Mensagens: 1
Registrado em: 06 Abr 2010 13:49

Mensagempor BolhaDigital » 18 Abr 2010 23:33

...caramba tô com vontade de zoar, não levem a mal,


mas usa ASM, é mais simples e não dá pal...

C parece facil, mas é só aparencia, quando a coisa começa a cair para o lado de manipular hw a coisa parece que não tem muita afinidade, inclusive com bugs estranhos...

Antes que briguem comigo, eu gosto do C, mas sinceramente prefiro o ASM e o BASIC...
BolhaDigital
Bit
 
Mensagens: 47
Registrado em: 07 Mar 2010 12:20


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x