Bonjour,
Je programme une liaison UART pour relier un PIC 24FV16KM204 à un module Bluetooth...
Le module Bluetooth pour l'initialiser je dois lui envoyer des ligne de commande et attendre ses réponses.
Etant débutant dans la programmation, je ne sais pas comment m'y prendre.
je travail sur MPLAB X IDE v4.05
j'ai initialisé mon UART et j'ai fais des tests sur PUTTY pour voir si je pouvais envoyer un caractère ou en recevoir un....
Voir mon initialisation:
Code:#include <stdlib.h> #include<stdio.h> #include"system.h" #include"user.h" #include"UART.h" #include <libpic30.h> void Init_UART() //UART 1 (BTM) { U1MODEbits.UARTEN = 1; // UARTx Enable bit U1MODEbits.USIDL = 0; // UARTx Stop in Idle Mode bit U1MODEbits.IREN = 0; // IREN: IrDA® Encoder and Decoder Enable bit(1) U1MODEbits.RTSMD = 0; // RTSMD: Mode Selection for UxRTS Pin bit U1MODEbits.UEN = 00; // UEN<1:0>: UARTx Enable bits(2) U1MODEbits.WAKE = 0; // WAKE: Wake-up on Start Bit Detect During Sleep Mode Enable bit U1MODEbits.LPBACK = 0; // LPBACK: UARTx Loopback Mode Select bit U1MODEbits.ABAUD = 0; // ABAUD: Auto-Baud Enable bit U1MODEbits.URXINV =0 ; // URXINV: UARTx Receive Polarity Inversion bit U1MODEbits.BRGH = 0; // Baud Rate setting U1MODEbits.PDSEL = 00; // bit 2-1 PDSEL<1:0>: Parity and Data Selection bits U1MODEbits.STSEL = 0; // STSEL: Stop Bit Selection bit U1STAbits.UTXISEL1 = 0; // UTXISEL<1:0>: UARTx Transmission Interrupt Mode Selection bits U1STAbits.UTXISEL0 = 0; // 11 = Reserved; do not use U1STAbits.UTXINV = 0; // UTXINV: IrDA® Encoder Transmit Polarity Inversion bit U1STAbits.UTXBRK = 0; // UTXBRK: UARTx Transmit Break bit U1STAbits.UTXEN = 1; // UTXEN: UARTx Transmit Enable bit U1STAbits.UTXBF = 1; // UTXBF: UARTx Transmit Buffer Full Status bit (read-only) U1STAbits.TRMT = 0; // TRMT: Transmit Shift Register Empty bit (read-only) U1STAbits.URXISEL = 00; // URXISEL<1:0>: UARTx Receive Interrupt Mode Selection bits U1STAbits.ADDEN = 0; // ADDEN: Address Character Detect bit (bit 8 of received data = 1) U1STAbits.RIDLE = 0; // RIDLE: Receiver Idle bit (read-only) U1STAbits.PERR = 0; // PERR: Parity Error Status bit (read-only) U1STAbits.FERR = 0; // FERR: Framing Error Status bit (read-only) U1STAbits.OERR = 0; // OERR: Receive Buffer Overrun Error Status bit (clear/read-only) U1STAbits.URXDA = 0; // URXDA: UARTx Receive Buffer Data Available bit (read-only) U1BRG = 25; //BaudRate = 9600 } void Envoie() { while(1) { while (U1STAbits.UTXBF == 1); //tant que le buffer est full on attend __delay_ms(1); U1TXREG = 'U'; } } void Reception() { char data; while ( U1STAbits.URXDA !=1); // wait for a new character to arrive data = U1RXREG; Nop(); Nop(); Nop(); Nop(); U1TXREG = 'A'; }
Voilà ce qu'il en est de mon code :P
Ce que je cherche à savoir c'est comment envoyer une chaîne de caractère et suite à ça lui dire d'attendre la réponse qui doit être "ok" et suite à ça envoyer la deuxième instruction et tout....
Si vous avez des pistes ? Parce que là je galère.
Déjà ce que j'ai c'est que sur Putty la fonction envoi et reçoi fonctionne :P
Merci d'avance pour vos pistes
-----