Bonjour,
J'utilise une carte de développement stk200 avec l'atmega8515, je programme en c sous avrstudio 4, os windows 7, je veux envoyer un caractère sur le port série COM1 mais à chaque exécution du code je reçois une interruption break et lle caractère 'nul' voici mon code:
#include <avr/io.h>
#include <avr/iom8515.h>
#include <stdlib.h>
#include <stdint.h>
#include <avr/interrupt.h>
#define fosc 8000000 // 8 MHz
#define BAUD 9600 //38400
#define UBRR fosc/BAUD/16-1
volatile unsigned char value;
ISR(UART_TX_vect){
PORTB |= ~value; // invert and output to LED (0=on)
}
void Led_init(void){
DDRB =0xFF; // set as outputs
PORTB = 0xFF; // all off (0 = LED on)
}
// Initialisation du port série
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH |= (unsigned char)(baud>>8);
UBRRL |= (unsigned char)baud;
/* Mode réception et transmission */
UCSRB |=(1<<TXEN)|(1<<TXCIE);
/* format de la trame: 8 bits de données, 2 bits de stop */
UCSRC |= (1<<URSEL)|(0<<USBS)|(3<<UCSZ0 );
}
//Transmission sur le port série
int USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while (!( UCSRA & (1<<UDRE)))
{
}
/* Put data into buffer, sends the data */
UDR = data;
return 0;
}
void Att (unsigned int duree){
unsigned int i;
for (i=0; i<duree; i++) {
}
}
int main () {
sei();
Led_init();
USART_Init(UBRR);
DDRD=0xFF;//port D en sortie
uint8_t i;
char *c;
for (i=1;i<=9;i++)
{
itoa(i,c,10);
value = i + '0';
USART_Transmit(value);
UCSRA&=~(1<<TXC);
Att (500);
}
//Fin programme principal
return 0;
}
Merci de m'aidez svp
-----