PIC<- rs 232 - > ATMEL
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

PIC<- rs 232 - > ATMEL



  1. #1
    invitefa459f84

    PIC<- rs 232 - > ATMEL


    ------

    Salut tout le monde,

    Voilà mon soucie, j’essais de faire communiquer un PIC( 12f629) avec un Atmel (AT91SAM9260) via le protocole RS 232. Jusque là c’est claire.
    L’atmel (at91) et sur une carte d’évaluation la (AT91SAM9260-EK), le pic lui et sur une carte easyPIC5.
    Sur la carte d’atmel y a un linux embarqué et pour le PIC j’utilise mikroC pour codé.
    Entre l’ordinateur et l’atmel, j’envois et je reçois des données, via l’hyper terminal, sans problème.

    Le soucie c’est que je reçois rien depuis le PIC. Les données sont envoyées, mais ils ne s’affichent pas. Par contre si j’enlève le câble du PIC et je le mets sur mon ordinateur, il suffit que j’appuis sur entré dans l’hyperTerminal et les donnés qui étaient sensées s’afficher avant, se montrent. Voilà un peu le problème. C’est comme si les données étaient stockées quelque parts. Si vous avez une piste ou une idée, je serai très reconnaissant.

    voici les code que j'utilise:
    the code for writing
    Code:
    #include <stdio.h>
    #include <string.h>
    
    #include <unistd.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <termios.h>
    
    int initport(int portCom) {
        struct termios options;
        // Get the current options for the port...
        tcgetattr(portCom, &options);
        // Set the baud rates to 9600..
        cfsetispeed(&options, B115200);
        cfsetospeed(&options, B115200);
        // Enable the receiver and set local mode...
        options.c_cflag |= (CLOCAL | CREAD);
    
        options.c_cflag &= ~PARENB;
        options.c_cflag &= ~CSTOPB;
        options.c_cflag &= ~CSIZE;
        options.c_cflag |= CS8;
    
        // Set the new options for the port...
        tcsetattr(portCom, TCSANOW, &options);
        return 1;
    }
    int portCom;
    int main(){
    
        portCom = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
        if (portCom == -1) {
            printf("port enable to open");
            perror("open_port: Unable to open /dev/ttyS0 - ");
            return 1;
        }else{
        printf("ofor wriiiting\n");
        }
        initport(portCom);
    while(1==1){
        usleep(10000);
        if(write(portCom,"coming",6)){
        printf("writen\n");
    }
    }
        close(portCom);
    }
    the code for reading:
    Code:
    #include <stdio.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <termios.h>
    
    int initport(int portCom) {
        struct termios options;
        // Get the current options for the port...
        tcgetattr(portCom, &options);
        // Set the baud rates to 9600..
        cfsetispeed(&options, B115200);
        cfsetospeed(&options, B115200);
        // Enable the receiver and set local mode...
        options.c_cflag |= (CLOCAL | CREAD);
    
        options.c_cflag &= ~PARENB;
        options.c_cflag &= ~CSTOPB;
        options.c_cflag &= ~CSIZE;
        options.c_cflag |= CS8;
        // Set the new options for the port...
        tcsetattr(portCom, TCSANOW, &options);
        return 1;
    }
    int portCom;
    char word[254];
    int main(){
        portCom = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY);
        if (portCom == -1) {
            printf("port enable to open");
            perror("open_port: Unable to open /dev/ttyS0 - ");
            return 1;
        }else{
        fcntl(portCom, F_SETFL, 0);
        //fcntl(portCom, F_SETFL, FNDELAY);
        printf("for reading\n");
        }
        initport(portCom);
    //while(1==1){  
    usleep(100000);
        int iIn = read(portCom, word, 254);
        word[iIn-1] = 0x00;
        if (iIn < 0) {
            if (errno == EAGAIN) {
                printf("SERIAL EAGAIN ERROR\n");
                return 0;
            } else {
                printf("SERIAL read error %d %s\n", errno, strerror(errno));
                return 0;
            }
        }
        printf("\n%s",word);
    //}
    close(portCom);
    }

    -----

  2. #2
    invitefa459f84

    Re : PIC<- rs 232 - > ATMEL

    j'ai trouvé en envoi un saut de ligne, (0x0A)

Discussions similaires

  1. rs-232--->PIC (16f628)
    Par invite103abebb dans le forum Électronique
    Réponses: 7
    Dernier message: 11/03/2008, 08h37
  2. reset sur pic ou atmel
    Par inviteac54bf81 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/11/2007, 22h05
  3. Interface PC+ PIC 16F877 + RS 232
    Par invite22c0acb2 dans le forum Électronique
    Réponses: 6
    Dernier message: 05/10/2007, 23h27
  4. Equivalence Atmel / PIC
    Par invitef4e702f8 dans le forum Électronique
    Réponses: 0
    Dernier message: 14/02/2007, 20h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...