Autor Tema: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS  (Leído 10716 veces)

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

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« en: 06 de Septiembre de 2009, 15:29:23 »
Hola muy buenas un saludo a todos!

Como reza en el titulo del post, no me funciona el SCK en CCS, sin embargo el pin esta bien, he comprobado los diodos que llevan todos los pines y ninguno esta roto, he probado con dos micros de PIC16F722 y uno PIC18F2550, y nada. Solo consigo 0.00 voltios. Porque debería medir algo en continua si tengo una señal de reloj. Lo he probado como pin I/O convencional y funcionan bien.
El caso es que las instrucciones las hace porque si que saca bits por el SDO, ya que en este pin, si que mido dependiendo de que valores envíe. Quiero que trabaje como maestro sobre un transceptor, pero claro si no le envía señal de reloj no hay nada que hacer.

Os pregunto porque ya de verdad no se que hacer. Este es el código que hago en CCS versión 4.084

Código: [Seleccionar]
#include <esclavo_SPI_v1_0.h>
#include <MRF24J40.h>
#include <MIspi.c>

BYTE dato;

void main()
{
#use spi // esto lo he puesto por probar pero tampoco da ningun resultado, se supone que lo hace ya el setup_SPI
   set_tris_a (0x00);          // Configurado como salida el puerto A
   set_tris_b (0xF1);          // Configurado forma   I/O el puerto B
   set_tris_c (0xD0);          // Configurado forma   I/O el puerto C
   setup_oscillator(OSC_500KHZ);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_64|SPI_SAMPLE_AT_END);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_vref(FALSE);
   enable_interrupts(INT_SSP);
   enable_interrupts(GLOBAL);
   
   spi_write(0xFF); //he leído que hay que escribir algo en el registro SSPBUFF de ahí esa instrucción.

   SPIconf(); // función de configuración del esclavo en cuestión.
   
   while(TRUE)
   {
   
   dato=spi_read(0); //el cero lo pongo porque ley que si era el máster debía llevarlo.
   
   dato=SPIgetcorto(TXMCR);
 
   dato=SPIget(0x024c);
   dato=SPIgetcorto(ORDER);
   
   }
   

}

Mis fuses son estos.

Código: [Seleccionar]
#include <16F722.h>
#device *=16
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES BORV19               
#FUSES PLLEN                 
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOVCAP               
#use delay(clock=500000)
#define SPI_CLK   PIN_C3
#define SPI_DI   PIN_C4
#define SPI_DO   PIN_C5
#define CSn  PIN_B3
#define wake PIN_B2
#define RSn  PIN_B1


mis funciones para el SPI:

Código: [Seleccionar]
BYTE SPIgetcorto(BYTE direccion)
{
   BYTE data;
   BYTE parte;
   parte=(direccion<<1)&(0b01111110);
   //if (parte==0x20){print8bits1c(2,12,0x53);}
   
   output_low(CSn);
   spi_write(parte);
   //data=spi_read(0);
   if( spi_data_is_in() )
   {data = spi_read(0);}
   output_high(CSn);
   
   return data;
}

void SPIputcorto(BYTE direccion, BYTE dato)
{
   BYTE parte;
   parte=((direccion<<1)&(0b01111110)|0x01);
   
   output_low(CSn);
   spi_write(parte);
   spi_write(dato);
   output_high(CSn);
}


BYTE SPIget(unsigned int16 direccion)
{
   BYTE parteH;
   BYTE parteL;
   BYTE data;  // (direccion>>3)&(0b01111111)|0x80   (direccion<<5)&(0b01110000)
   
   parteL=direccion<<5;
   parteH=direccion>>3|0x80;
//if (parteH==0xc9){print8bits1c(2,12,0x53);}
//if (parteL==0x80){print8bits1c(2,0,0x55);}

   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   data=spi_read();
   output_high(CSn);
   
   //if (data==0x00){print8bits1c(2,3,0x52);}
   //else {print8bits1c(2,6,0x54);}
   return data;
}

void SPIput(unsigned int16 direccion, BYTE dato)
{
   
   BYTE parteH;
   BYTE parteL;
   parteL=direccion<<5|0x10;
   parteH=direccion>>3|0x80;
   
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   spi_write(dato);
   output_high(CSn);
}

