[Programmation] PIC C18 chaine de caractère et I2C
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

PIC C18 chaine de caractère et I2C



  1. #1
    Leo_Isere

    PIC C18 chaine de caractère et I2C


    ------

    Bonjour, ce n'est pas dans mes habitude de demander de l'aide dans les forum mais la je pèche vraiment... après deux jours à fouiller tous les forum du web et à essayer dans tous les sens. Mais là je bug complète (enfin j'ai plus l'impression que c'est Mplab X IDE qui bug)

    Le projet : j'essaye de faire communiquer plusieurs PIC 18f4550 entres eux (l'un gère un 4*16 LCD, l'autre les entrés (boutons de commande, encodeur,...) un autres les capteur de température DTS et les relais...

    J'ai décider de les faire communiquer par I2C afin d'avoir plusieurs esclave et potentiellement deux maitres.

    J'ai commencé à programmé avec HTC
    La gestion du LCD : pas de problème.
    L'I2C : impossible de faire communiquer deux PIC entres eux. Une simple écriture et le PIC esclave ne capte pas l'écriture...
    J'ai pris des routines toutes faites, j'ai réécrit mes propres routine (Merci Bigonoff )mais rien n'y fait...

    Du coup j'ai décider de migrer vers C18 où il existe des bibliothèques toutes faite pour l'I2C. Et la incompréhension total :


    Code:
    #include <p18f4550.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <delays.h>
    #include <string.h>
    #include <i2c.h>
    
    ...
    
       OpenI2C(MASTER, SLEW_ON);
        SSPADD = 49; // Quartz de 20Mhz pour f= 400Khz
        
        IdleI2C();            
       StartI2C();           
        IdleI2C();
        WriteI2C(0x10); // PIC #2 adresse w:0x10 e: 0x11
        IdleI2C();
        StopI2C();
    J'ai comme message d'erreur: could not find definition of symbol 'WriteI2C' in file './build/default/production/main.o'.

    pourtant lorsque j'efface le WriteI2C, pas de souci le code s'exécute sans problème (sur KitPIC3) y compris les autres routines comprise dans I2C.h ... Mystère complet...

    Autre problème qui me fait tourner en rond : sur HTC j'ai créer une routine pour écrire une chaine de caractère à une adresse précise sur l'LCD du type

    Code:
     void lcd(unsigned char text[], unsigned char adresse);
    
    main(){
    
            lcd("Text a écrire",40);
    
    }
    
    void lcd_txt(unsigned char text_lcd[], unsigned char adresse){
            
            // Routine de gestion de l'adresse ..
            int i;
            int l ;
            l = strlen(text_lcd);
            for(i=0;i<=l;i++){
                    if(text_lcd[i]!=0){
                    lcd_lettre(text_lcd[i]);
                    }
            }
    
    }
    Sur C18: impossible de faire une routine simple, j'ai du finter en faisant un truc sale du style :

    Code:
            main(){
            char txt[];
    
            sprintf(txt,"Test");
    	lcd(txt,1);
    }
    
    void lcd(char txt[], unsigned char add){
     ....
    }
    N'y à t'il pas moyen de transmettre plus simplement une chaine de caractère provenant du programme à une autre fonction directement en argument?

    Un énorme merci d'avance si quelqu'un peu m'aider à avancer un peu face à ce casse tête.

    -----

  2. #2
    RISC

    Re : PIC C18 chaine de caractère et I2C

    Salut,

    Pourquoi as tu fait des essais avec les vieux compilateurs non supportés (C18 et HTC) ? Le compilateur XC8 est le successeur de C18 et HTC mais au niveau syntaxe il est le successeur de HTC (originellement HiTech).
    Par contre, si tu veux utiliser les librairies, le XC8 ne possède effectivement pas de librairies
    Par contre si tu utilises le plugin MCC dans MPLAB X , il possède des librairies I2C (je suis sur pour les PIC16 mais à vérifier pour les PIC18)

    a+
    Dernière modification par RISC ; 19/03/2017 à 21h18.

  3. #3
    Leo_Isere

    Re : PIC C18 chaine de caractère et I2C

    J'avais effectivement pas connaissance de ce compilateur.
    Je le télécharge et revient au nouvelles.
    Merci

Discussions similaires

  1. [C] chaine de caractère.
    Par invite38d9e885 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 26/12/2015, 12h05
  2. [C] Concaténer chaine de caractère + caractère
    Par invite48ca7510 dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 26/01/2013, 12h43
  3. chaîne de caractère
    Par invite9c4bf030 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 02/04/2012, 20h30
  4. chaine de caractère
    Par invite9f95f6e7 dans le forum Programmation et langages, Algorithmique
    Réponses: 27
    Dernier message: 01/01/2012, 18h38
  5. chaîne de caractère
    Par invite9f95f6e7 dans le forum Programmation et langages, Algorithmique
    Réponses: 15
    Dernier message: 01/01/2012, 16h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...