[Programmation] Qui utilise MikroBasic?
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Qui utilise MikroBasic?



  1. #1
    Gérard

    Qui utilise MikroBasic?


    ------

    Bonjour,

    Est ce que quelqu'un utilise ce compilateur? http://www.mikroe.com/mikrobasic/pic/
    J'ai un petit problème avec la liaison SPI.

    Au plaisir de vous lire.

    -----

  2. #2
    adipie

    Re : Qui utilise MikroBasic?

    Bonjour, j'ai utilisé SPI_Ethernet dans un projet de mini serveur Web avec un PIC 18F452.
    Quel est ta question ?

  3. #3
    Gérard

    Re : Qui utilise MikroBasic?

    J'utilise le WS2801 https://www.adafruit.com/datasheets/WS2801.pdf, j'en ai chainé 4 et quand j'écris

    Code:
    
    '*************************************************************
    '    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
    Ca ne fonctionne pas comme attendu.

    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.
    Si je limite la procédure transfert aux 6 premières lignes, ça fonctionne.

  4. #4
    adipie

    Re : Qui utilise MikroBasic?

    Ce code ne peut pas être compilé, il manque Main: (Main program crée une erreur)
    Poste ton code complet, ton schéma et indique quel PIC tu utilises.

  5. A voir en vidéo sur Futura
  6. #5
    Gérard

    Re : Qui utilise MikroBasic?

    Code:
    program WS2801_MIKRO
    
    '--------
    'TEST SPI
    '--------
    
    ' Declarations section
    
        Symbol      DATA_SPI = PORTB.B5    
        Symbol      CLK_SPI  = PORTB.B4     
        
        Dim R_1, G_1, B_1, K      As Byte
    
        Dim R_2      As Byte
        Dim G_2      As Byte
        Dim B_2      As Byte
    
        Dim R_3      As Byte
        Dim G_3      As Byte
        Dim B_3      As Byte
    
        Dim R_4      As Byte
        Dim G_4      As Byte
        Dim B_4      As Byte
    
    '*************************************************************
    '    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
    
    '*************************************************************
    '   S/P RIEN
    '*************************************************************
    
     SUB PROCEDURE RIEN ()
    
        R_1 = 0
        G_1 = 0
        B_1 = 0
    
        R_2 = 0
        G_2 = 0
        B_2 = 0
    
        R_3 = 0
        G_3 = 0
        B_3 = 0
    
        R_4 = 0
        G_4 = 0
        B_4 = 0
    
        TRANSFERT
        Delay_MS (10)
    
    END SUB
    '*************************************************************
    
    main:
    
    '   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)
        RIEN
        DELAY_MS (500)
        ROUGE
        DELAY_MS (500)
        RIEN
        DELAY_MS (500)
    
        GOTO DEBUT
    end.
    Ci-dessus le code complet.
    PIC 16F88, oscillateur interne.

    Je n'ai pas fait de schéma, les liaisons :
    du PIC DATA et CLK vers SDI et CKI du 1et WS
    du 1er WS vers le 2e SDO et CKO vers SDI et CKI
    tel que dans la doc.
    https://www.adafruit.com/datasheets/WS2801.pdf

  7. #6
    adipie

    Re : Qui utilise MikroBasic?

    Je ne suis pas certain que OSCCON bit0 et 1 sont bien configurés ?
    Ne faut il pas mettre 10 au lieu de 00 pour RC interne.

  8. #7
    Gérard

    Re : Qui utilise MikroBasic?

    SCS<1:0>: Oscillator Mode Select bits
    00 = Oscillator mode defined by FOSC<2:0>
    01 = T1OSC is used for system clock
    10 = Internal RC is used for system clock
    11 = Reserved

    Dans les bit de config :
    INTRCoscillator;CLKOfunctionon RA6/OSC2/CLKOpinandportI/OfunctiononRA7/OSC1/CLKIpin

    Ceci me permet de vérifier la fréquence d'oscillation

Discussions similaires

  1. Réponses: 23
    Dernier message: 15/12/2012, 19h17
  2. Pic : Timer et Mikrobasic
    Par v2h dans le forum Électronique
    Réponses: 6
    Dernier message: 10/10/2010, 21h43
  3. Programmation PIC / MikroBasic
    Par invite75cef98f dans le forum Électronique
    Réponses: 8
    Dernier message: 07/06/2010, 17h42
  4. LCD et mikrobasic
    Par KHEOPS1982 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/02/2008, 20h55
  5. question mikrobasic
    Par LTHOMAS dans le forum Électronique
    Réponses: 46
    Dernier message: 15/04/2007, 14h18
Découvrez nos comparatifs produits sur l'informatique et les technologies.