Ce post fait suite à celui-ci. dans le premier nous étions un peu "limité" a cause du rebouclage.
Comme je ne possède pas de câble RS-232/USB , j'ai décidé de continuer mes investigations et mon apprentissage via le USB-UART, qui se je ne m'abuse est la même chose ou presque ?
Voici le schéma de la carte :

J'utilise l’outil de mikroC qui simule la com voici en image, je pense que ca devrait bon.

Voici mon premier petit programme qui fonctionne pas trop .
Code : Tout sélectionner
/*##################################################################################
Programme de test pour liaison UART-USB sur carte EasyPIC_V7 avec PC
Fait par Jérémy pour FantasPic.fr
- Version du "17-12-2015"
- MikroC version 6.6.2
- PIC 18F46K22 FOSC à 8MHZ, Quartz extrene de 8Mhz, PLL désactivée
- Data-Shit du PIC : http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf
- manuel et schéma de la carte : http://www.mikroe.com/downloads/get/1711/easypic_v7_manual_v104c.pdf
#################################################################################*/
#define BP PORTD.B0
// Connections de l'écran LCD
sbit LCD_RS at LATB4_bit;
sbit LCD_EN at LATB5_bit;
sbit LCD_D4 at LATB0_bit;
sbit LCD_D5 at LATB1_bit;
sbit LCD_D6 at LATB2_bit;
sbit LCD_D7 at LATB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Fin connections LCD
// Déclaration des variables utilisées ------------------------------------------
int Rx_buffer[16] ;
int i, Rx ;
// Fin des varaibles---------------------------------------------------------------
// Prototypes --------------------------------------------------------------------
// FIN Prototypes
//##################################################################################
//######################### PROGRAMME PRINCIPAL #########################
//##################################################################################
void main() {
ANSELB = 0x00; // Configure le PORTB en digital pour le LCD
ANSELC = 0x00;
ANSELD = 0x00;
TRISB = 0x00; // PORTB en sortie
TRISD = 0xFF;
UART1_Init(4800); // Initialisation de l'UART
delay_ms(100); // Petite pause
Lcd_Init(); // Initialisation du LCD
Lcd_Cmd (_LCD_CLEAR); // On efface l'écran
Lcd_Cmd (_LCD_CURSOR_OFF); // On arrete le clignotement du curseur
delay_ms(100); // Petite pause
//####################### BOUCLE INFINIE ####################################
while (1)
{
if ((BP==1) && (UART1_Tx_Idle() == 1))
{
UART1_Write_Text("Hello World !");
UART1_Write(10);
UART1_Write(13);
while (BP==1);
}
if (UART1_Data_Ready())
{
UART_Read_Text(Rx_buffer, "OK", 10);
Lcd_out (1, 1, Rx_buffer );
}
}
}En fait l’émission fonctionne parfaitement , a chaque appui sur le BP ( Broche 0 du PORTD), le texte apparait dans la fenêtre "receive" . Je vois la led émission s'allumer nickel !
Coté réception la ça pique un peu plus . En fait j'ai l’impression que quand j'envoie 8 caractères ça fonctionne, mais au dessus ca bug complet . La led réception s'allume bien par contre, à chaque fois que j'appuie sur "send".
J'envoie par exemple: 01234567OK .
Le terme "OK" sert à définir la fin du dialogue il me semble. J' ai réglé le débit sur 4800 bauds.
Voyez-vous une coquille dans mon petit programme ? pourquoi au delà 8octets ca bug ?


