Autor Tema: Ejemplo Simulación del módulo spi  (Leído 62291 veces)

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

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Ejemplo Simulación del módulo spi
« Respuesta #90 en: 11 de Mayo de 2012, 18:27:15 »
has puesto bien el pin CS? es muy importante en este tipo de integrados, y por la configuracion que veo en tu programa no veo por ningun sitio accionar el pin CS. Tambien he visto en el datasheet que deberias poner SPI_XMIT_H_TO_L en vez de L_TO_H, de todas formas primero es el CS

probe con los 2 (el cs antes lo tenia a gnd) y cambie el SPI_XMIT pero sigue siendo igual no me responde nada el ADE7753

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Ejemplo Simulación del módulo spi
« Respuesta #91 en: 11 de Mayo de 2012, 18:29:22 »
no no, el CS lo tienes que controlar tu, antes de enviar un dato lo debes poner a 0, enviar el dato y ponerlo a 1

fijate en la pagina 6:
http://www.analog.com/static/imported-files/data_sheets/ADE7753.pdf

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Ejemplo Simulación del módulo spi
« Respuesta #92 en: 11 de Mayo de 2012, 18:46:25 »
 :)
« Última modificación: 11 de Mayo de 2012, 18:57:28 por tincho_a »

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Ejemplo Simulación del módulo spi
« Respuesta #93 en: 11 de Mayo de 2012, 18:47:43 »
no no, el CS lo tienes que controlar tu, antes de enviar un dato lo debes poner a 0, enviar el dato y ponerlo a 1

fijate en la pagina 6:
http://www.analog.com/static/imported-files/data_sheets/ADE7753.pdf


Gracias por la respuesta.
ahi lo modifique, fijate en el programa que postee que lo acabo de modificar, pero nada aun!

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Ejemplo Simulación del módulo spi
« Respuesta #94 en: 12 de Mayo de 2012, 14:05:49 »
El CS (Chip Select) lo debes modificar siempre y cuando tengas varios integrados que
se comunican por spi al pic, el mismo sirve para decirle cual es el que tiene que actuar,
o sea cual es el que estas seleccionando, de ahi la palabra Chip Select.
En la hoja de datos explica claramente que cuando uno esta trabajando con un unico chip
podes dejar dicho pin conectado permanentemente a masa, por lo que siempre estaria
seleccionado ese dispositivo, o sea siempre estaria en funcionamiento.
Debe estar a masa ya que es activo por nivel bajo, no viene por acá tu problema Tincho.
Sigo renegando con el ADE7758.. Vamos por mas !! Cuando logremos establecer la
comunicacion spi con estos dispositivos no nos va a parar nadie !! jajaja

Saludos  a todos
INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Ejemplo Simulación del módulo spi
« Respuesta #95 en: 23 de Mayo de 2012, 20:41:17 »
Al fin logre comunicar el ADE 7753 maldito  :5]
Adjunto el programa, esta funcionando implementado, hay q calibrar el tema de los registros asi que ahora me pongo con eso.

#include <30F3013.h>



#fuses XT, PR, NOWDT, NOPROTECT, NOWRT, NOMCLR,NOBROWNOUT
#use delay(clock=3582056)

#use rs232(UART2, baud=9600, xmit=PIN_F5, rcv=PIN_F4, parity=N, bits=8)


#define SDO PIN_F3
#define SCK PIN_F6
#define SDI PIN_F2
#define CS  PIN_D8

#define LEDV PIN_D9
#define LEDR PIN_C14
 

///////////////////////////////////////////////////
//Definición de direción de registros del ADE7753
///////////////////////////////////////////////////

