Autor Tema: contar de pulsos en 8 entradas  (Leído 2590 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
contar de pulsos en 8 entradas
« en: 13 de Octubre de 2007, 23:57:35 »
hola gente, recurro a su sabiduría...
lo que intento hacer es un contador que registre en un determinado tiempo cuantas veces se hubo un 1 el cada pin del portb

Código: [Seleccionar]
#include <16F873.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES PUT                      //Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
// 9600 baudios,8 bits sin paridad
#use fast_io(B)
#byte portb = 0x06



void main()
{
int entrada[8];
int reg_v;
int reg0;


   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   set_tris_b (0xff);


      // TODO: USER CODE!!
       reg0 = portb;
for(;;)
       {

       if (reg0!=reg_v)
          {
          if (bit_test (reg0,0)&& bit_test (!reg_v,0)) entrada[0]++;
          if (bit_test (reg0,1)&& bit_test (!reg_v,1)) entrada[1]++;
          if (bit_test (reg0,2)&& bit_test (!reg_v,2)) entrada[2]++;
          if (bit_test (reg0,3)&& bit_test (!reg_v,3)) entrada[3]++;
          if (bit_test (reg0,4)&& bit_test (!reg_v,4)) entrada[4]++;
          if (bit_test (reg0,5)&& bit_test (!reg_v,5)) entrada[5]++;
          if (bit_test (reg0,6)&& bit_test (!reg_v,6)) entrada[6]++;
          if (bit_test (reg0,7)&& bit_test (!reg_v,7)) entrada[7]++;
          reg_v=reg0;
          }
       reg0=reg0++;
       }

 }

hay otra forma de hacerlo?? la parte del tiempo no la hice..
no se si esta está  bien...

saludos
Osvaldo
« Última modificación: 14 de Octubre de 2007, 00:04:20 por valdorre »
Osvaldo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: contar de pulsos en 8 entradas
« Respuesta #1 en: 14 de Octubre de 2007, 02:31:34 »
Ese método puede ser válido siempre que los pulsos sean más lentos que el tiempo que tarda el pic en recorrer el bucle principal de tu programa.

Si no estás seguro de que eso sea así, quizás puedas hacer el apaño con las interrupciones. No sé si ese micro llegará a tener 8 interrupciones externas, sumando las normales, las del puerto B y las de CCP.

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: contar de pulsos en 8 entradas
« Respuesta #2 en: 14 de Octubre de 2007, 03:16:52 »
hola, Y si trabajas con un pic que tenga puerto paralelo como el 16f877, seguramente podrías detectar cambios en los 8 pines de entrada.
control de movimiento

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
Re: contar de pulsos en 8 entradas
« Respuesta #3 en: 14 de Octubre de 2007, 18:39:22 »
gracias por las respuestas, usar puerto paralelo no se me había ocurrido  :?  voy a hacer la prueba a ver que sale...
nuevamente gracias

saludos
Osvaldo
Osvaldo

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: contar de pulsos en 8 entradas
« Respuesta #4 en: 14 de Octubre de 2007, 19:44:17 »
O en un PIC mas chico, utilizando un expansor I/O como por ejemplo el MCP23016 que dispone de dos puertos I/O completos de 8 bits, que usados como Inputs puede generar una interrupcion cada cambio de una de las entradas... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
Re: contar de pulsos en 8 entradas
« Respuesta #5 en: 14 de Octubre de 2007, 22:10:29 »
hola mglsoft, interesante el mcp23016... decime se consigue en argentina??

saludos
Osvaldo

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: contar de pulsos en 8 entradas
« Respuesta #6 en: 14 de Octubre de 2007, 23:52:00 »
Creo que si, fijate en Cika.
www.cika.com.ar
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: contar de pulsos en 8 entradas
« Respuesta #7 en: 14 de Octubre de 2007, 23:54:58 »
No  :( :(, no lo tienen, pero seguramente la gente de MCElectronics te lo puede traer.
Igual hay reemplazos de ese tipo en varias marcas... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
Re: contar de pulsos en 8 entradas
« Respuesta #8 en: 22 de Octubre de 2007, 14:33:17 »
hola mglsoft, en el proyecto en que estoy necesito 32 entradas, son se baja velocidad, pero son 32, el MCP23016 me vendria barbaro pero no lo traen. sabes de algun reemplazo de otra marca?? estoy buscando pero no doy con ninguno...
gracias y saludos

Osvaldo
Osvaldo

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: contar de pulsos en 8 entradas
« Respuesta #9 en: 22 de Octubre de 2007, 16:18:07 »
Tenes el PCA9535 de Texas... :lol:
http://focus.ti.com/lit/ds/scps129h/scps129h.pdf

Lo bueno de Texas es que manda samples a Argentina.
Si observas te daras cuenta que hay ciertas diferencias en el pinout respecto al MCP23016...

Del MCP23016 puedo enviarte una muestra, pero si precisas mas de 16 entradas no te va a servir... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: contar de pulsos en 8 entradas
« Respuesta #10 en: 23 de Octubre de 2007, 02:09:12 »
Otro expansor más I2C de E/S, también de 16 bits: el PCF8575 de Phillips

Desconectado valdorre

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 348
Re: contar de pulsos en 8 entradas
« Respuesta #11 en: 23 de Octubre de 2007, 07:53:05 »
ok gracias amigos voy a ver que se consigue aca en las casas de electronica...
una opcion que encontre hoy es un 82c55 que aunque es paralelo, tengo uno (lo tenia lleno de telas de arañas) :mrgreen:
asique voy a ver como se maneja la interrupcion por #int_psp del 877...
de todos modos gracias, voy a buscar esos que me pasaron porque me seria mas util uno i2c...

saludos

Osvaldo
Osvaldo