void SPIconf (void)
{
OUTPUT_LOW(RSn);
   LCDdelay(254);
   LCDdelay(254);
   OUTPUT_HIGH(RSn);
   LCDdelay(254);
   LCDdelay(254);

}

He podido ver en este mismo foro algunos otros ejemplos de uso del SPI, pero combinan el lenguaje C con lenguaje ensamblador, usado para memorias y otros aparatos. Pero no me logro aclarar con nada.

En fin todo consejo o ayuda lo agradecería mucho, un saludo a todos  :)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #1 en: 08 de Septiembre de 2009, 14:35:26 »
Señores no me digan que había hecho antes mal por que no lo se, el caso es que esto si que funciona.  :-/ :-/

Bueno si a alguien le es útil esta código funciona.  Compilado en la versión 4.084 de CCS.

Código: [Seleccionar]
#include <esclavo_SPI_v1_0.h>
#include <string.h>
#include <MRF24J40.h>

#include <MILCD.c>
#include <MIspi.c>
#include <MIMenu.c>
#include <MISinterrupciones.c>

 #locate SSPBUF = 0X13
 #locate SSPCON = 0X14
 #locate SSPSTAT = 0X94
 #locate ANSELA = 0X185
 #locate ANSELB = 0X186


BYTE dato;

void main()
{

   
   setup_oscillator(OSC_500KHZ);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_64|SPI_SAMPLE_AT_END);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_vref(FALSE);
   //enable_interrupts(INT_EXT);
   enable_interrupts(INT_TIMER0);
   //enable_interrupts(INT_SSP);
   enable_interrupts(GLOBAL);
   set_tris_a (0x00);          // Configurado como salida el puerto A
   set_tris_b (0xF1);          // Configurado forma   I/O el puerto B
   set_tris_c (0xD0);          // Configurado forma   I/O el puerto C

conf_display_8bits();
SET_TIMER0(0xE2);

   /*SSPCON=0b00100010;   // con esta configuración en vez de el setup_spi también funciona, pero no las dos cosas a la vez!!!
   SSPSTAT=0x10000000;
   SSPBUF=0XFF;
   LCDdelay (0x03);*/
         
   while(TRUE)
   {
   OUTPUT_LOW(PIN_C1);
   print8bits1c(1,0,0x54);
   LCDdelay(0x03);              //introduzco un retardo, esto es solo para comprobar que esta corriendo el programa para visualizarlo por el display.
   OUTPUT_HIGH(PIN_C1);
   print8bits1c(1,0,0x55);
   LCDdelay(0x03);              //introduzco un retardo, esto es solo para comprobar que esta corriendo el programa para visualizarlo por el display.
   dato=SPIgetcorto(TXMCR);
   dato=SPIget(0x024c);
   dato=SPIgetcorto(ORDER);   
   }
   
}

Código: [Seleccionar]
BYTE SPIgetcorto(BYTE direccion)
{
   BYTE data;
   BYTE parte;
   parte=(direccion<<1)&(0b01111110);
   //if (parte==0x20){print8bits1c(2,12,0x53);}
   
   output_low(CSn);
   spi_write(parte);
   //data=spi_read(0);
   if( spi_data_is_in() )
   {data = spi_read(0);}
   output_high(CSn);
   
   return data;
}

void SPIputcorto(BYTE direccion, BYTE dato)
{
   BYTE parte;
   parte=((direccion<<1)&(0b01111110)|0x01);
   
   output_low(CSn);
   spi_write(parte);
   spi_write(dato);
   output_high(CSn);
}


BYTE SPIget(unsigned int16 direccion)
{
   BYTE parteH;
   BYTE parteL;
   BYTE data;  // (direccion>>3)&(0b01111111)|0x80   (direccion<<5)&(0b01110000)
   
   parteL=direccion<<5;
   parteH=direccion>>3|0x80;
//if (parteH==0xc9){print8bits1c(2,12,0x53);}
//if (parteL==0x80){print8bits1c(2,0,0x55);}

   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   data=spi_read();
   output_high(CSn);
   
   //if (data==0x00){print8bits1c(2,3,0x52);}
   //else {print8bits1c(2,6,0x54);}
   return data;
}

void SPIput(unsigned int16 direccion, BYTE dato)
{
   
   BYTE parteH;
   BYTE parteL;
   parteL=direccion<<5|0x10;
   parteH=direccion>>3|0x80;
   
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   spi_write(dato);
   output_high(CSn);
}

