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

SPI Hardware sur PIC18F27K42
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3279
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#51 Message par paulfjujo » ven. 13 févr. 2026 21:03

merci..


au final
je vais peut etre me remettre à l'Asm ...comme Jadis , au bon vieux Temps (X=1980)


... et avant l'ASM il y avait l'hexadecimal, au clés calculateur T2000 ou Boot sur SOLAR16 65 , ou en Hexadecimal sur KIM 6502
et meme sur Apollo 6 ! APOLLO GUIDANCE COMPUTER
Le code source : https://github.com/chrislgarry/Apollo-11 1700pages en pdf
Aide toi, le ciel ou FantasPic t'aidera

SPI Hardware sur PIC18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2948
Enregistré en : juillet 2016
Localisation : Terre

#52 Message par Temps-x » sam. 14 févr. 2026 03:06

Bonjour paulfjujo, et tout le forum,


J'ai fait une vidéo sur l'envoi de 3 images par l'usart, pour que tu voies la rapidité que je peux avoir ICI

Actuellement, il est inutile de dépasser 500000 Bauds tant que la vitesse SPI n'augmentera pas. Il serait préférable de faire appel à un Pic18F27K42.
qui je crois a un SPI beaucoup plus rapide que mon Pic

paulfjujo a écrit :Source du message je vais peut etre me remettre à l'Asm ...comme Jadis , au bon vieux Temps (X=1980)


Dans les années 1980, je croyais tout savoir. Maintenant, je sais que je ne sais rien.. :-)


==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

SPI Hardware sur PIC18F27K42
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3279
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#53 Message par paulfjujo » sam. 14 févr. 2026 18:44

bonsoir,


J'ai quelques test qui montre que sur mon appli XC8
la vitesse SPI n'a pas beaucoup de poids ,par rapport au reste ..

avec BAUD=15 2MHz
UART 460200

image en zone flash
DrawImageRGB(60,60,Image_128x160,120,160);
Affichage Image 128x160 en 299586 uS soit 0.300 sec.

envoi YAT
Fin de lecture Image_128x160_16b.bmp (41Ko)
Recu 20480 pixels RGB565
Test chargement BMP: 8666458 uS soit 8.666 sec.
avec BAUD=3

---------------------
avec BAUD=3 8MHz
image en zone flash
DrawImageRGB(60,60,Image_128x160,120,160);
Affichage Image 128x160 en 176668 uS soit 0.177 sec.

envoi YAT
Fin de lecture Image_128x160_16b.bmp
Recu 20480 pixels RGB565
Test chargement BMP: 8889950 uS soit 8.890 sec.

---------------------------------
avec BAUD=1 16MHz
DrawImageRGB(60,60,Image_128x160,120,160);
Affichage Image 128x160 en 156184 uS soit 0.156 sec.

envoi YAT
Fin de lecture Image_128x160_16b.bmp
Recu 20480 pixels RGB565
Test chargement BMP: 8895424 uS soit 8.895 sec.

Code : Tout sélectionner


uint32_t Traite_lecture_fichier
(void)
{
 
   uint8_t cc
;
   uint16_t  i,j,k,m;
   uint32_t Lx;
   CPrint(" envoi datas : Image_128x160_16b.bmp  41Ko\r\n");
   // Image_120x160_16b.bmp
   // Lx=(128*160)<<1; //40960
   //Lx=40960;
    m=40960;
    SetWindow(40,40,168,200); // image de 128x160
    INTCON0bits.GIE = 0;
    PIE3bits.U1RXIE = 1;
    START_SMT1                            // lance chrono
    DC_Oled = 1; //1= Donnee  0=Cde
    k=0;
    RTS_UART= 0; // autorise envoi
    do
     
{ 
     if
(PIR3bits.U1RXIF==1)
     {   cc= U1RXB;
         SPI1TXB = cc;
        __asm("NOP");
        while (!PIR2bits.SPI1RXIF) { };
        cc = SPI1RXB;
         k++;
     } 
    
} while(< m) ;
    STOP_SMT1              // Stop chrono
    CPrint("  Fin de lecture  Image_128x160_16b.bmp\r\n");
    Lx=m>>1;
   return Lx;
  }   


la boucle do while, vide , uniquement avec k++;
prend 230µS

A quoi sert un SPI à 16 ou 32 MHz et un UART à 460200 bds !
du fait que YAT affiche le contenu des datas envoyées .
.quid du debit moyen reel ?

voir post #28 et 29

mon analyser SQA a 50MHz n'est pas assez rapide pour SPI 32MHz ...
Aide toi, le ciel ou FantasPic t'aidera

SPI Hardware sur PIC18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2948
Enregistré en : juillet 2016
Localisation : Terre

#54 Message par Temps-x » sam. 14 févr. 2026 20:18

Bonsoir,

paulfjujo a écrit :Source du message A quoi sert un SPI à 16 ou 32 MHz et un UART à 460200 bds !
du fait que YAT affiche le contenu des datas envoyées .
.quid du debit moyen reel ?

