Bonjour,
Je travail sur un micro-contrôleur ATmega16, mon but étant de communiquer par la liaison RS232 avec le pc.
Donc pour commencer je fais simple :
J'utilise les fonctions USART_Init et USART_Transmit
Vous les trouverez ci-dessous :
#define UART_BAUD_CALC(UART_BAUD_RATE, F_CPU) (((F_CPU / (UART_BAUD_RATE*16UL))) -1) //fixe la vitesse de la liaison RS232
void USART_Init(unsigned int UART_BAUD_RATE)
{
UBRRH=(uint8_t)
(UART_BAUD_CALC(UART_BAUD_RATE , F_CPU)>>8);
UBRRL=(uint8_t)UART_BAUD_CALC( UART_BAUD_RATE,F_CPU);
UCSRB = (1 << TXEN) | (1 << RXEN); //RX TX enable
UCSRC = (1<<URSEL) | (1<<UCSZ0) | (1<<UCSZ1); //8N1
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) );
/* Put data into buffer, sends the data */
UDR = data;
}
Dans mon 'main' j'initialise la liaison RS232 à 9600 bauds, UART_BAUD_RATE = 9600,
J'introduis dans une boucle while(1) un USART_Transmit(0x61)
Après compilation j'observe aucune erreur et warnings, j'observe bien sur le TX du câble DB9 qui entre dans mon ordinateur un signal qui fonctionne à 9600 bauds.
J'utilise l’hyper terminal afin d'observer les données reçues, je fonctionne en 8bits de données, pas de parités, un stop.
Je ne vois rien qui apparait c'est pourquoi je vous demande de l'aide!
Je vous remercie d'avance pour les suggestions que vous m'apporterez.
-----