Estas son las funciones que yo utilizo para comunicarme con el MRF24J40MA mediante SPI.
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #2 en: 16 de Octubre de 2009, 09:01:26 »
Si a alguien le es util este es el programa completo que comunica perfectamente con el MRF24J40MA, y que este periferico transmite y recibe perfectamente, eso si no he conseguido hacer funcionar el acuse de recibo, pero entre mis dos módulos con este mismo código, siempre transmite y siempre recibe.

Nota: transmite siempre que se pulse un pulsador y recibe cuando el otro modulo transmite, todo se visualiza en un display (si alguien lo necesita también puedo poner las rutinas del display)

Funcion principal
Código: [Seleccionar]
#include <esclavo_SPI_v1_3.h>
#include <string.h>
#include <MRF24J40.h>
#include <MILCD.c>
#include <MIspi.c>
#include <MIMenu.c>
#include <MISinterrupciones.c>
 
int8 into=0x30;

void main()
{   
   setup_oscillator(OSC_500KHZ);
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_XMIT_L_TO_H|SPI_CLK_DIV_4); //configuracion del SPI para que funcione el MRF24J40
   LCDdelay (0x03);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_vref(FALSE);
   enable_interrupts(INT_EXT);
   EXT_INT_EDGE(L_TO_H);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   set_tris_a (0x00);          // Configurado como salida el puerto A
   set_tris_b (0xF1);          // Configurado forma   I/O el puerto B
   set_tris_c (0xD0);          // Configurado forma   I/O el puerto C
   
   output_high(CSn);

conf_display_8bits();
SPIconf();

SET_TIMER0(0xE2);

   while(TRUE)
   {
   if (into==0x3A)
      {
      into=0x30;
      //SPIputcorto(TXNCON,0x05); //bit0 ordena el envio, vuelve a '0' por hard
      //bit2 se solicita acuse de recibo. Si lo deseamos asi debe estar siempre a '1'
      }
   
   if (into<0x3A)
      {
      print8bits1c(1,0,into);
      into++;
      }
   
     menu();
     
   }
   
}

menu

Código: [Seleccionar]
char mostrar=0x30;
int16 a;
void menu ()
{
switch (estado)
  {
   case 0:
   //codigo_8bits(0x01);         // Clear display
   //Recarga pulsa_flagX y cambia de estado segun pulsemos.
   if (pulsa_flag1){ pulsa_flag1=0; mostrar++; print8bits1c(1,8,mostrar); } //estado=1; }
   if (pulsa_flag2)
   { pulsa_flag2=0;
   print8bits1c(1,8,mostrar);
   for (a=0x003;a<=0x07F;a++) {SPIput(a,mostrar);}
   SPIputcorto(TXNCON,0x05);  //con esta instruccion enviamos la orden de transferir lo que hay en el regsitro TXnormal
   }
   if (pulsa_flag3){ pulsa_flag3=0; mostrar--; print8bits1c(1,8,mostrar); }//estado=1; }
   break;
}

interrupciónes
 
Código: [Seleccionar]
BYTE num4=0x31;
BYTE num5=0x31;
BYTE num6=0x31;

#int_TIMER0
void  TIMER0_isr(void)  //software antirrebotes para los pulsadores

    if ((INPUT(PIN_C6)==0)&&(pulsa_bit1==0)) {pulsa_flag1=1;}
    pulsa_bit1=~INPUT(PIN_C6);
 
    if ((INPUT(PIN_C7)==0)&&(pulsa_bit2==0)) {pulsa_flag2=1;}
    pulsa_bit2=~INPUT(PIN_C7);
 
    if ((INPUT(PIN_B4)==0)&&(pulsa_bit3==0)) {pulsa_flag3=1;}
    pulsa_bit3=~INPUT(PIN_B4);
}

