Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

PIC - Interface Ethernet. Compliqué?



  1. #1
    soa118

    PIC - Interface Ethernet. Compliqué?


    ------

    Bonjour

    Je me demandais s'il était compliqué d'utiliser l'interface Ethernet des PIC?
    Alors je ne connais que le minimum en électronique, en langage C/C++ ca va, même si je préfère les langages de plus haut niveau.

    Moi ce que je voulais faire, juste le fun, c'était juste un PIC qui contrôle des E/S (LED, relais, boutons,....) et qui renvoie/reçoive les états des sorties (ou autre info calculé) sous forme de fichier xml, via réseau à une adresse défini.

    A la limite un mini server http qui affiche une page basique avec les info quand je me connecte au PIC à distance.

    Donc voilà sur le fond c'est tout bête. Mais je ne sais pas si c'est dû à réaliser ou pas, respectivement si les divers couches logicielles que Microchip fourni facilite la tâche ou pas (il me semble qu'ils fournissent un stack TCP/IP c'est qui est déjà pas mal).

    Donc voilà si vous me dite que c'est pas évident et qu'il y a pas de code source dispo qui m'aiderait, je laisserais tomber pour ne pas perdre pas mon temps à me documenter sur un truc qui n'est pas à ma portée.

    Voilà merci.

    -----

  2. Publicité
  3. #2
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Je viens de voir qu'il y a ce genre de server web:
    http://www.olimex.com/dev/pic-mini-web.html



    Peut-être qu'il serait plus simple d'en acheter un comme ca et de modifier le code.

  4. #3
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    La pile TCPIP de Microchip est en langage C (gratuite) et téléchargeable dans les librairies.
    Une fois installées tu auras les sources de :
    * la stack TCPIP
    * la stack USB
    * les librairies graphiques couleurs tactiles jusqu'à la résolution WQVGA (480 x 272)
    * la gestion des FAT16/32
    * divers projets qui utilisent ces stacks.

    Pour le TCPIP il existe plusieurs projets dont un webserver qui est visible ici.

    Ensuite tu télécharges MPLAB et le compilateur adéquat.

    Si tu n'as pas envie de t'ennuyer avec le hard, il existe des petits modules tous faits de chez OLIMEX qui utilisent les PICs ethernet et sur lesquels tu peux reflasher ta propre application. Pour pouvoir faire cela il faudra simplement acheter un outil de programmation Pickit3 + petit adaptateur RJ11 <--> ICSP pour le connecteur (je crois)

    Tu peux te faire aider sur le forum dédié à l'ethernet sur les PICs ou il y a des cadors comme Jamodio.

    a+
    Dernière modification par RISC ; 04/02/2010 à 14h55.

  5. #4
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Donc c'est du domaine du faisable pour un amateur d'après toi ?

  6. A voir en vidéo sur Futura
  7. #5
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    Tout dépend de tes objectifs. Programmer un microcontroleur demande un investissement certain en temps et s'attaquer à une pile TCPIP n'est pas du gateau...
    Le monde des microcontroleurs est différent de celui du PC. Des ressources très limitées en mémoire et en performance...

    Il existe des modules tous fait style bridge UART <==> Ethernet qui permettent de voir un système comme une boite noire mais ils ne sont pas donnés et on peut seulement utilisés les blocs RFC implémentés.

    Si tu te lances dans ce projet avec un PIC soit près à passer des semaines voire des mois...

    a+

  8. #6
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Pas mal le Stack TCP/IP de Microchip. A première vue j'ai pas de gros changement à faire pour ce que je comptais faire, même si niveau code c'est moins évidemment que je ne le pensais, mais bon, ca m'occupera les weekend.
    J'ai regardé du côté d'ATMEL, il y n'y a pas d'équivalent en terme de couche logiciel.

    Sinon j'ai une question. Vous sauriez où on peut trouver ce genre de platine qui contient déjà le PIC (de préférence avec un PIC18F97J60)?


    Je ne trouve que des platines sans PIC du genre:


    Or c'est trop petit pour que je le soude à la mains :/

    merci

  9. Publicité
  10. #7
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    Ce genre de modules n'existe pas à ma connaissance. Tout ce qui touche à l'ethernet est délicat au niveau routage car on est dans le domaine de l'analogique et il faut adapter les impédances...On évite donc de mettre le processeur sur une mezzanine...

    Achète toi directement une platine toute cablée avec des E/S , ...comme celle de OLIMEX : http://www.olimex.com/dev/pic-maxi-web.html

    Il te faut ensuite juste un programmateur Pickit3 ou Pickit2.

    a+

  11. #8
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    A vrai dire ca ne m'arrange pas trop ces cartes.

    La PIC-WEB ne possède pas assez de sorties à mon goût. La PIC18F67J60 d'Olimex me conviendrait, le problème avec ces deux cartes c'est que leur seul bus SPI est déjà utilisé par l'EEPROM, or il m'en faudrait un de SPI dispo.

    La PIC-MAXI-WEB a un deuxième bus dispo, néanmoins la carte est trop grande à mon goût et avec trop de chose inutile.

  12. #9
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    Rien ne t'empèche de vampiriser une carte ou de couper des pistes ;=)

    Il y a encore d'autres boites qui vendent des modules à base de PIC18 ethernet :
    * http://www.ljcv.net/
    * http://www.modtronix.com/index.php

    Fais ton choix ;=)

    a+

  13. #10
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Pas mal celle là, et très compact en plus:


    Faudrait juste que je coupe les ligne qui mène à l'eeprom (i2c), car sinon je pourrais pas utiliser ces lignes en mode SPI.

    Par contre il n'utilise pas de puce réseau Microchip, mais Realtek, je serait obliger d'utiliser leur firm à eux, qui d'ailleurs ne semble pas très à jour comparé aux Stack de Microchip.

    A voir donc.

    J'avais pensé à faire souder les PIC sur un adaptateur:
    http://www.proto-advantage.com/store...cs3a85lrqv7ak4

    Pas excessivement cher.

  14. #11
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Rooh j'ai trouvé mon bonheur.


    Avec bus 1-Wire (cool j'en avais aussi besoin pour des capteur de température)

  15. #12
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Bon après avoir examiné le circuit il y a un truc qui me dérange, et questions qui en découlent.

    La puce supporte 2 MSSP (SPI ou I2C au choix), c'est bien, ca me convient. Or il y a déjà une de ses lignes qui est configuré en I2C pour les puce EEPROM, RAM et RTC (+ possibilité via des pins de rajouter d'autre puces I2C).

    Il me faut un port ethernet. Ok alors c'est le deuxième port SPI qui sera utilisé à cet effet. Or après je n'en aurais plus de disponible :/, alors qu'il me faudra un port SD en SPI p.ex.

    D'où les questions suivantes:
    • A la base l'SPI on peut y fixer autant de périphérique qu'on veut, suffit d'utiliser le pin "chip select". Or est-ce que ce qu'on peut l'utiliser sur la puce qui gère l'ethernet sans avoir de soucis?
      Car bon, si je dois désactiver l'ethernet pour pouvoir écrire sur la carte SD, bof bof, le serveur ne sera plus accessible de temps en temps, même si c'est des intervalles assez courts c'est assez embêtant.

    • D'où l'idée d'utiliser un SPI propre à l'ethernet et rien qu'à lui. Le problème est le suivant. Est-ce qu'on peut utiliser les pins de l'autre port I2C/SPI en mode SPI alors qu'il y a des puces I2C branchées dessus??? Les résistances pullup de l'I2C poseront problème non? (Ok ces puces I2C ne fonctionneront pas en mode SPI, ca ne me dérange pas).

    Merci

  16. Publicité
  17. #13
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    N'ajoute surtout pas de périphérique SPI sur un bus SPI relié au chip Ethernet...

    Pour l'autre, le plus simple serait de "couper" les broches I2C coté PIC pour ne pas être ennuyé (seulement 2 broches).

    a+

  18. #14
    invite9865321

    Re : PIC - Interface Ethernet. Compliqué?

    Si tu ne veux pas tenmerde pour la programmation de ton pic...vise MikroC de microe....leur librairy est géniale et l'éthernet est magnifique et fonctionne nickel...

    Perso je suis fan quand c'est pour de la prog rapide.
    Après tu peut tt faire en assembleur...mais bon...à toi de voir.

  19. #15
    soa118

    Re : PIC - Interface Ethernet. Compliqué?

    Citation Envoyé par RISC Voir le message
    Salut,
    N'ajoute surtout pas de périphérique SPI sur un bus SPI relié au chip Ethernet...
    Je viens de regarder plus en détail et c'est encore plus tordu que ca leur choix.

    En fait la ligne SPI (N°2) est reliée aux 4 zones qui servent d'extension, en soit c'est pas grave, en principe sur les 4 emplacements seul une extension de type ethernet en aurait besoin. Le truc tordu c'est que ce même SPI (N°2) et relié à une puce Ram, et pire, le comble, à la mémoire flash 4Mo qui est en fait supposé contenir les pages web.

    C'est un bien mauvais choix sachant que bon quand on accède aux page web ben ca se fera logiquement par le port ethernet. J'imagine que le changement à la volé de périphérique SPI entraine de sacrée baisse de perf. (Sauf si les pages web sont préchargé en ram du processeur, mais bon il y a pas autant de place).

    Citation Envoyé par RISC Voir le message
    Pour l'autre, le plus simple serait de "couper" les broches I2C coté PIC pour ne pas être ennuyé (seulement 2 broches).
    Couper non car c'est les mêmes pin que pour le SPI N°1.
    Le canal N°1, il est en mode I2C pour une EEPROM et une puce RTC et 3 connecteurs pour y rajouter d'autre périphérique.
    En soit celui-là me semble ok, la puce RTC m'est utile. Je pourrais changer à la volé ce canal N°1 en SPI pour accéder à une carte SD temporairement avant de repasser en mode I2C.

    Mais voilà j'arrive pas à trouver si les résistances des pull-up propre à l'I2C pose problème en mode SPI (vu que c'est en partie les mêmes pins), et aussi si ca ne dérange pas trop les puces I2C.
    Bon j'ai trouvé cette carte qui utilise soit le spi ou l'i2c le out sur un même canal, j'en déduis que les pull-up I2C ne pose pas problème, ca m'étonne, mais bon tant mieux.

    A vrai dire je pense que je vais encore chercher une autre carte, bon sang pourquoi ils n'ont pas directement choisi la variante avec ethernet intégré au PIC, ca aurait laissé les 2 maigre SPI/I2C dispo.
    Je sens que je vais opter pour des PIC24 ou plus qui ont plus de canaux, mais c'est du gâchis quand même :/
    Citation Envoyé par moustiqu3 Voir le message
    Si tu ne veux pas tenmerde pour la programmation de ton pic...vise MikroC de microe....leur librairy est géniale et l'éthernet est magnifique et fonctionne nickel...

    Perso je suis fan quand c'est pour de la prog rapide.
    Après tu peut tt faire en assembleur...mais bon...à toi de voir.
    Ca se programme très bien en langage C. Et c'est d'ailleurs le côté programmation qui m'intéresse, ca me changera du Java et .Net .
    Sinon pour la librairie Microchip a déjà le nécessaire (Stack TCP/IP)

  20. #16
    makoa

    Re : PIC - Interface Ethernet. Compliqué?

    salut
    je j'ai aussi un projet similaire que vous vient de discuter,en fait j'ai trouver un code qui pourrait servir de l'exemple.ce code est en C et + precisement compiler en mikro C pro pour pic,il utilise l'enc28j60 et le pic18f4520,mais sur mon projet j'utilise le pic16f877a.voici donc le code:
    // configuration des duplexes
    #define Spi_Ethernet_HALFDUPLEX 0x00 //halfduplex
    #define Spi_Ethernet_FULLDUPLEX 0x01 //fullduplex
    // mE ehternet NIC pinout
    sfr sbit SPI_Ethernet_Rst at RC0_bit;
    sfr sbit SPI_Ethernet_CS at RC1_bit;
    sfr sbit SPI_Ethernet_Rst_Direction at TRISC0_bit;
    sfr sbit SPI_Ethernet_CS_Direction at TRISC1_bit;
    // end ethernet NIC definitions

    const char httpHeader[] ="HTTP/1.1 200 OK\nContent-type:"; //HTTP header
    const char httpMimeTypeHTML[] = "text/html\n\n"; //HTML MIME type
    const char httpMimeTypeScript[] ="text/plain\n\n"; //TEXT MIME type
    //unsigned char httpMethod[]="GET/";
    //page html par defaut
    char indexPage[]=
    "<html><head><title>asanak ay</title></head><body>\
    <h1 align=center>asanakay:mi_comma nde sy mampiretra motro</h1>\
    <form name=\"Input=\"action=\"/\"method=\"get\"> \
    <table align=center width=200bgcolor=#4974E2 border=2><tr>\
    <td align=center colspan=2><font size=4color=white><b>mi-commande</b></font>\
    </td></tr><tr><td align=center bgcolor=#4974E2 ><input name=\"tst1\"width=60\
    type=\"submit\"value=\"MIRETRA \"></td>td align =center bgcolor=#FFFF00 >\
    <input name =\"test2\"type=\submit\"value= \"MATY\"></td></tr></table>\
    </form> \
    </body> \
    </html>" ;

    char myMacAddr[6]={0x00, 0x24, 0x8C, 0xD2, 0xD3, 0x0A}; //addresse Mac
    char myIpAddr[4]={192,168,1,101}; // addresse IP
    char gwIpAddr[4]= {192,168,1,1}; //geteway
    char dnsIpAddr[4]= {192,168,0,254}; // addresse DNS
    char IpMask[4]= {255,255,255,0}; // mask de reseau
    //fin parametre reseau

    unsigned char getRequest[20]; //HTTP request buffer
    //#define putConstString SPI_Ethernet_putConstString
    //#define putString SPI_Ethernet_putString
    unsigned int SPI_Ethernet_UserTCP(unsigned char*remoteHost,unsigned int remotePort,unsigned int localport,unsigned int reqLength)
    {
    unsigned int len;
    if(localport!=80)
    return(0); //I listen only to web requet on port 80
    //get 10 first bytes only of the request,the rest does not matter here

    for(len=0;len<15;len++)getRequ est[len]=SPI_Ethernet_getByte();
    getRequest[len]=0;
    //len=0;
    if(memcmp(getRequest,"GET/",5))return(0); //only GET methode
    /*httpCounter++ ;*/
    if(!memcmp(getRequest+11,"MIRE TRA",2))
    PORTB.F0=1;
    else
    if(!memcmp(getRequest+11,"MATY ",3))
    PORTB.F0=0;
    if(PORTB.F0)
    {
    memcpy(indexPage+340,"#FFFF00" ,6);
    memcpy(indexPage+431,"#4974E2" ,6);
    }
    else
    {
    memcpy(indexPage+340,"#4974E2" ,6);
    memcpy(indexPage+431,"#FFFF00" ,6);
    }
    len=SPI_Ethernet_putConstStrin g(httpHeader);
    len+=SPI_Ethernet_putConstStri ng(httpMimeTypeHTML);
    len+=SPI_Ethernet_putString(in dexPage);
    return len; //return to library

    }
    unsigned int SPI_Ethernet_UserUDP( char*remoteHost,unsigned int remotePort,unsigned int destport,unsigned int reqLength)
    {
    return 0; //revenir dann le library

    }http://forums.futura-sciences.com/im...ilies/bras.gif
    void main()
    {
    ADCON1|=0x0F;
    CMCON|=0x07;
    PORTB.F0=0;
    TRISB.F0=0;
    //strar ENC28J62 with:reset bit on PORTB.B0,CS bit on PORT.B1,my MAC&IP address,full duplex
    SPI1_Init();
    SPI_Ethernet_Init(myMacAddr,my IpAddr,Spi_Ethernet_FULLDUPLEX );
    //SPI_Ethernet_confnetwork(IpMas k,gwIpAddr,dnsIpAddr);
    while(0)
    {
    SPI_Ethernet_doPacket();
    }[/COLOR]
    }
    et après compilation ça donne d resultats,il trouve l'addresse Ip et mac,mais mon pbm voila:
    -SPI1_Init();cad si j'initialisse le SPI_Init alors après compilation il me dit que SPI_Init n'est pas declaré de meme pour SPI_Ethernet_Init(&PORTC,0,POR TC,1,myMacAddr,myIpAddr,Spi_Et hernet_FULLDUPLEX);
    SPI_Ethernet_confnetwork(IpMas k,gwIpAddr,dnsIpAddr);et finalement si je boucle à 1 cad while(1) ce programme call signature does not match the function definition SPI_Ethernet_User
    aider moi svp

  21. #17
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut Makoa,

    Je ne connais pas la pile TCPIP de Mikroe pour les PIC mais....je doute fortement que tu puisses la faire tourner sur un PIC16 (pas assez de RAM et de FLASH je pense). Vérifie sur le forum de Mikroe avant de perdre ton temps...
    Je pense qu'un PIC18 est le minimum vital...

    a+

  22. #18
    makoa

    Re : PIC - Interface Ethernet. Compliqué?

    salut RISC
    j ne commande pas de grand chose mais juste ellumer="miretra" et etteindre="maty" une lampe je pense que ca n'exige pas bcp de memoire RAM,puis est ce que t'as une idée d'un logiciel electronique pour la realisation de ce carte ethernet sur une plaquette

  23. Publicité
  24. #19
    RISC

    Re : PIC - Interface Ethernet. Compliqué?

    Salut,

    Le PB c'est pas tes 2 leds mais la taille des trames TCPIP ;=)
    Cherche sur internet. Tu verras que la plupart des projets sont faits avec des PIC18.

    Si tu veux des exemples de schémas regardes les cartes de OLIMEX faites à partir de PIC : http://olimex.com/dev/pic-micro-web.html

    a+

    a+

  25. #20
    makoa

    Re : PIC - Interface Ethernet. Compliqué?

    salut RISC
    j'ai suivi votre suggestion et t'as raison.A present je te demande as tu une idée si je mets 1 rs232 a la sortie de microcontroleur ?

  26. #21
    guillaume83

    Re : PIC - Interface Ethernet. Compliqué?

    bonjour,
    je ne peux que vous conseiller d'acheter des platinestoute faites , cela permet de se concentrer sur le cotés locigiel en cas de problémes.
    je me suis lancé dans la fabrication d' une picdem.net
    et le prix de revient est le meme que si j'avais acheté une pic web d' olimex (par exemple)plus pas mal d'heures sur la conception de la plaque, la soudure du pic ,bref au final tout marche bien , mais j y ai passé pas mal de soirées.
    Si vous utilisez un pic 18f97J60 le port ethernet est dirctement relié au pic , vous pouvez meme charger les pages dns la memoire interne du pic (celles de la demos rentrent et il y a dejas de quoi faire) donc les port spi libres.
    @+

  27. #22
    makoa

    Re : PIC - Interface Ethernet. Compliqué?

    RISC
    je demande si met un RS232 a la sorie du microcontroleur pic ,est-ce que c'est possible?il faut utiliser l'interface UART?

  28. #23
    jerdream

    Smile Re : PIC - Interface Ethernet. Compliqué?

    Citation Envoyé par makoa Voir le message
    salut
    je j'ai aussi un projet similaire que vous vient de discuter,en fait j'ai trouver un code qui pourrait servir de l'exemple.ce code est en C et + precisement compiler en mikro C pro pour pic,il utilise l'enc28j60 et le pic18f4520,mais sur mon projet j'utilise le pic16f877a.voici donc le code:
    // configuration des duplexes
    #define Spi_Ethernet_HALFDUPLEX 0x00 //halfduplex
    #define Spi_Ethernet_FULLDUPLEX 0x01 //fullduplex
    // mE ehternet NIC pinout
    sfr sbit SPI_Ethernet_Rst at RC0_bit;
    sfr sbit SPI_Ethernet_CS at RC1_bit;
    sfr sbit SPI_Ethernet_Rst_Direction at TRISC0_bit;
    sfr sbit SPI_Ethernet_CS_Direction at TRISC1_bit;
    // end ethernet NIC definitions

    const char httpHeader[] ="HTTP/1.1 200 OK\nContent-type:"; //HTTP header
    const char httpMimeTypeHTML[] = "text/html\n\n"; //HTML MIME type
    const char httpMimeTypeScript[] ="text/plain\n\n"; //TEXT MIME type
    //unsigned char httpMethod[]="GET/";
    //page html par defaut
    char indexPage[]=
    "<html><head><title>asanak ay</title></head><body>\
    <h1 align=center>asanakay:mi_comma nde sy mampiretra motro</h1>\
    <form name=\"Input=\"action=\"/\"method=\"get\"> \
    <table align=center width=200bgcolor=#4974E2 border=2><tr>\
    <td align=center colspan=2><font size=4color=white><b>mi-commande</b></font>\
    </td></tr><tr><td align=center bgcolor=#4974E2 ><input name=\"tst1\"width=60\
    type=\"submit\"value=\"MIRETRA \"></td>td align =center bgcolor=#FFFF00 >\
    <input name =\"test2\"type=\submit\"value= \"MATY\"></td></tr></table>\
    </form> \
    </body> \
    </html>" ;

    char myMacAddr[6]={0x00, 0x24, 0x8C, 0xD2, 0xD3, 0x0A}; //addresse Mac
    char myIpAddr[4]={192,168,1,101}; // addresse IP
    char gwIpAddr[4]= {192,168,1,1}; //geteway
    char dnsIpAddr[4]= {192,168,0,254}; // addresse DNS
    char IpMask[4]= {255,255,255,0}; // mask de reseau
    //fin parametre reseau

    unsigned char getRequest[20]; //HTTP request buffer
    //#define putConstString SPI_Ethernet_putConstString
    //#define putString SPI_Ethernet_putString
    unsigned int SPI_Ethernet_UserTCP(unsigned char*remoteHost,unsigned int remotePort,unsigned int localport,unsigned int reqLength)
    {
    unsigned int len;
    if(localport!=80)
    return(0); //I listen only to web requet on port 80
    //get 10 first bytes only of the request,the rest does not matter here

    for(len=0;len<15;len++)getRequ est[len]=SPI_Ethernet_getByte();
    getRequest[len]=0;
    //len=0;
    if(memcmp(getRequest,"GET/",5))return(0); //only GET methode
    /*httpCounter++ ;*/
    if(!memcmp(getRequest+11,"MIRE TRA",2))
    PORTB.F0=1;
    else
    if(!memcmp(getRequest+11,"MATY ",3))
    PORTB.F0=0;
    if(PORTB.F0)
    {
    memcpy(indexPage+340,"#FFFF00" ,6);
    memcpy(indexPage+431,"#4974E2" ,6);
    }
    else
    {
    memcpy(indexPage+340,"#4974E2" ,6);
    memcpy(indexPage+431,"#FFFF00" ,6);
    }
    len=SPI_Ethernet_putConstStrin g(httpHeader);
    len+=SPI_Ethernet_putConstStri ng(httpMimeTypeHTML);
    len+=SPI_Ethernet_putString(in dexPage);
    return len; //return to library

    }
    unsigned int SPI_Ethernet_UserUDP( char*remoteHost,unsigned int remotePort,unsigned int destport,unsigned int reqLength)
    {
    return 0; //revenir dann le library

    }http://forums.futura-sciences.com/im...ilies/bras.gif
    void main()
    {
    ADCON1|=0x0F;
    CMCON|=0x07;
    PORTB.F0=0;
    TRISB.F0=0;
    //strar ENC28J62 with:reset bit on PORTB.B0,CS bit on PORT.B1,my MAC&IP address,full duplex
    SPI1_Init();
    SPI_Ethernet_Init(myMacAddr,my IpAddr,Spi_Ethernet_FULLDUPLEX );
    //SPI_Ethernet_confnetwork(IpMas k,gwIpAddr,dnsIpAddr);
    while(0)
    {
    SPI_Ethernet_doPacket();
    }[/COLOR]
    }
    et après compilation ça donne d resultats,il trouve l'addresse Ip et mac,mais mon pbm voila:
    -SPI1_Init();cad si j'initialisse le SPI_Init alors après compilation il me dit que SPI_Init n'est pas declaré de meme pour SPI_Ethernet_Init(&PORTC,0,POR TC,1,myMacAddr,myIpAddr,Spi_Et hernet_FULLDUPLEX);
    SPI_Ethernet_confnetwork(IpMas k,gwIpAddr,dnsIpAddr);et finalement si je boucle à 1 cad while(1) ce programme call signature does not match the function definition SPI_Ethernet_User
    aider moi svp
    Bonsoir à tous,

    Je vous pose mon problème, j'ai un projet a faire pour mon BTS qui est de créer un boitier pour pouvoir contrôler un logiciel sur un PC avec qui je communiquerai en TCP/IP ou en UDP.
    Donc je suis avec un technicien de ma société qui m'aide, il à une carte Easypic 5 avec un 16F877A mais on va surement acheter un 18F4520, on a acheté aussi un module Ethernet ENC28J60 et un LCD
    128 x 64 optionnel avec sa dalle tactile (mais sa on verra plus tard).
    On utilise Mikrobasic pro et on viens d'acheter la licence.

    Voici un bout de code que j'ai tapé, je connais pas très bien le basic car je suis plus C que je connais assez pour programmer mais sa y ressemble fortement:

    Code:
    program test_send_UDP
    
    
    ' mE ehternet NIC pinout
    dim SPI_Ethernet_RST as sbit at RC0_bit
    dim SPI_Ethernet_CS as sbit at RC1_bit
    dim SPI_Ethernet_RST_Direction as sbit at TRISC0_bit
    dim SPI_Ethernet_CS_Direction as sbit at TRISC1_bit
    ' end mE ehternet NIC pinout
    
    
    ' Declarations section
    dim AddMac as byte [6]     '
    dim AddIp as byte [4]   '
    dim ServeurIp as byte [4]
    dim FULLDUPLEX as byte
    'dim msg1 as char [1]
    
    
    const SPI_Ethernet_HALFDUPLEX = 0
    const SPI_Ethernet_FULLDUPLEX = 1
    
    sub function SPI_Ethernet_UserTCP(dim byref remoteHost as byte[4],dim remotePort, localPort, reqLength as word) as word
    
        result = 0
    end sub
    
    sub function SPI_Ethernet_UserUDP(dim remoteHost as ^byte, dim remotePort as word, dim destPort as word, dim reqLength as word) as word
    result = 0
     end sub
    
    sub function SPI_Ethernet_sendUDP(dim byref destIP as byte[4], dim sourcePort, destPort as word, dim pkt as ^byte, dim pktLen as word) as byte   result = 0
    result = 0
    
    end sub
    
    main:
    
     ADCON1 = 0x0F   ' On force les ports en numérique
     CMCON = 0X07    ' On bloque les comparateurs
     TRISA =  255
    
    
     AddMac [0] = 0X00
     AddMac [1] = 0X14
     AddMac [2] = 0XA5
     AddMac [3] = 0X76
     AddMac [4] = 0X19
     AddMac [5] = 0X3F
    
     AddIp [0] =  192
     AddIp [1] =  168
     AddIp [2] =  20
     AddIp [3] =  60
    
     ServeurIp [0] =  192
     ServeurIp [1] =  168
     ServeurIp [2] =  20
     ServeurIp [3] =  30
    
    
    
    'msg1= "H"
    SPI1_Init()
    SPI_Ethernet_Init(AddMac, AddIp, SPI_Ethernet_FULLDUPLEX)
    
    while True
    while PORTA.0 = 1
    Wend
    SPI_Ethernet_sendUDP(ServeurIp, 10001, 55070, "h", 1) ' send Hello message to the above IP address, from UDP port 10001 to UDP port 10001
    
    
    wend
    
    end.
    Mes grandes questions sont, pourquoi quand je connecte mon module il arrive pas a se synchronisé correctement avec mon ordinateur (sur seven), j'ai compris qu'il faut initialisé le module avec les fonctions SPI1_Init() et SPI_Ethernet_Init(AddMac, AddIp, SPI_Ethernet_FULLDUPLEX).

    J'ai remarqué aussi que l'on pouvais configurer le réseau avec cette fonction SPI_Ethernet_confNetwork().

    Une dernière question comme dois je mis prendre pour innitialisé mon module ethernet et pour voir envoyer un message par exemple "halt" (en chaine de caractère) en UDP ou TCP à mon logiciel sur le pc qui utilise le PORT 3040.


    Je vous remercie tous d'avance et j'espère que vous allez pouvoir me renseigner.

    tchao à tous

  29. #24
    futur95

    Re : PIC - Interface Ethernet. Compliqué?

    Bonjour à tous!

    Je rémonte le sujet car je voulais savoir finalement quelle solution technique à été retenue pour la communication de ton PIC via un port eternet qui remonte des fichier XML? Quelle a été la difficulté de programmation?

    Serait-ce possible un mp avec soa pour que tu me mette le pied à l'étrier, stp?

  30. Publicité

Discussions similaires

  1. pic 16F873 et interface
    Par fopic dans le forum Électronique
    Réponses: 2
    Dernier message: 16/09/2009, 18h54
  2. PIC avec C et interface VB????
    Par electrofun dans le forum Électronique
    Réponses: 0
    Dernier message: 24/05/2006, 14h59
  3. Interface ethernet > IDE
    Par rut1269 dans le forum Électronique
    Réponses: 4
    Dernier message: 02/11/2004, 23h32
  4. Modem USB contre modem à interface Ethernet
    Par Tom-Tom dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 13/05/2004, 18h49
  5. interface 300 sorties pilotes sur port ethernet
    Par djgo dans le forum Électronique
    Réponses: 4
    Dernier message: 12/06/2003, 07h33
Découvrez nos comparatifs produits sur l'informatique et les technologies.