//Direcciones de Registro de Lectura
/// si empieza en 0 leo
//#define RESERVED   0x00 // No utilizado
#define   WAVEFORM     0x01   //24
#define   AENERGY      0x02   //24
#define   RAENERGY     0x03   //24
#define   LAENERGY     0x04   //24
#define   VAENERGY     0x05   //24
#define   RVAENERGY    0x06   //24
#define   LVAENRGY     0x07   //24
#define   LVARENERGY   0x08   //16
#define   MODE         0x09   //16
#define   IRQEN        0x0A   //16
#define   STATUS       0x0B   //16
#define   RSTSTATUS    0x0C   //16
#define   CH1OS        0x0D   //8
#define   CH2OS        0x0E   //8
#define   GAIN         0x0F   //8
#define   PHCAL        0x10   //6
#define   APOS         0x11   //16
#define   WGAIN        0x12   //12
#define   WDIV         0x13   //8
#define   CFNUM        0x14   //12
#define   CFDEN        0x15   //12
#define   IRMS         0x16   //24
#define   VRMS         0x17   //24
#define   IRMSOS       0x18   //12
#define   VRMSOS       0x19   //12
#define   VAGAIN       0x1A   //12
#define   VADIV        0x1B   //8
#define   LINECYC      0x1C   //16
#define   ZXTOUT       0x1D   //12
#define   SAGCYC       0x1E   //8
#define   SAGLVL       0x1F   //8
#define   IPKLVL       0x20   //8
#define   VPKLVL       0x21   //8
#define   IPEAK        0x22   //24
#define   RSTIPEAK     0x23   //24
#define   VPEAK        0x24   //24
#define   RSTVPEAK     0x25   //24
#define   TEMP         0x26   //8
#define   PERIOD       0x27   //16
#define   TMODE        0x3D   //8
#define   CHKSUM       0x3E   //6
#define   DIEREV       0x3F   //8

//Direcciones de Registro de Escritura
//con 0x1 escribo
//#define RESERVED   0x00 // No utilizado

#define   _MODE         0x89   //16
#define   _IRQEN        0x8A   //16
#define   _CH1OS        0x8D   //8
#define   _CH2OS        0x8E   //8
#define   _GAIN         0x8F   //8
#define   _PHCAL        0x90   //6
#define   _APOS         0x91   //16
#define   _WGAIN        0x92   //12
#define   _WDIV         0x93   //8
#define   _CFNUM        0x94   //12
#define   _CFDEN        0x95   //12
#define   _IRMSOS       0x98   //12
#define   _VRMSOS       0x99   //12
#define   _VAGAIN       0x9A   //12
#define   _VADIV        0x9B   //8
#define   _LINECYC      0x9C   //16
#define   _ZXTOUT       0x9D   //12
#define   _SAGCYC       0x9E   //8
#define   _SAGLVL       0x9F   //8
#define   _IPKLVL       0xA0   //8
#define   _VPKLVL       0xA1   //8
#define   _TMODE        0xBD   //8

#define tpo_lect_esc  1
#define tpo_esp       5

////////////////////////////////////////
//ESCRITURA SPI del ADE
////////////////////////////////////////

void escribir(int8 dato)
{
int8 datoaux_esc=0x00;
int8 i;

datoaux_esc=dato;

for(i=1; i<=8; ++i){

output_high(SCK);
delay_us(2);     
output_bit(SDO,shift_left(&datoaux_esc,1,0));
delay_us(8);
output_low(SCK);
delay_us(10);
}

}

/////////////////////////////////////////
///LECTURA SPI del ADE
/////////////////////////////////////////

int8 leer()
{

int8 datoaux_lec;
int8 i;

for(i=1; i<=8; ++i){

output_high(SCK);
delay_us(5);
shift_left(&datoaux_lec,1,input(SDI));
delay_us(5);
output_low(SCK);
delay_us(10);
}
return(datoaux_lec);
}



/////////////////////////////////////////
///PROGRAMA PRINCIPAL
/////////////////////////////////////////

int8 datoL[64]; // arreglo de datos de registros de Lectura
int8 datoE[64]; // arreglo de datos de registros de Configuracion
int8 cont=0x00;
int8 band1=0x00;
int8 selec=0x00;
int8 bandz=1;
int8 i=0;

void main(void)
{
char a;
   output_low(SCK); 
   output_high(CS); 
   
   output_high(LEDV);             
   output_low(LEDR);


   output_low(LEDV);
    output_high(LEDR);         // leds de prueba
 
  /////////////////////////////////////////////////////////////////////////////
   while (TRUE)
   {
      /////////////////////////////////////////////////////////////////////////////
  //////////////////////////CONFIGURO MODO DEL ADE//////////////////////////////
            output_low(CS);
            delay_us(tpo_esp);
            escribir(_MODE);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            escribir(0x60);            // 01100000 en binario selecciono chanel 2 solamente lo demas en default
            delay_ms(tpo_lect_esc);
            escribir(0x28);         //00101000 disable SAG output selecciono para medir temp(bit 5)
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
  /////////////////////////////////////////////////////////////////////////////
  //////CONF INTERRUP para sincronizar con el cruce por cero///////////////////
            output_low(CS);
            delay_us(tpo_esp);
            escribir(_IRQEN);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            escribir(0x00);
            delay_ms(tpo_lect_esc);
            escribir(0x01);
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
  /////////////////////////////////////////////////////////////////////////////
 printf("\r PRESIONE 1 para leer ADE\n"); // para q no este andando en el bucle infinito lo manejo yo por hyperterminal
a=getc();
 if(a=='1')
 {
  //////////////////////////LECTURA DE TEMPERATURA//////////////////////////////       
                       
            delay_us(tpo_esp);
            escribir(TEMP);             // PIC lee al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[52]=leer();
            delay_ms(tpo_lect_esc);           
           
            output_high(CS);
            delay_us(tpo_esp);
           

  //////////////////////////LECTURA DE MODO//////////////////////////////           
           
            output_low(CS);
            delay_us(tpo_esp);
            escribir(MODE);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[1]=leer();
            delay_ms(tpo_lect_esc);
            datoL[2]=leer();
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
           
           
            output_low(CS);
            delay_us(tpo_esp);
            escribir(RSTSTATUS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[9]=leer();
            delay_ms(tpo_lect_esc);
            datoL[10]=leer();
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
               //Lectura VRMS 24bits
           
            delay_ms(tpo_lect_esc);
            output_low(CS);
            delay_us(tpo_esp);
            escribir(VRMS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[3]=leer();
            delay_ms(tpo_lect_esc);
            datoL[4]=leer();
            delay_ms(tpo_lect_esc);
            datoL[5]=leer();
            delay_ms(tpo_lect_esc);
                               
            output_high(CS);
            delay_us(tpo_esp);
           
             //Lectura IRMS 24bits
           
            delay_ms(tpo_lect_esc);
            output_low(CS);
            delay_us(tpo_esp);
            escribir(IRMS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[6]=leer();
            delay_ms(tpo_lect_esc);
            datoL[7]=leer();
            delay_ms(tpo_lect_esc);
            datoL[8]=leer();
            delay_ms(tpo_lect_esc);
                     
            output_high(CS);
            delay_us(tpo_esp);
           
           
            printf("\rtemp:%Lx\n",datoL[52]);
            printf("\rmode:%Lx%Lx\n",datoL[1],datoL[2]);
            printf("\rVrms:%Lx%Lx%Lx\n",datoL[3],datoL[4],datoL[5]);
            printf("\rirms:%Lx%Lx%Lx\n",datoL[6],datoL[7],datoL[8]);
   
            delay_ms(20);// retardo de 20ms correspondiente a los 50hz
           
 }
 else /// escribo nada si me equivoque de tecla
 printf("\r NADA\n");
   } 
}
[/color]

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ejemplo Simulación del módulo spi
« Respuesta #96 en: 23 de Mayo de 2012, 23:30:13 »
El código no lo coloques en distinto color, mejor usa Geshi o    ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Ejemplo Simulación del módulo spi
« Respuesta #97 en: 29 de Mayo de 2012, 22:40:37 »
Hola a todos !! Estoy tratando de compilar y me da un error muy raro.. Me dice que
el identificador no esta definido, y a dicha libreria ni la he tocado, la uso siempre en
cada uno de los proyectos que hago. Es una librería para manejar displays de 20x4
El nombre de la libreria es LCD420.C
Cuando quiero compilar el codigo principal, se me abre la ventana de LCD420.C y me
marca el error tal como se ve en pantalla. Sinceramente no se a que se puede deber.

Agradeceria una respuesta.  :?   :?    :?

Saludos
INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ejemplo Simulación del módulo spi
« Respuesta #98 en: 29 de Mayo de 2012, 22:44:11 »
Que tiene que ver con la simulación SPI ? Por favor respeta las reglas, no desvirtuar el tema actual. Seguramente incluyes la libreria antes de #use delay.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Ejemplo Simulación del módulo spi
« Respuesta #99 en: 30 de Mayo de 2012, 15:08:46 »
No estoy desvirtuando el tema, estoy trabajando en un programa para comunicar
el ADE7758 con el PIC16F877A.. Venia posteando acá, por eso lo puse.
Si es molestia abro un post nuevo, perdon Suky.

El inconveniente era ese, estaba incluyendo la libreria antes del #use delay.

Gracias por tu respuesta Suky. Apenas logre hacer andar el programa lo voy
a compartir con ustedes.

Saludos
INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL

Desconectado AZUL8

  • PIC10
  • *
  • Mensajes: 4
Re: Ejemplo Simulación del módulo spi
« Respuesta #100 en: 11 de Julio de 2012, 22:44:34 »
señores perdon si llego tarde al tema,

tengo un ADE7754 muy paresido al 7758 cambian muy pocas cosas he hecho de todo para comunicarme con el, utilizo un 18f4550, para poder utilizar un crytal de 20Mhz, asi poder optener una velocidad cercana a lo que pide la comunicación del ade.

hablando con un ascesor de analog device, me dice que la frecuencia minima de comunicación del dispositivo es 2.5Mhz por eso mismo divido del spi en 16, tal como ustedes lo hacen, ya que como les dije  antes las conficguracion del idle, la unica forma de comunicarlo por el modulo del spi es utilizando #use spi aqui si se puede configurar pero se dejaria de utilizar spi_read y spi_write y se trabajaria con xfer.

hay que tener encuenta los tiempos de escritura y lectura puesto ppor ejemplo caso del ade 7754 entre estas dos operaciones se necesitan 4 us. yo creo que eso no cambia ni para el 53 y mucho menos para el 58.


les pregunto:  han podido leer un registro como el de temperatura??

o leer a si sea opmode sin necesidad de configurarlo

simon me gustaria ver el cod que tienes a ver si estamos haciendo algo parecido.

buen dia muchas gracias.




Desconectado borodelostoldos

  • PIC10
  • *
  • Mensajes: 7
Re: Ejemplo Simulación del módulo spi
« Respuesta #101 en: 12 de Diciembre de 2012, 10:08:30 »
Buenas gente, muy bueno el hilo, se aprende mucho de compartir experiencias.
A pesar de todo lo logro hacer andar una comunicación SPI entre dos 18Fs donde se intercambian 3 bytes.
Tengo una simulación de PROTEUS funcionando perfecto, un maestro 14k50 enviando datos sincronizados con el /SS, todo chequeado en los pines de entrada del esclavo, la info llega bien al segundo PCB, los niveles lógicos no se degradan en la transmisión.
Sin embargo, en el esclavo no salta la interrupción por recepción completa de SSP.
Aunque tiene el dato disponible y el valor de /SS bajo, o no recibe el valor, o bien la interrupción no salta a pesar de haber recibido el dato.
Les dejo el código por si tienen un ratito para mirarlo...

CODIGO MAESTRO
Código: [Seleccionar]
#include <18F14K50.h>
#device adc=8                    //8 bits 256 cuentas

#FUSES INTRC_IO                  //High Speed Crystal/Resonator with PLL enabled
#FUSES CPUDIV2
#FUSES MCLR                      //Master Clear pin enabled
#FUSES NOWDT                     //No Watch Dog Timer
#FUSES NOPROTECT                 //Code not protected from reading
#FUSES NOLVP                     //No utilizamos el modo de programación con bajo voltaje, B5(PIC18) used for I/O
#FUSES NODEBUG                   //No usamos codigo para debuguear

#use delay(clock=8MHz)

#define VMAX    255.00               
#define AN1M    127.00   
#define AN2M    127.00
#define AN_DERECHA    128   
#define AN_IZQUIERDA    127
#define AN_ADELANTE    128
#define AN_ATRAS        127

#define SS PIN_B7

int8 AN1=0, AN2=0, V1, V2, direccion=0;    // para atras 1
int1 adq=0;
float Vo1, Vd1, Vi1;
float Vo2, Vd2, Vi2;

////////////////////////////////////////////////////////////////////////////////
////////// INTERRUPCIONES //////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

#int_TIMER0
void  TIMER0_isr(void)
{
   set_timer0(15536);             // 50ms
   
   adq=1;
   output_toggle(PIN_C1);      // solo para chequeo en simulacion u operación
}

////////////////////////////////////////////////////////////////////////////////
////////// FUNCIONES ///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

void adq_pote(void)
{
        set_adc_channel(7);        // desplazamiento longitudinal             
        delay_us(10);
        AN1 = read_adc();

        set_adc_channel(8);        // desplazamiento lateral
        delay_us(10);
        AN2 = read_adc();
}


void calc_vel(void)
{
V1=AN1; //calculo simplificado
V2=AN2;
}
   
   
void send(void)
{
    output_low(SS);

    spi_write(V1);
    delay_us(10);

    spi_write(V2);
    delay_us(10);

    spi_write(direccion);
    delay_us(10);

    output_high(SS);
}

////////////////////////////////////////////////////////////////////////////////
////////// PROGRAMA PRINCIPAL //////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

void main()
{
   set_tris_b(0b00011111);
   set_tris_c(0b01001101);

   setup_adc_ports(sAN7|sAN8|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
     
   setup_spi(SPI_MASTER|SPI_CLK_DIV_16|SPI_XMIT_H_TO_L|SPI_SCK_IDLE_LOW);
   
   setup_timer_0(T0_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   
   setup_comparator(NC_NC_NC_NC);
   
   set_timer0(0);
   
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   
   output_high(PIN_C2);
   output_high(PIN_B5);
   output_high(SS);
   
   while(TRUE)
   {
       
      if(adq==1)                // se genero la interrupcion teporizada
      {
          disable_interrupts(GLOBAL);
           
          adq_pote();
          calc_vel();
          send();                // se envian los valores de Vel al esclavo
           
          adq=0;
          enable_interrupts(GLOBAL);
      }
   }
}

CODIGO ESCLAVO
Código: [Seleccionar]
#FUSES NOPROTECT                 //Code not protected from reading
#FUSES NOLVP                     //No utilizamos el modo de programación con bajo voltaje, B5(PIC18) used for I/O
#FUSES NODEBUG                   //No usamos codigo para debuguear
#FUSES NOPBADEN                  //PORTB pins are configured as digital I/O on RESET
#FUSES CPUDIV2                   //System Clock by 2

#use delay(clock=8MHZ)                 

#define IN1 PIN_C0
#define IN2 PIN_C2    //CPP1 PWM
#define IN3 PIN_A6
#define IN4 PIN_C1    //CPP2 PWM
#define ENA PIN_E2                   
#define ENB PIN_E1                   
#define LED PIN_D2                   

int8 duty1, duty2, direccion;
int8 set=0;

#int_SSP
void SSP_isr(void)
{
    disable_interrupts(global);
   
    duty1=spi_read();
   
    while(!spi_data_is_in());
    duty2=spi_read();

    while(!spi_data_is_in());
    direccion=spi_read();

    set=1;
    output_toggle(LED);        // SOLO PARA CHEQUEAR QUE ENTRO EN LA INTERRUPCION
    clear_interrupt(int_ssp);
    enable_interrupts(global);
}


////////////////////////////////////////////////////////////////////////////////
////////// PROGRAMA PRINCIPAL //////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

void main()
{
   set_tris_A(0b10111111);
   set_tris_B(0b11);
   set_tris_C(0b01101000);
   set_tris_E(0b11111001);
   set_tris_D(0b000);
   
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   
   setup_timer_0(RTCC_OFF);
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);    //genera los ticks que miden el pulso
   
   setup_timer_2(T2_DIV_BY_1, 255, 1);            //modulacion de frecuencia del PWM
   setup_CCP1(CCP_PWM);
   setup_CCP2(CCP_PWM);
 
   setup_spi(SPI_SLAVE||SPI_XMIT_H_TO_L|SPI_SCK_IDLE_LOW); 
   
   output_high(IN1);
   output_high(IN3);
   set_pwm1_duty(150);
   set_pwm2_duty(150);
   
   clear_interrupt(int_ssp);
   enable_interrupts(int_ssp);
   enable_interrupts(global);

   output_high(LED);

   while (TRUE)
   {
       if(set==1)
       { 
           disable_interrupts(global);
           if(direccion==0)
           {
               output_high(IN1);
               output_high(IN2);
               set_pwm1_duty(255-duty1);
               set_pwm2_duty(255-duty2);
            }
           if(direccion==1)
           {
               output_low(IN1);
               output_low(IN2);
               set_pwm1_duty(duty1);
               set_pwm2_duty(duty2);
            }
            set=0;
           enable_interrupts(global);
       }
   }
}

MUCHAS GRACIAS!!

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Ejemplo Simulación del módulo spi
« Respuesta #102 en: 12 de Diciembre de 2012, 11:54:47 »
Código: [Seleccionar]
if(set==1)
       {  
           disable_interrupts(global);
           if(direccion==0)
           {
               output_high(IN1);
               output_high(IN2);
               set_pwm1_duty(255-duty1);
               set_pwm2_duty(255-duty2);
            }
           if(direccion==1)
           {
               output_low(IN1);
               output_low(IN2);
               set_pwm1_duty(duty1);
               set_pwm2_duty(duty2);
            }
            set=0;
           enable_interrupts(global);
       }

No entiendo para que activas y desactivas la interrupción global creo que no hay necesidad, por otro lado debes configurar bien el micro esclavo con la siguiente línea de código

Código: [Seleccionar]
setup_spi(SPI_MASTER|SPI_CLK_DIV_16|SPI_XMIT_H_TO_L|SPI_SCK_IDLE_LOW);
Primero que todo los micros debe funcionar a la misma velocidad de reloj, en caso contrario no hay seguridad que funcione, además debes revisar el datasheet de respectivo micro para configurar el siguiente parámetro:

Código: [Seleccionar]
|SPI_XMIT_H_TO_L
Este parámetro cambia si el micro funciona como maestro o como esclavo (creo), espero sean útiles la recomendaciones, cualquier cosa estaré atento.  
Un saludo desde Pereira - Colombia

Desconectado cguzman

  • PIC10
  • *
  • Mensajes: 16
Re: Ejemplo Simulación del módulo spi
« Respuesta #103 en: 16 de Marzo de 2013, 11:20:19 »
Hola companeros.
Tome el ejemplo que pusieron pero surge que al copilarlo siempre tira el mismo erro.
Alguien me pudiera ayudar con esta lio.

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Ejemplo Simulación del módulo spi
« Respuesta #104 en: 16 de Marzo de 2013, 15:33:51 »
Citar
Hola companeros.
Tome el ejemplo que pusieron pero surge que al copilarlo siempre tira el mismo erro.
Alguien me pudiera ayudar con esta lio.

Cual error, en mi caso compila perfectamente, deberías especificar mejor el problema.
Un saludo desde Pereira - Colombia


 

anything