come inviare dati col bus SPI
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:
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