Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#11 Message par folkeu08 » sam. 21 mars 2026 12:17 lien vers la Data-Sheet : Cliquez ici

Bonjour PaulJujo,
je ne pense pas, je l'ai acheté chez Lextronic (ready for Pic).
J'utilise pas de module mais mon propre PCB.
A+
François

MCP23S17 et MC145151 (PLL)
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1967
Âge : 67
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#12 Message par Gérard » sam. 21 mars 2026 16:47 lien vers la Data-Sheet : Cliquez ici

paulfjujo a écrit :bonjour,


est-ce un "fake" module ?

par contre
concernant les modules de 4 afficheurs matrice 8x8 MAX7219,*j'ai pu constater qu'il existait des versions connection à gauche du module ,ou connection à droite ( donc inversion du sens de message)


Bonjour,
J'ai aussi fait ce constat, suivant le module, il faut envoyer les données dans l'autre sens (commencer par la fin)
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#13 Message par folkeu08 » lun. 23 mars 2026 11:11 lien vers la Data-Sheet : Cliquez ici

@paulfjujo
Avez vous déjà utilisé la fonction Soft_SPI dans MikroC.

En simu proteus avec un 18f4550, mon source fonctionne en soft_spi.
En hard, ça fait n'importe quoi.

Mon hard avec votre source du max7219, fonctionne en hard spi.
J'en perd la tête !
A+

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#14 Message par folkeu08 » lun. 23 mars 2026 11:51 lien vers la Data-Sheet : Cliquez ici

Hello,
Question de base : Comment mettre en sortie RD4 d'un 18f4550.
Sur un autre simulateur, cette patte est donnée pour entre en entrée or c'est le chip select du mas7219 !
J'ai déclaré ainsi :

Code : Tout sélectionner




sbit Chip_Select1 at RD4_bit
//CS afficheur MAX7219
//sbit Chip_Select2 at RD3_bit; //CS potard Audio
//sbit Chip_Select3 at RD2_bit; //CS potard HF
//sbit Buzzer at RD6_bit;       //Buzzer
//sbit Chip_Select4 at RD1_bit; //CS PLL MC145170

sbit Chip_Select1_Direction at TRISD4_bit//Mise en sortie de CS Max7219
//sbit Chip_Select2_Direction at TRISD3_bit; //Mise en sortie de CS potard Audio
//sbit Chip_Select3_Direction at TRISD2_bit; //Mise en sortie de CS potard HF
//sbit Buzzer_Direction at TRISD6_bit;       //Buzzer
//sbit Chip_Select4_Direction at TRISD1_bit; //Mise en sortie CS du MC145170


 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#15 Message par folkeu08 » lun. 23 mars 2026 13:01 lien vers la Data-Sheet : Cliquez ici

J'ai ajouré cela dans mon main :

Code : Tout sélectionner