voir post #28 et 29


Fait un essai avec le logiciel COM Port Toolkit 4.0 téléchargeable ICI malheureusement :cry: il est en version trial.

Tu as des fichiers qui sont prêts à mettre dans ce terminal ICI (19 au total)

Tu régles ton Pic à une vitesse de 500000 bauds, tu fait de même avec le logiciel COM Port Toolkit 4.0 et tu envoies, et la tu vas voir la différence avec Yat

Si yat est lent c'est qu'il est mal conçu, mais bon il est gratuit et dépanne bien, dans mon programme fait en RapidQ je n'ai pas ce problème de rapidité. sur l'usart

Dans la vidéo qui est ICI, la première image que tu vois n'est pas envoyée par l'usart, elle est lue en mémoire programme puis affichée, les autres sont envoyés par l'usat, regarde bien il n’y a pas de différence.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

SPI Hardware sur PIC18F27K42
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3279
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#55 Message par paulfjujo » dim. 15 févr. 2026 11:54

bonjour à tous,


Effectivement YAT ne suit pas le debit proposé par la vitesse en baud ...
je pense surement à cause de l'affichage simultané de l'envoi de TOUTES les datas (40960 cars) sur l'ecran (et en ascii ..)
verifié avec COMPORT toolkit que tu as proposé Merci !

Installation ComPort Toolkit

https://com-port-toolkit.software.infor ... /download/
COM Port Toolkit download
Operate a terminal with logging and monitoring options
Version: 4.0.1.535 (x86/x64)
Date update: Mar 22, 2013
File name: compt40_setup.exe
Size: 1.4 MB
For windows 10, 11 32/64 bit Get Fast!

about:
COM PORT TOOLKIT
Michael Golikov 2001-2012
http://www.cmpt.ru


exception au lancement
Plantage WIN10
reboot
il faut le lancer en mode administrateur ..OK !

remarques :
pas de vitesse bauds intermediare, ni superieure à 250 000 bds.
pas de copy/paste possible de l'ecran

Test à 115200 bds
10:47:20.187 Demande d'envoi Fichier Image BMP.... Stop envoi YAT..Buffer :
10:47:22.183 .. Partie Entete BMP de 64 bytes..0> 0x00 0x42 0x4D 0x8A 0xA0 0x
10:47:22.189 00 0x00 ..1> 0x00 0x00 0x00 0x8A 0x00 0x00 0x00 ..2> 0x00 0x49 0
10:47:22.195 x6D 0x61 0x67 0x65 0x5F ..3> 0x32 0x38 0x78 0x31 0x36 0x30 0x5F
10:47:22.200 ..4> 0x00 0x00 0x00 0x00 0xA0 0x00 0x00 ..5> 0x1C 0x00 0x00 0x20
10:47:22.206 0x1C 0x00 0x00 ..6> 0x00 0x00 0x00 0x00 0x00 0x00 0x00 .. envoi
10:47:22.211 datas : Image_128x160_16b.bmp 41Ko.. Fin de lecture Image_12
10:47:25.823 8x160_16b.bmp.. Recu 20480 pixels RGB565.. Test chargement BMP:
10:47:25.836 3623450 uS soit 3.623 sec

modif vitesse UART pour 250000bds
UART_Table.JPG


11:31:05.003 ge_128x160,120,160);.. Affichage Image 128x160 en 299584 uS soi
11:31:05.308 t 0.300 sec....... Demande d'envoi Fichier Image BMP.... Stop en
11:31:10.872 voi YAT..Buffer : BMŠ .. Partie Entete BMP de 64 bytes..0> 0x42
11:31:10.875 0x4D 0x8A 0xA0 0x00 0x00 0x00 ..1> 0x00 0x00 0x8A 0x00 0x00 0x00
11:31:10.878 0x7C ..2> 0x49 0x6D 0x61 0x67 0x65 0x5F 0x31 ..3> 0x38 0x78 0x3
11:31:10.882 1 0x36 0x30 0x5F 0x03 ..4> 0x00 0x00 0x00 0xA0 0x00 0x00 0x20 ..
11:31:10.886 5> 0x00 0x00 0x20 0x1C 0x00 0x00 0x00 ..6> 0x00 0x00 0x00 0x00 0
11:31:10.890 x00 0x00 0x00 .. envoi datas : Image_128x160_16b.bmp 41Ko.. Des
11:31:10.893 activer la Requete BMP RA3 pour envoi des datas.. Fin de lectur
11:31:32.052 e Image_128x160_16b.bmp.. Recu 20480 pixels RGB565.. Test charg
11:31:32.062 ement BMP: 1649842 uS soit 1.650 sec..... ....

avec 100% en C , mais XC8 bridé !

je pense qu'avec MikroC on peut descendre en dessous de la seconde, mais
je vais en rester là ...

:sifflotte: d'autant que ma finalité est d'utiliser une SD CARD...

