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 en BASIC et PASCAL !

Modérateur : Gérard

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#1 Message par Gérard » ven. 1 janv. 2016 13:53

Bonjour,

Je voulais tester la liaison SPI avec Mikrobasic et ça ne veut pas comme j'aimerais ... :o
La liaison SPI attaque 4 WS2801 DS du WS2801 pilotant chacun une LED RGB AC.
Les variables R_1 à B_4 sont déclarées comme byte.
Sur RB3 est branché une LED témoin pour voir si le programme tourne.

Merci pour vos lumières.

Edit : je ne sais pas pourquoi certaines parties du programme apparaissent en rouge.

Code : Tout sélectionner



'*************************************************************
'
    S/P TRANSFERT
'*************************************************************

SUB PROCEDURE TRANSFERT

    SPI1_WRITE (R_1)
    SPI1_WRITE (G_1)
    SPI1_WRITE (B_1)

    SPI1_WRITE (R_2)
    SPI1_WRITE (G_2)
    SPI1_WRITE (B_2)

    SPI1_WRITE (R_3)
    SPI1_WRITE (G_3)
    SPI1_WRITE (B_3)

    SPI1_WRITE (R_4)
    SPI1_WRITE (G_4)
    SPI1_WRITE (B_4)

END SUB

'
*************************************************************
'   S/P BLEU
'
*************************************************************

SUB PROCEDURE BLEU

    R_1 
= 0
    G_1 
= 0
    B_1 
= 255

    R_2 
= 0
    G_2 
= 0
    B_2 
= 255

    R_3 
= 0
    G_3 
= 0
    B_3 
= 255

    R_4 
= 0
    G_4 
= 0
    B_4 
= 255

    TRANSFERT
    Delay_MS 
(10)

END SUB

'*************************************************************
'
   S/P ROUGE
'*************************************************************

SUB PROCEDURE ROUGE

    R_1 = 255
    G_1 = 0
    B_1 = 0

    R_2 = 255
    G_2 = 0
    B_2 = 0

    R_3 = 255
    G_3 = 0
    B_3 = 0

    R_4 = 255
    G_4 = 0
    B_4 = 0

    TRANSFERT
    Delay_MS (10)
    
END SUB

'
   Main program 

    ADCON0  
= 0
    PORTA   
= 0
    PORTB   
= 0

    INTCON  
= 0
    ADCON1  
= 7
    OSCCON  
= %01110100
    ANSEL   
= 0
    TRISA   
= %00000000
    TRISB   
= %00000010

    SPI1_INIT 
()
    
DEBUT
:
 
  for K 
= 0 to 4
    PORTB
.B3 = 0
    DELAY_MS 
(200)
    PORTB.B3 = 1
    DELAY_MS 
(200)
  next K
  
    BLEU
    DELAY_MS 
(500)
    ROUGE
    DELAY_MS 
(500)

    GOTO DEBUT
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » mar. 5 janv. 2016 22:20

Personne n'a une petite idée?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » mar. 5 janv. 2016 22:33

Hello Gérard,

Le texte apparait en rouge a cause de ' qui doit être considéré comme un caractère définissant une couleur .

ça ne veut pas comme j'aimerais ...

Il faudrait que tu sois plus explicite ? les leds s'allument ? etc ....

Je connais pas MikroBasic , sans passer par le SPI tu arrive a faire ce que tu veux des LEDS ?

Pour le SPI i l en faut pas sélectionner l'esclave ? avec un Chip select ?
La valeur de ton OSC est elle conforme au traitement du SPI ? je crois qu'il faut respecter la vitesse

Ne faut il pas déclarer le main comme ceci main: dans ton code tu le mets en commentaire non ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » mar. 5 janv. 2016 22:47

Salut Jérémy,

J'ai un doute quant au 'main:
Je regarde ça demain.

Jai écrit un programme similaire en Proton+, ça fonctionne très bien mais en MikroBasic, ça ne tourne pas.

bonne nuit.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#5 Message par Gérard » mer. 6 janv. 2016 20:38

Le main: est bien dans le programme, c'est une erreur de copié/collé.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 51
Enregistré en : août 2015
Localisation : Dans l'est de la France

#6 Message par sylvain54 » mar. 19 janv. 2016 09:11

(re)Bonjour Gerard,

Pourrais tu nous donner un petit schéma de ton montage ?

++ Sylvain

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#7 Message par Gérard » mar. 19 janv. 2016 17:59

J'ai mis
SPI1_INIT_ADVANCED (_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH)
à la place de SPI1_INIT() et ça fonctionne.

OUF.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » mar. 19 janv. 2016 18:19

Donc quelques choses ce faisait pas ou mal dans l'init "classique" , bizarre !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#9 Message par Gérard » mar. 19 janv. 2016 20:19

Jérémy a écrit :Donc quelques choses ce faisait pas ou mal dans l'init "classique" , bizarre !


c'est ce que je pense aussi. Après, l'interface du WS2801 n'est pas vraiment une SPI classique, je suppose aussi que la config SPI par défaut ne correspond pas à ce qu'attend le WS.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

MikroBasic et SPI
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#10 Message par Gérard » mar. 19 janv. 2016 20:34

Pour Sylvain, pas de schéma mais une photo.
Le 16F88 à gauche et 4 modules WS2801 en version SOIC soudés sur des adaptateurs DIP.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

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