Programmation microcontroleur pic 18f225
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Programmation microcontroleur pic 18f225



  1. #1
    soldius87

    Programmation microcontroleur pic 18f225


    ------

    Bonjour a tous.
    voila je travaille actuellement sur un projet avec des capteur ultrason, et je suis debutant sur les pic18f
    le projet consiste a utiliser 3 émetteur placé sur un pied d'un robot et 3 récepteur sur l'autre, ces capteur permettent de calculer 9 distances qui seront ensuite utiliser sous matlab pour calculer la position et l'orientation d'un pied par rapport a l'autre.
    j'ai réaliser le programme avec 3 émetteur et 1 seul récepteur mais j'ai du mal pour 3 récepteur (gestion des interruption).
    si quelqu'un pouvez m'aidai svp.
    merci bcp.
    je joins mon programme que je compile sous CCS.

    /****************************** ****************************** ****************************** *******/
    // Fichier de déclaration des registres internes du microcontrôleur
    /****************************** ****************************** ****************************** *******/


    /****************************** ****************************** ****************************** *******/
    // Configuration
    /****************************** ****************************** ****************************** *******/


    /****************************** ****************************** ****************************** *******/
    // Librairie USB CSS VERIFIER CHOSES INUTILES
    /****************************** ****************************** ****************************** *******/

    #define NB_CARACS 50
    #define NB_ATTENTE 10
    #define NB_PICS 10

    #define __USB_PIC_PERIF__ 1 // USB directive for compilation
    #if !defined(__PCH__)
    #error USB CDC Library requires PIC18
    #endif

    #if __USB_PIC_PERIF__
    #include <18F2550.h> // PIC18F2550 library
    #fuses HSPLL,NOWDT,NOLVP,USBDIV,PLL5, CPUDIV1,VREGEN,NODEBUG,NOPROTE CT
    #use delay(clock=48000000) // directive to use delay function
    #endif //endif check to see which peripheral to use

    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    int16 Number_of_Ticks = 65443;************************ ****************************** ****************************** *************/
    // Interruption
    /****************************** ****************************** ****************************** *******/
    int1 A= 0;
    int i=0, Value1,Value2,Value3,result;
    // tempo = 9;

    #int_timer1
    void timer1_isr(void) {
    set_timer1(Number_of_Ticks);
    output_high(PIN_C0);
    delay_us(10);
    output_low(PIN_C0); //mise a l'etat A de la pin C0
    delay_us(1700);

    output_high(PIN_C1); //mise a l'etat A de la pin C0
    delay_us(10);
    output_low(PIN_C1); //mise a l'etat A de la pin C0
    delay_us(1700);

    output_high(PIN_C2); //mise a l'etat A de la pin C0
    delay_us(10);
    output_low(PIN_C2); //mise a l'etat A de la pin C0
    delay_us(1700);
    i++;
    }

    #int_ext
    void ext_isr(void){
    output_high(PIN_A5);
    delay_ms(500);
    Value1= i/2;
    output_low(PIN_A5);
    }

    #int_ext1
    void ext1_isr(void){
    output_high(PIN_A4);
    delay_ms(500);
    Value2= i/2;
    output_low(PIN_A4);
    }

    #int_ext2
    void ext2_isr(void){
    output_high(PIN_A3);
    delay_ms(500);
    Value3= i/2;
    output_low(PIN_A3);
    }
    /****************************** ****************************** ****************************** *******/
    // Fonction comparaison/ mesure de temps
    /****************************** ****************************** ****************************** *******/
    int time_wise;
    #int_ccp1
    void ccp_isr(int)
    {
    time_wise = CCP_2- CCP_1; // output_A(PIN_A0)

    }


    /****************************** ****************************** ****************************** *******/
    // Fonction conversion
    /****************************** ****************************** ****************************** *******/
    void init_port(void){ // Fonction Initialisation des ports ****************************** ********

    setup_adc(ADC_CLOCK_INTERNAL); // reglage de l'horloge de conversion
    set_tris_b(0xff); //tout le port B en entrée
    set_tris_a(0x00); //tout le port A en sortie
    setup_adc_ports(AN0_TO_AN9); // configuration du port d'entré ici B3)
    }

    void init_can(void) { // Fonction Initialisation du convertisseur***************** *********************

    set_adc_channel(AN0_TO_AN9);
    }

    int convertir ( unsigned char channel) { // Fonction Initialisation du convertisseur***************** *********************
    int result;

    set_adc_channel(AN0_TO_AN9);
    READ_ADC(ADC_START_AND_READ);
    result = READ_ADC(ADC_START_AND_READ); //
    output_bit(PIN_b0,result);
    }

    /****************************** ****************************** ****************************** ****************************** */
    // Fonction Principale
    /****************************** ****************************** ****************************** ****************************** */

    void main(){

    char chaine[NB_CARACS];

    setup_adc_ports(AN0_TO_AN9); //pas d'entree/sortie analogique _ sab
    setup_spi(FALSE); //pas d'utilisation du SPI
    setup_wdt(WDT_OFF); //pas de watchdog
    setup_timer_0(RTCC_OFF); //pas d'utilisation du Timer0
    setup_timer_2(T2_DISABLED,0,1) ; //pas d'utilisation du Timer2
    setup_timer_3(T3_DISABLED); //pas d'utilisation du Timer3
    setup_comparator(NC_NC_NC_NC); //pas d'utilisation des comparateur
    setup_vref(FALSE);
    setup_low_volt_detect(FALSE);
    setup_oscillator(FALSE);
    set_tris_a(0x00); //tout le port A en sortie
    set_tris_b(0xff); //tout le port B en entrée
    setup_timer_1(T1_INTERNAL|T1_D IV_BY_1); //Paramétrage du prescaler du timer 1
    usb_cdc_init(); // Initialisation de l'USB;
    usb_init();
    // Declenchement du timer ****************************** ****************************** **************/
    set_timer1(Number_of_Ticks); //Paramétrage du timer 1 à Number_of_Ticks
    enable_interrupts(int_timer1); // Activation du timer 1

    // enable_interrupts(int_ccp1);
    // declenchement du comparateur******************* ****************************** *******************/

    //ext_int_edge(0,L_TO_H);

    enable_interrupts(int_EXT); // Activation de l'interruption sur RB0
    enable_interrupts(int_EXT1); // Activation de l'interruption sur RB1
    enable_interrupts(int_EXT2); // Activation de l'interruption sur RB2

    while (1){




    usb_task();
    printf(usb_cdc_putc, "\rEntrez caractere :\r\n");

    //Attente de l'envoi d'un caractere : au max NB_CARACS - carac de stop
    get_string_usb(chaine, NB_CARACS);



    }

    }



    /****************************** ****************************** ****************************** *********/

    -----

  2. #2
    invite8af2c603

    Re : Programmation micrcontroleur pic 18f225

    Bonjour,
    je ne maitrise rien en microcontrolleur mais en genre sonar j'ai trouver cela,
    si sa peut t'être utile.

    http://grathio.com/2011/08/meet-the-...for-the-blind/


    Cordialement.

  3. #3
    Jack
    Modérateur

    Re : Programmation micrcontroleur pic 18f225

    La moindre des choses est de lire les règles qui régissent un forum avant de poster:
    http://forums.futura-sciences.com/programmation-langages-algorithmique/441632-regles-participatives-nouveau-forum.html


    Merci d'en tenir compte à l'avenir. Je déplace donc

    Pour l'indentation, je ne peux rien faire vu qu'il n'y en a aucune ...
    Dernière modification par Jack ; 06/03/2012 à 14h19. Motif: orthographe

  4. #4
    RISC

    Re : Programmation micrcontroleur pic 18f225

    Salut,

    Je ne connais pas le compilateur CCS mais je penses que tu as oublié de nettoyer le flag de demande d'interruption dans chacune de tes interruptions...
    Tu ne risques pas de revenir de tes interruptions ;=)

    a+

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

    Re : Programmation micrcontroleur pic 18f225

    bonjour, désoler je suis nouveau sur le forum, je n'avait pas vu ça.
    merci a toi.

Discussions similaires

  1. Programmation microcontroleur en C.
    Par [Totor] dans le forum Électronique
    Réponses: 0
    Dernier message: 08/06/2011, 09h57
  2. Programmation de microcontroleur
    Par invitee4eec1c2 dans le forum Électronique
    Réponses: 17
    Dernier message: 26/10/2010, 11h07
  3. Programmation microcontrôleur PIC18
    Par invite73838812 dans le forum Électronique
    Réponses: 12
    Dernier message: 27/08/2010, 13h21
  4. programmation d'un microcontrôleur
    Par L'astronaute dans le forum Électronique
    Réponses: 51
    Dernier message: 13/08/2010, 10h48
  5. Programmation microcontroleur
    Par invitee88d155e dans le forum Électronique
    Réponses: 2
    Dernier message: 28/04/2010, 18h51
Découvrez nos comparatifs produits sur l'informatique et les technologies.