#int_EXT
void  EXT_isr(void)
{
BYTE leido;
BYTE interrupcion;

interrupcion=SPIgetcorto(INTSTAT);
interrupcion=(interrupcion&0x09);

TXstatus=SPIgetcorto(TXSTAT);
TXstatus=(TXstatus&0x21);

//se comprueba que la interrupcion es producida por transmision
If (interrupcion==0x01)
{
print8bits1c(1,1,0x54);       // muestra la 'T' de transferencia

   if (num4==0x3A) {num4=0x30;}
   if (num4<0x3A)  {
   print8bits1c(2,1,num4); //muestra el numero de veces que ha transmitido
   num4++;}


SPIstatus(); // con esto estamos seguros de que solo entra si hemos hecho una transferencia.
SPIconf();
}

funciones del SPI

Código: [Seleccionar]
BYTE num1=0x30;
BYTE num2=0x30;
BYTE num3=0x30;

BYTE TXstatus;

BYTE SPIgetcorto(BYTE direccion)
{
   BYTE data;
   BYTE parte;
   parte=(direccion<<1)&(0b01111110);
 
   output_low(CSn);
   spi_write(parte);
   
   data = spi_read(0);
   output_high(CSn);
   
   return data;
}

void SPIputcorto(BYTE direccion, BYTE dato)
{
   BYTE parte;
 
   parte=((direccion<<1)&(0b01111110)|0x01);
   
   output_low(CSn);
   spi_write(parte);
   spi_write(dato);
   output_high(CSn);
}


BYTE SPIget(unsigned int16 direccion)
{
   BYTE parteH;
   BYTE parteL;
   BYTE data; 
   parteL=direccion<<5;
   parteH=direccion>>3|0x80;
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   //if( spi_data_is_in() )
   //{
   data = spi_read(0);
   //}
   output_high(CSn);
   return data;
}

void SPIput(unsigned int16 direccion, BYTE dato)
{
   
   BYTE parteH;
   BYTE parteL;
   parteL=direccion<<5|0x10;
   parteH=direccion>>3|0x80;
   
   output_low(CSn);
   spi_write(parteH);
   spi_write(parteL);
   spi_write(dato);
   output_high(CSn);
}

void SPIconf (void)
{
   BYTE i;

   SPIputcorto(SOFTRST,0x07); //reset por software, borrara todo, los bits pasaran a '0' por hardware.
   do
    {
        i = SPIgetcorto(SOFTRST);
    }
   while((i&0x07)!=0x00);

   SPIputcorto(PACON2,0x98); //habilitamos la FIFO y ponemos un tiempo de 96us a los GPIOx
   SPIputcorto(TXSTBL,0x95); //tiempo de estabilizacion de los bits y tiempo de espaciado entre ellos.
   SPIputcorto(ORDER,0xFF);//Debe tener el valor FF para que se trate de una comunicacion NORMAL y se use el TXFIFO NORMAL. Posicion 0x000.

   SPIput(RFCON0,0x02);     //se habilita el canal 11
   SPIput(RFCON1,0x01);     //Bits de control de optimizacion del VCO (oscilador controlado por tension)
   SPIput(RFCON2,0x80);     //activacion del bit PLLEN para habilitar la transmision recepcion. PLL debe estar habilitado para RF recepción o transmisión
   SPIput(RFCON6,0x90);     //activacion del filtro de TX, 1ms de tiempo de recuperacion desde el modo sleep
   SPIput(RFCON7,0x80);     //se configura el modo sleep con un reloj interno de 100kHz
   SPIput(RFCON8,0x10);     //se activa el VCO
   SPIput(SLPCON1,0x21);     //se deshabilita el pin de CLKOUT y se configura el preescaler del reloj sleep
   
   SPIputcorto(BBREG2,0x80); //configura modo ED deteccion de energia
   SPIputcorto(RSSITHCCA,0x60); //habilita el modo anterior
   SPIputcorto(BBREG6,0x40); //habilita la recepcion y su almacenaje en RXFIFO
   
   SPIput(RFCON3,0x00);     //se configura para la maxima potencia de transmision.
     
   SPIput(SLPCON0,0x02);     //Se configura la interrupcion como flanco de subida.
   SPIputcorto(INTCON,0xF6); //Se habilitan las interrupciones de RX y TX. Se dejan deshabilitadas las demas.
   
   // Configuracion Non-beacon (sin balizas, no faro) Pero siendo coordinador PAN
   
   
   SPIputcorto(TXMCR,0x1C);//Se configura el numero de reintentos y el no uso de los slots
   SPIputcorto(TXPEND,0x7D); //se le pone el valor recomentado de espaciado entre bits y se activa el reconocimiento.
   //SPIputcorto(ACKTMOUT,0xB9);
   SPIputcorto(RXFLUSH,0x01); //se resetea el puntero de RXFIFO y se aceptan todas las tramas (datos comandos etc). 0x05, valor para solo aceptar datos.
   SPIputcorto(BBREG1,0x00);     //se halitita la recepcion de paquetes.
   
   SPIputcorto(RFCTL,0x04); //Se resetea el estado del transceptor, pero no los valores introducidos.
   SPIputcorto(RFCTL,0x00);
   LCDdelay(254);

    do
    {
        i = SPIget(RFSTATE);
    }
    while((i&0xA0)!=0xA0);
   
    /* Program the short MAC Address, 0xffff */
    SPIputcorto(SADRL,0xFF);
    SPIputcorto(SADRH,0xFF);
         //load the short address of the device with 0xffff which means that it will be ignored upon receipt
    SPIputcorto(PANIDL,0xFF);
    SPIputcorto(PANIDH,0xFF);
         //load the pan address also with 0xffff;
   
    /* Program Long MAC Address*/
    for(i=0;i<8;i++)
    {
        SPIputcorto(EADR0+i,0x55);
    }
         //load the long address as 07,06,..   

   
   SPIputcorto(RXMCR,0x21);//Configura el dispoditivo como coordinador PAN y modo (promiscuo) que acepta todas las tramas con un buen CRC. 01 dispositivo 09 coordinador

   SPIput(0x000,0x01);  //carga los valores adecuados en el RXFIFO
   SPIput(0x001,0x7D);
   SPIput(0x002,0x00);
}



void SPIstatus (void)
{


 
 // se usa para comprobar que ha ocurrido si la ultima transmisión se ha realizado correctamente, problemas en el canal o falta de acuse de recibo.   
   if (TXstatus==0x00)
   {
   print8bits1c(1,13,0x4F); //muestra una 'O' de ok
   if (num1==0x3A) {num1=0x30;}
   if (num1<0x3A) 
      {
      print8bits1c(2,13,num1);
      num1++;
      }
   }
   
   if (TXstatus==0x01)
   {
   print8bits1c(1,14,0x43); //muestra una 'C' de canal bien envio mal
   if (num2==0x3A) {num2=0x30;}
   if (num2<0x3A) 
      {
      print8bits1c(2,14,num2);
      num2++;
      }
   }
     
   if (TXstatus==0x21)
   {
   print8bits1c(1,15,0x45); //muestra una 'E' de canal mal envio mal
   if (num3==0x3A) {num3=0x30;}
   if (num3<0x3A) 
      {
      print8bits1c(2,15,num3);
      num3++;
      }
   }
 
}

bueno espero que a alguien le sea util ;)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado inovaspirit

  • PIC10
  • *
  • Mensajes: 1
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #3 en: 04 de Diciembre de 2009, 12:04:01 »
Por favor, alguien me podria explicar como funciona o donde consigo la libreria <MRF24J40.h>, porque por mas que la he buscado no la encuentro, o si me dan algunos tips de como poder desarrollarla se los agradeceria. Gracias

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #4 en: 04 de Diciembre de 2009, 16:00:13 »
Existe tal libreria??

