Pour commencer , je vais m'excuser , car en effet j'arrive sur ce forum chargé de "préjugés" , en effet actuellement pour moi PIC équivaut a échec du projet en cours...et j'aimerai beaucoup que ça change... J'ai commencer la programmation sur des AVR 8bit d’Atmel . J'ai fait beaucoup de projet avec ses microcontrôleurs , mais seulement voila j'aimerai travailler plus tard dans l’électronique embarquée et il me semble important de maitriser toutes les technologies .
Alors voila j'en arrive a ma question : Est ce possible de crée une liaison SPI maitre esclave entre un pic16F1827 et un emmeteur nRF24L01 en utilisant les MSSP intégré au micro , je poste sur ce forum car je veux réussir a utiliser des PICs pour faire autre chose que allumer des leds , mais je vous avoue que je suis a deux doigts de laisser tomber mon projets et de basculer sur Atmel...Pour donner une idée il ya mtn quelques mois j'ai deja laisser tomber l'idée d'obtenir une connexion I2C fonctionel sur pic , puis apres acharnement j'ai laisser tomber l'idée de faire fonctionner un ecran lcd 16*02 sur pic ...
Mais si les PICs se vendent toujours c'est qu'ils doivent marcher lorsqu'ils sont bien paramétrés correctement . Alors quest que je fais mal ?? pourquoi ca plante
Donc je laisse ici une image de la connectique et mon code avec l'espoir qu'une bonne âme éclaire ma lanterne
Actuellement il ne se passe .... rien... je nai pas d'analyseur logique sous la main ni d'oscilo donc j'ai fait du debugage avec des leds ( parce que j'ai pas été foutu de faire marcher L'USART non plus
PS : pardon pour le pessimisme
Compilateur XC8
Code : Tout sélectionner
/*
* File: main.c
* Author: Pierre
*
* Created on 4 novembre 2016, 08:42
*/
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON // Low-Voltage Programming Enable (Low-voltage programming enabled)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <pic16f1827.h>
#define _XTAL_FREQ 16000000 // osc interne 16 mhz
void SPI_INIT();
void spi_w(unsigned char data);
/*
*
*/
int main(int argc, char** argv) {
OSCCON = 0b01111010 ; // 16 mhz oscilateur interne ??
TRISBbits.TRISB2 = 0; // portB RB2 en sortie
TRISBbits.TRISB7 = 0 ; // portB RB7 en sortie
LATBbits.LATB7 = 1 ;//ss=1;
SPI_INIT();
while(1) // boule infinie
{
LATBbits.LATB2 = 1 ;
__delay_ms(3000);
spi_w(0x0F);
LATBbits.LATB2 = 0;
__delay_ms(3000);
}