Le SPI hardware ne doit pas aller plus vite que le bit bang
vu le temps MCU gaspillé pour simplement faire une boucle VIDE de 40960 increment => mesurée 230µS
combien en 100% ASM ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

SPI Hardware sur PIC18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2948
Enregistré en : juillet 2016
Localisation : Terre

#56 Message par Temps-x » dim. 15 févr. 2026 13:06

Bonjour paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message emarques :
pas de vitesse bauds intermediare, ni superieure à 250 000 bds.
pas de copy/paste possible de l'ecran

ComPort Paramètre vitesse.jpg

:sifflotte:Chez moi tout est possible, je suis magicien, tu peux la paramétrer manuellement, voir la capture d'écran qui est paramétrée à 500000 Bauds

paulfjujo a écrit :Source du message e pense qu'avec MikroC on peut descendre en dessous de la seconde, mais
je vais en rester là ...


Bien sûr que oui on peut descendre en dessous de la seconde, l'édute faite sur l'envoie d'un fichier image par l'usart ce n'est pas en vin.
et peut rendre service, pour celui qui ne peut pas stocker une image en mémoire programme par manque de place.

paulfjujo a écrit :Source du message :sifflotte: d'autant que ma finalité est d'utiliser une SD CARD...

Je vais aussi me mettre sur le sujet, mais pour l'instant je finis mon programme RapidQ

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

SPI Hardware sur PIC18F27K42
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3279
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#57 Message par paulfjujo » dim. 15 févr. 2026 15:40

pour mes tests : image_128x160_16b.bmp

avec SPI HW à 2MHz
Chargement et Affichage image 128x160x stockée en FLASH ... 0.300 sec.
Delay de chargement et affichage simultané BMP 128x160x2
à 115 200bds .. soit 1.650 sec.
à 460 800 bds ....... 0 .919 sec.
à 500 000 bds. .. 0.850 sec

modif : SPI HW passé de 2 à 16 Mhz
Affichage Image stockée en Flash 128x160 en 0.156 sec.
Image_128x160_16b.bmp.. Recu 20480 pixels RGB565..Chargementet Affichage BMP en 0.851 sec....

SPI HWde 2MHz --> à SPI1BAUD=15 => 16Mhz
Chargement et Affichage image 128x160x stockée en FLASH ... 0.146 sec.

Delay de chargement et affichage simultané BMP 128x160x2
à 921 600 bauds ... 0.473 sec

:sifflotte: record Battu même en C !

question : tu affiches directement ton BMP ou tu isoles l'entete prealablement ?

j'ai choisi de separer l'entete pour retrouver les infos dimensions et autres
.. en cours decodage et affichage entete fichier ...
ça va servir aussi pour l'option avec SDCARD.
Aide toi, le ciel ou FantasPic t'aidera

SPI Hardware sur PIC18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2948
Enregistré en : juillet 2016
Localisation : Terre

#58 Message par Temps-x » dim. 15 févr. 2026 16:46

paulfjujo a écrit :Source du message question : tu affiches directement ton BMP ou tu isoles l'entete prealablement ?


:+1: Excellente remarque que j'ai également prise en compte !! j'envoie pour l'instant juste les données, pour un écran de 128x160 qui est déjà préréglé dans le programme du Pic.

Pas besoin de l'entête, car c'est le programme RapidQ qui gère n'importe quelle fichier image : Bmp, Dib, Jpg, Gif, Wmf, Emf, Tif, Tiff et qui les redimentionne selon les paramètres sélectionnés

Exemple pour un pixel : Le programme RapidQ examine le premier pixel, qui est en 24 bits, puis il le convertit en RGB666, RGB565, RGB444 selon demande, après cela Il est converti en format de notre choix hexadécimal, décimal, chaîne.....

Après, il reste plus qu'à créer un fichier hexadécimal, ou l'envoyer directement sur RS232

On se qui conserne la carte SD

Pour un dépôt de fichier BMP sur carte SD on sera obligé de savoir lire le BMP, et de plus de le convertir en RGB666, RGB565, RGB444 selon le choix.

Je vais voir si je peux écrire un programme ASM pour lecture et conversion RGB666, RGB565, RGB444 d'un fichier BMP :langue:

Sa sera plus facile à faire quand RapidQ, car dans ASM le AND logique est plus simple pour une conversion

Mon pic est paramétré pour cet écran 128 x 160, mais je vais prévoir dans mon programme RapidQ d'envoyer la taille sur 2 octets , la largeur sur 2 octets, La longueur sur 2 octets, la position largeur d'écriture sur 2 octets, la position longeur d'écriture sur 2 octets, au total 10 octets, ça me permettra d'afficher même une petite image où je veux sur l'écran.

Je ferai de même dans le fichier hexadécimal si option demandée.

paulfjujo a écrit :Source du message Delay de chargement et affichage simultané BMP 128x160x2
à 921 600 bauds ... 0.473 sec

:sifflotte: record Battu même en C !

Je me vengerais en ASM !! :furieux:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage C »

Qui est en ligne

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