Porque no pruebas modificar el ejemplo Ex_ZMD.c de la carpeta de ejemplos de CCS ??
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: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #5 en: 04 de Diciembre de 2009, 16:03:35 »
Si a alguien le es util este es el programa completo que comunica perfectamente con el MRF24J40MA, y que este periferico transmite y recibe perfectamente, eso si no he conseguido hacer funcionar el acuse de recibo, pero entre mis dos módulos con este mismo código, siempre transmite y siempre recibe.

bueno espero que a alguien le sea util ;)

Podrias ponerlo todo en un zip y adjuntarlo??
Para los que vamos a empezar pronto con esto nos serviria de mucho, no vi que no estan incluidas las librerias.
Eso si no te complica la vida... :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #6 en: 12 de Marzo de 2010, 10:45:07 »
Si a alguien le es util este es el programa completo que comunica perfectamente con el MRF24J40MA, y que este periferico transmite y recibe perfectamente, eso si no he conseguido hacer funcionar el acuse de recibo, pero entre mis dos módulos con este mismo código, siempre transmite y siempre recibe.

bueno espero que a alguien le sea util ;)

Podrias ponerlo todo en un zip y adjuntarlo??
Para los que vamos a empezar pronto con esto nos serviria de mucho, no vi que no estan incluidas las librerias.
Eso si no te complica la vida... :lol: :lol:

