Autor Tema: Emulando protocolo del MC145026 y MC145027  (Leído 10918 veces)

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

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Ayuda para emular codificación del MC145026
« Respuesta #30 en: 20 de Julio de 2010, 10:45:00 »
jajajjaa! Que loco lo tuyo!
Estás midiendo tierra con el osciloscopio?  :D :D :D

Aún así no sale nada. Déjame le eche un vistazo
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda para emular codificación del MC145026
« Respuesta #31 en: 20 de Julio de 2010, 10:53:51 »
Este es el que utilizava de verdad... es el que me pasaste tu :?

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda para emular codificación del MC145026
« Respuesta #32 en: 21 de Julio de 2010, 15:30:14 »
He modificado el codigo con unos calculos que he hecho, puedes medir que freqüencia tiene??

Muchisimas gracias

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda para emular codificación del MC145026
« Respuesta #33 en: 22 de Julio de 2010, 05:37:19 »
 :-/ Creo que ya esta terminado por completo el programa!!!

aqui dejo los archivos subidos, esta todo lo necesario para simularlo en Issis, programa y todo.

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Emulando MC145027
« Respuesta #34 en: 22 de Julio de 2010, 13:27:31 »
Ahora que parece que ya termine con el MC145026 (no probado) y que parece que tiene buena pinta.

Vamos a empecar con el MC145027 que es el decoder, aqui dejo el codigo que he hecho, haver si alguien se lo puede mirar y opinan sobre ello, ya que no se si el array lo tengo bien hecho o no ustedes que creen???

Muchas gracias.

#include <16f870.h>

#device adc=8

#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT

#use delay(clock=4000000)
#USE FAST_IO (A)
#USE FAST_IO (B)
#USE FAST_IO (C)


//ROGRAMA PER EMULAR PROTOCOL MC145027


/////////////////////////////
////////////////////////////
// Definició de Pins
//////////////////////////
/////////////////////////

// *****  IN-CIRCUIT SERIAL PROGRAMING  ***** //

//    PGM      ==>      PIN_B3   (24)
//    PGC      ==>      PIN_B6   (26)
//    PGD      ==>      PIN_B7   (28)
//    VDD      ==>      (20)
//    VSS      ==>      (8,19)

////////////////////
//***VARIABLES***//
//////////////////
int bit = 0;   //esto es para guardar los tiempos de los bits en el array.
int num = 0;   //para guardar la palabra (primera o segunda).
int digit=0;   //para guardar los bits en el digito correspondiente.

/////////////////
//***ARRAYS***//
///////////////

long paraula[2][2][9];  //array para guardar los 2 tiempos de cada DT o digito
                        //iremos incrementando las variables para que cada vez se
                        //vaya guardando en las siguientes posiciones:
                        //(0,0,0)-(0,1,0)-(0,0,1)-(0,1,1)-(0,0,2)-(0,1,2)-(0,0,3)etc...


//DECLARACIO DE FUNCIONS

void guardar(void);        //almacenar las dos palabras en un array
void comparar(void);       //compara las dos palabras guardadas anteriormente

                           
//////DEFINICIO DE PINS////

#DEFINE envia_codi      PIN_C6  //port per enviar el codi
#define rebre           PIN_C3 //Pulsador para enviar los datos

//DEFINICO D'INTERRUPCIONS//


void main()
{
   set_tris_a  (0b00000000);  //todas los puertos como salidas
   set_tris_b  (0b00000000);  //todas los puertos como salidas
   set_tris_c  (0b00001000);  //todas los puertos como salidas menos
                              //el pin C3 como entrada
   setup_psp(PSP_DISABLED);
   
   
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);

//habilitacio d'interrupcions//

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); //configuramos el timer1 con el prescaler a 1
                                             //asi cuenta de 1us en 1us
   setup_timer_2(T2_DISABLED,0,1);
   enable_interrupts (int_timer1);           //habilitamos el timer1
   enable_interrupts (global);
   
   while(1)
   {
   guardar();
   comparar();
   }       
}   
void guardar()
{      for ( ; !input(rebre); );     //Esperamos el inicio del pulso (flanco subida)
         set_timer1(0);             //Cuando llegue se pone a cero el Timer1
      for ( ; input(rebre); );      //Esperamos al final del pulso (flanco de bajada)
         paraula[num][bit][digit]= get_timer1();//Capturamos el intervalo de tiempo que tarda
                                                //en hacer el cambio y lo guardamos en 0,0,0, quando
         ++bit;   //passamos por aqui aumentamos en 1 "bit" y la segunda vez que pase por arriba
                  //lo guardará en 0,1,0. Quando vuelva a pasar por ++bit lo incrementara y bit será=2.
            if (bit<=2);//esto se cumplira y como bit será =2
            {
            bit=0;      //pondremos bit a 0
            ++digit;    //y aumentaremos digit en 1, porque al volver a empezar la seqüencia lo guarde en 0,0,1.
               if(digit<=9);
               {
               digit=0;
               ++num;
                  if(num<=2)num=0;
               }
               
            }
}

void comparar()
{
}

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Ayuda para emular codificación del MC145026
« Respuesta #35 en: 22 de Julio de 2010, 17:16:25 »
Uy uy, esto ya es C avanzado para mí  :D

Tanto corchetes.. me pierdo...

NI idea traxx, te he dado una muleta durante un tiempo. Ahora es hora que te lances a caminar solito porque mi muleta ya te queda pequeña  :mrgreen:

Además que aunque quisiese no podría ya que como te he dicho; debo entregar una serie de cuadros eléctricos urgentemente.

Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda para emular codificación del MC145026
« Respuesta #36 en: 23 de Julio de 2010, 03:10:25 »
Tranquilo pibe, tu ayuda me ha servido de mucho!!!

Gracias por todo!! :mrgreen: :mrgreen: :) :)

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda para emular codificación del MC145026
« Respuesta #37 en: 26 de Agosto de 2010, 08:06:40 »
Aqui esta el programa casi terminado, lo he probado con un MC14026 como codificador, y me va perfecto, ahora falta hacer el trocito de programa que haga salir los datos, pero la decodificación va perfecta.

En el Issis no se porque no funciona, lo he probado con un osciloscopio digital fisico y si que va.

Dejo el codigo y unas imagenes para ver que funciona.