void main
() {
    Chip_Select1_Direction = 0;
    Chip_Select1 = 1;

et RD4 est bien en sortie dur l'oscillo virtuel mais en hard ça m'affiche toujours rien et en simu proteus si !

Je glisse ci-dessous ma séquence d'initialisation et mon main :

Code : Tout sélectionner

// Software SPI module connections
sbit SoftSpi_SDI at RD3_bit;
sbit SoftSpi_SDO at RD5_bit;
sbit SoftSpi_CLK at RD7_bit;

sbit SoftSpi_SDI_Direction at TRISD3_bit;
sbit SoftSpi_SDO_Direction at TRISD5_bit;
sbit SoftSpi_CLK_Direction at TRISD7_bit;
// End Software SPI module connections

sbit Chip_Select1 at RD4_bit; //CS afficheur MAX7219
sbit Chip_Select1_Direction at TRISD4_bit; //Mise en sortie de CS Max7219
 
char i
;

void max7219_init1() {
  Chip_Select1 = 0;                // Select MAX7219
  Soft_SPI_Write(0x09);           // BCD mode for digit decoding
  Soft_SPI_Write(0xFF);
  Chip_Select1 = 1;                // Deselect MAX7219
  
  Chip_Select1 
= 0;                // Select MAX7219
  Soft_SPI_Write(0x0A);
  Soft_SPI_Write(0x0F);           // Segment luminosity intensity
  Chip_Select1 = 1;                // Deselect MAX7219
  
  Chip_Select1 
= 0;                // Select MAX7219
  Soft_SPI_Write(0x0B);           // Set scan-limit
  Soft_SPI_Write(0x05);           // Display 5 digits
  Chip_Select1 = 1;                // Deselect MAX7219
 
  Chip_Select1 
= 0;                // Select MAX7219
  Soft_SPI_Write(0x0C);           // Set Shutdown register
  Soft_SPI_Write(0x01);           // Normal operation
  Chip_Select1 = 1;                // Deselect MAX7219
 
  Chip_Select1 
= 0;                // Select MAX7219
  Soft_SPI_Write(0xFF);           // No test
  Soft_SPI_Write(0x00);

  Chip_Select1 = 1;                // Deselect MAX7219
  }


void main() {
    Chip_Select1_Direction = 0;
    Chip_Select1 = 1;
   
  Soft_SPI_Init
();                    // Initialize SPI module
  max7219_init1();                // Initialize  MAX7219
  do
  for 
(= 1; i<=4; i++) {
      Chip_Select1 = 0;            // Select MAX7219
       Soft_SPI_Write(i);              // Send i to MAX7219 (digit place)
       Soft_SPI_Write(4-i);            // Send 4-i to MAX7219 (digit value)
      Chip_Select1 = 1;            // Deselect MAX7219
      
  
}
  while(1);

}

Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#16 Message par folkeu08 » lun. 23 mars 2026 23:08 lien vers la Data-Sheet : Cliquez ici

@ tous,
Je pense que je suis en train de perdre mon temps avec cette librairie "Software_SPI".
J'ai fait 2 petits programmes sur la même base pour un dialogue en hard et un en soft.
Celui en hard SPI fonctionne, celui en software SPI, que dalle !
Celui qui a déjà utilisé cette librairie de Software_SPI a t-il eu ce même soucis ?
Merci
François

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#17 Message par folkeu08 » mar. 24 mars 2026 13:25 lien vers la Data-Sheet : Cliquez ici


MCP23S17 et MC145151 (PLL)
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3313
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#18 Message par paulfjujo » mar. 24 mars 2026 18:36 lien vers la Data-Sheet : Cliquez ici

bonjour,


ce PIC avec un PORT USB est un peu (beaucoup) particulier ..
verifier si il n'ya pas interference avec :

datasheet du 18F4550
TABLE 10-7: PORTD I/O SUMMARY
RD4/SPP4 RD4 0 OUT DIG LATD<4> data output.
1 IN ST PORTD<4> data input.
SPP4 1 OUT DIG SPP<4> output data; takes priority over port data.
1 IN TTL SPP<4> input data.

PORTD can also be configured as an 8-bit wide
Streaming Parallel Port (SPP). In this mode, the input
buffers are TTL

REGISTER 18-1: SPPCON: SPP CONTROL REGISTER
SPPCON=0;
REGISTER 18-2: SPPCFG: SPP CONFIGURATION REGISTER

nota : MikroC Soft SPI sur 18F27K42 ..OK
et d'autres MCU
Aide toi, le ciel ou FantasPic t'aidera

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#19 Message par folkeu08 » dim. 5 avr. 2026 10:51 lien vers la Data-Sheet : Cliquez ici

Bonjour,
Suis rentré à l'hôpital et j'ai récupéré mon PC mais pas de platine hard pour tester.
Je viens de me faire aider par ChatGPT pour faire une SPI soft sans passer par la librairie fournie par MikroC.
ChatGPT m'a créé un source et un exemple, je vais essayer de simuler sous proteus avec le 18f4550. J'aurai bien aimé utiliser un autre pic mais dans ce projet l'usb sera utiisé, soit en HID ou CDC.
Tout ça me change les idées et des examens.
A+

MCP23S17 et MC145151 (PLL)
folkeu08
Débutant
Débutant
Messages : 76
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#20 Message par folkeu08 » dim. 5 avr. 2026 12:52 lien vers la Data-Sheet : Cliquez ici

Re,
ChatGPT m'a fait un source qui fonctionne sous proteus et me permet de conserver pour la suite la fonction USB :

Code : Tout sélectionner

// ----------------------------
// PIC18F4550 + MAX7219 SPI logiciel
// Affichage: 107.50
// Broches utilisées:
// CLK  -> RD7
// DATA -> RD5
// CS   -> RD4
// ----------------------------

// Définition des broches
sbit MAX7219_CS   at RD4_bit;
sbit MAX7219_CLK  at RD7_bit;
sbit MAX7219_DATA at RD5_bit;

// Prototypes des fonctions
void MAX7219_InitPins();
void MAX7219_EcrireByte(char byte);
void MAX7219_Send(char addresschar value);
void MAX7219_Init();
void MAX7219_Display107_50();

// ----------------------------
// Initialisation des broches
// ----------------------------
void MAX7219_InitPins() {
    
TRISD4_bit 0// CS en sortie
    
TRISD5_bit 0// DATA en sortie
    
TRISD7_bit 0// CLK en sortie

    
MAX7219_CS 1;  // CS inactif
    
MAX7219_CLK 0// CLK à 0
}

// ----------------------------
// SPI logiciel: envoi d'un octet
// ----------------------------
void MAX7219_EcrireByte(char byte) {
    
char i;
    for (
08i++) {
        if (
byte 0x80)
            
MAX7219_DATA 1;
        else
            
MAX7219_DATA 0;

        
MAX7219_CLK 1;
        
Delay_us(1);   // délai pour stabilité
        
MAX7219_CLK 0;

        
byte <<= 1;
    }
}

// ----------------------------
// Envoyer une commande au MAX7219
// ----------------------------
void MAX7219_Send(char addresschar value) {
    
MAX7219_CS 0;               // activer le MAX7219
    
MAX7219_EcrireByte(address);   // envoyer l'adresse
    
MAX7219_EcrireByte(value);     // envoyer la donnée
    
MAX7219_CS 1;               // désactiver le MAX7219
}

// ----------------------------
// Initialisation du MAX7219
// ----------------------------
void MAX7219_Init() {
    
char i;
    
MAX7219_InitPins();

    
MAX7219_Send(0x090xFF); // Decode mode: BCD pour tous les digits
    
MAX7219_Send(0x0A0x0F); // Intensité max
    
MAX7219_Send(0x0B0x07); // Scan limit: digits 1-8
    
MAX7219_Send(0x0C0x01); // Shutdown mode: normal operation
    
MAX7219_Send(0x0F0x00); // Display test: off

    // Effacer tous les digits

    
for (1<= 8i++) {
        
MAX7219_Send(i0x0F); // vide
    
}
}

// ----------------------------
// Affichage de 107.50
// ----------------------------
void MAX7219_Display107_50() {
    
// Effacer d'abord tous les digits
    
char i;
    for (
1<= 8i++) {
        
MAX7219_Send(i0x0F); // vide
    
}

    
// Affichage des chiffres
    
MAX7219_Send(60);           // Digit 1 (droite) = 0
    
MAX7219_Send(45);           // Digit 2 = 5
    
MAX7219_Send(30x80);    // Digit 3 = 7 avec point
    
MAX7219_Send(20);           // Digit 4 = 0
    
MAX7219_Send(11);           // Digit 5 = 1 (gauche)
}

// ----------------------------
// Programme principal
// ----------------------------
void main() {
    
MAX7219_Init();           // Initialisation MAX7219
    
MAX7219_Display107_50();  // Affichage du nombre

    
while(1) {
        
// Ici tu peux mettre à jour l'affichage si besoin
    
}
}
 


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités