Pagina 1 di 1

come inviare dati col bus SPI

MessaggioInviato: 13 feb 2013, 23:54
da guidonetto
Ciao, vi chiedo ancora informazioni, vorrei scrivere (inviare) la parola: ciao nella memoria esterna che usa il bus SPI, poi leggerla nel PIC, dove si accendera un led per avvisarmi che la letture è stata fatta ( ci penso io a questa parte del codice). Tutto questo è un esempio per fare pratica con l' invio e ricezione dei dati.
Grazie

Scrivo parte del codice:

Codice: Seleziona tutto
#include <p18cxxx.h> //pic18f4550
#include <spi.h>


#pragma config FOSC = HS        //OSC = HS Impostato per lavorare ad alta frequenza
#pragma config WDT = OFF        //WDT = OFF Disabilitato il Watchdog Timer
#pragma config LVP = OFF        //LVT = OFF Disabilitato programmazione LVT
#pragma config PBADEN = OFF     //PBADEN = OFF Disabilitato gli ingrassi analogici

unsigned int i ;

unsigned char sync_mode=0;
unsigned char bus_mode=0;
unsigned char smp_phase=0;

unsigned char SPI_Send [] = "ciao"; //definisco l'array

void main (void) {

ADCON1 = 0xFF;  // Disabilito gli ingressi analogici

//Imposto PORTA tutti ingrrssi tranne RA5(SS)
LATA = 0x00;
TRISA = 0b11011111;


//Imposto PORTB tutti ingrrssi RB0(SDI), tranne RB1(SCK)
LATB = 0x00;
TRISB = 0b11111101;

//Imposto PORTC tutti ingressi tranne RC7(SDO)
LATC = 0x00;
TRISC = 0b01111111;

//Imposto PORTD tutti ingressi tranne RD0(uscita)
LATD = 0x00;
TRISD = 0b11111110;

//Imposto PORTE tutti ingrrssi
LATE = 0x00;
TRISE = 0xFF;

INTCON2bits.RBPU = 0; //Abilita i resistori di pull-up sulla PORTB

//Configuro il modulo SPI
sync_mode = SPI_FOSC_16 ;
bus_mode = MODE_00;
smp_phase = SMPEND;
OpenSPI(sync_mode,bus_mode,smp_phase );

//OpenSPI(SPI_FOSC_16, MODE_00, SMPEND);  //Si puo anche scrivere cosi.




CloseSPI();
while (1) { //Ciclo infinito
     
}
}//main

 

Re: come inviare dati col bus SPI

MessaggioInviato: 16 feb 2013, 16:29
da simo85
guidonetto ha scritto:vorrei scrivere (inviare) la parola

Tutto quello che devi fare, a parte configurare la periferica, è scrivere nel registro / buffer interno.

Senza sapere di quale PIC si tratta non posso dire quale è, ad ogni modo sul datasheet c'è scritto.