Autor Tema: Control de monedero MDB/ICP con PIC24F  (Leído 7433 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado isaacmu

  • PIC10
  • *
  • Mensajes: 4
Control de monedero MDB/ICP con PIC24F
« en: 03 de Agosto de 2010, 14:19:28 »
Hola a todos.

He estado intentando hacer funcionar un PIC24FJ128GA010 y un monedero de la marca mei CF 7000. 
El monedero utiliza un protocolo estandarizado para mas maquinas "vending" (de refrescos, papas fritas, dulces, etc.), el cual es MDB/ICP, se puede encontrar el datasheet del protocolo en la pagina siguiente: www.vending.org dentro de la pestaña de "Technology".

He estado leyendo el protocolo y para su funcionamiento es necearia una interfaz de hardware, en donde en las hojas del datasheet te dan un esquemático de ejemplo, el cual he estado probando estos dias. Ademas el protocolo es a 9600 bps NRZ con 9 bits de datos 1 de start y uno de stop.

Lo que me encuentro probando es la interfaz que te proponen en las hojas de datos con el UART del PIC24F, pero he tenido muchisimas dudas respecto a si lo estoy haciendo correctamente, ya que aún leyendo las hojas de datos se me hace algo complejo.

A continuacion comparto mi codigo para pruebas del PIC24F usando el modulo UART en 9-bits de datos.  Basicamente en el while(1) estoy haciendo un poll de los pines RX y TX. Transmito las "WORDs" 0x108 3 veces, en donde se supone q es el comando para que el monedero haga un Reset de ahi leo el registro U1RxREG y lo intento desplegar en unos LEDs conectados al puerto B.




#include "p24fj128ga010.h"
#include "uart.h"
#include "stdlib.h"
#include "string.h"
#define FCY 4000000
#include "libpic30.h"
#define XTFREQ          8000000       
#define FCY             XTFREQ/2       

#define BAUDRATE        9600         
#define BRGVAL     (((FCY/BAUDRATE)/16)-1)   
                                               
                                    

     
_CONFIG2(FNOSC_FRC & POSCMOD_NONE);
void UART_Init (void);
int main (void);

void UART_Init (void)
{
      CloseUART1();
      U1MODEbits.UEN0 = 0;
      U1MODEbits.UEN1 = 0;
      U1MODEbits.BRGH = 0;
      
      
      U1STAbits.UTXISEL1 = 0;       
      U1STAbits.UTXISEL0 = 0;
      U1STAbits.UTXEN = 1;
      U1STAbits.URXISEL1 = 0;      
      U1STAbits.URXISEL0 = 0;
      
      
      U1MODEbits.PDSEL1 = 1;
      U1MODEbits.PDSEL0 = 1;
      U1STAbits.ADDEN = 1;
      
      U1BRG = BRGVAL;
      U1MODEbits.UARTEN = 1 ;    
   
}      

char recibeDato()
   {       
      WORD dato;
   if(!U1STAbits.OERR & !U1STAbits.FERR & !U1STAbits.PERR)
   {   
      while(!U1STAbits.RIDLE);
      dato=U1RXREG;
      IFS0bits.U1RXIF = 0;
   
   }
   else
   {
      U1STAbits.OERR = 0;
      U1STAbits.FERR = 0;
      U1STAbits.PERR = 0;
   }
      
   return dato;
   }

   
   
   void mandaDato(char dato)
      {
         __delay_us(100);
         
         
         while (!U1STAbits.TRMT);
         U1TXREG = dato;   
         IFS0bits.U1TXIF = 0;
      }

int main (void)
{
   LATB = recibeDato();
      mandaDato(0x108);
      
      mandaDato(0x108);
      
      mandaDato(0x108);
      
   }   

   CloseUART1();
   
   return 0;

}



Ahora mis pin Tx y RX los tengo como en el esquematico adjunto (proveniente de la hoja de datos del protocolo).

Pero pues al hacer todo esto ni recibo nada ni el monedero responde a mis comandos...

Espero alguien me pueda echar la mano en este proyecto. 

Gracias.

Desconectado isaacmu

  • PIC10
  • *
  • Mensajes: 4
Re: Control de monedero MDB/ICP con PIC24F
« Respuesta #1 en: 03 de Agosto de 2010, 14:25:59 »
Casi no se ve el esquematico. Aqui lo adjunto de nuevo

Desconectado jccgamez

  • PIC10
  • *
  • Mensajes: 1
Re: Control de monedero MDB/ICP con PIC24F
« Respuesta #2 en: 21 de Mayo de 2012, 11:46:00 »
Casi no se ve el esquematico. Aqui lo adjunto de nuevo

Ya lograste comunicacio con el dispositivo?

Desconectado ocangash

  • PIC10
  • *
  • Mensajes: 1
Re: Control de monedero MDB/ICP con PIC24F
« Respuesta #3 en: 12 de Septiembre de 2013, 23:46:36 »
Prueben con este ezquematico a ver si les sirve, este tiene 2 opto acopladores que hace que se tenga un circuito que se asemeje mucho a lo que que se encuentrea en el el ezquematico del manual MDB.
Este fue diseñado para Arduino pero creo que puede funcionar por que tambien es para la comunicacion UART.

Saludos.

Omar Cangas