Yo encantado  :g) , pero creo que el archivo tengo que ponerlo en un hipervinculo o un FTP, y actualmente no dispongo de espacio FTP, si quieres dame una direccion de correo y te lo mando, la mía es olafwolf2@gmail.com  :) si eso ya te mandaria el que funciona con acuse de recibo y todo.  :mrgreen:

Comento, la librería MRF24J40.h no es mas que todas las direcciones de ese dispositivo asociadas con sus nombres. La hice antes de darme cuenta de que Microchip también proporciona algo muy parecido. El resto de librerías si que están incluidas en los programas que he puesto.  ;-)
« Última modificación: 13 de Marzo de 2010, 10:11:42 por Ingeniero_Olaf »
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado Pchuqui_1

  • PIC16
  • ***
  • Mensajes: 187
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #7 en: 20 de Marzo de 2010, 11:52:17 »
Hola Ingeniero_Olaf. Queria preguntarte, que protocolo estas usando? Se que se pueden programar 3 protocolos. Yo estaba intentando utilizar el programa ZENA para hacerlo. Por otro lado los micros (PIC16F887, 16F877A, 16F917, 16F777, 16F727, 16f77) tienen el stack cargado no es asi? Gracias

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #8 en: 22 de Marzo de 2010, 19:44:25 »
Hola Ingeniero_Olaf. Queria preguntarte, que protocolo estas usando? Se que se pueden programar 3 protocolos. Yo estaba intentando utilizar el programa ZENA para hacerlo. Por otro lado los micros (PIC16F887, 16F877A, 16F917, 16F777, 16F727, 16f77) tienen el stack cargado no es asi? Gracias

Mu buenas te comento: El protocolo que yo uso es el que viene reflejado en la norma oficial http://standards.ieee.org/getieee802/download/802.15.4-2006.pdf, no conozco con exactitud la diferencia con los otros dos. Lo del programa ZENA lo intente, pero no saque nada de nada en claro. Así que no tengo ni idea de como va. Y siento decirte que creo que no están incluidos en el stack los chips inferiores a la serie 18F. Lo que yo he hecho es configurar lo a capón y hacerme mis propias librerías, que creo que MGLSOFT colgará próximamente. Espero que te sean útiles Suerte!  ;-)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #9 en: 22 de Marzo de 2010, 20:21:32 »
Gracias Ing Olaf.
Apenas pueda las subo a 4shared y las dejo compartidas, si??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #10 en: 23 de Marzo de 2010, 09:33:54 »
Gracias Ing Olaf.
Apenas pueda las subo a 4shared y las dejo compartidas, si??

Perfecto :)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #11 en: 23 de Marzo de 2010, 09:47:43 »
Prueben de bajar los archivos, creo haber compartido la carpeta de modo que puedan subir otras cosas alli.
Saludos!!

http://www.4shared.com/dir/34625164/31047a86/RF_modules.html
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Pchuqui_1

  • PIC16
  • ***
  • Mensajes: 187
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #12 en: 23 de Marzo de 2010, 15:51:18 »
Hola. _Ya descarge los archivos. Lo unico que queria preguntar es cual de ellos va ha funcionar como receptor y cual como emisor? 

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #13 en: 23 de Marzo de 2010, 16:07:39 »
Buena pregunta, aunque no es exactamente ese el nombre de la funcion de los nodos, es importante saberlo...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Olaf

  • PIC12
  • **
  • Mensajes: 52
Re: Comunicacion SPI con el PIC16F722, no me funciona el SCK en CCS
« Respuesta #14 en: 24 de Marzo de 2010, 05:46:15 »
Hola. _Ya descarge los archivos. Lo unico que queria preguntar es cual de ellos va ha funcionar como receptor y cual como emisor? 

Con estos modulos los dos pueden funcionar como emisor y receptor, por ello son transceptores. La única diferencia es que al menos uno debe ser coordinador o coordinar PAN o las dos cosas y el otro o bien igual que el primero o un simple dispositivo, para que se puedan comunicar, este se configura con la constante "modos". Dos dispositivos no se comunicaran entre si. Espero haber resuelto la cuestión.  :)
Me encanta el olor a microcontrolador por la mañana! APOCALISPIC NOW


 

anything