Bonjour,
Je cherche à communiquer avec mon atmega 162 par la liaison série, jusqu'au moment où il m'est apparu que l'engin à deux UART. C'est parfait, c'est ce que je voulais, mais du coup, je suis perdu :s
J'arrivais à faire ma communication avec un atmega 16 (un seul UART) et je suis reparti de mon programme en le modifiant pour prendre en compte mon deuxième uart, sans succès. Voila mon code.
C'est relativement simple, car dans la majeure partie des cas, il suffisait de rajouter un 0 à la fin, genre UDR devient UDR0 mais ca veut pas. Je n'ai rien sur mon pc alors qu'il est sencé m'envoyer un 'a' toutes les secondes...Code:#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> /* Prototypes */ void InitUART (unsigned char baudrate); unsigned char ReceiveByte (void); void TransmitByte (unsigned char data); /* Main - simple program that recieves a character then transmits back the next character. An example would be if you send in an A, the chip will return a B */ int main (void) { unsigned char i; InitUART (51); /* Set the baudrate to 2400 bps using a 8MHz crystal */ while (1) { //TransmitByte (ReceiveByte () + 1); /* Echo the received character + 1. Example send in A then send out B */ TransmitByte('a'); //usart_puts(&s[0]); PORTA = 0x00; PORTB = 0x00; //for(int i =0; i<50000; i++){}*/ _delay_ms(1000); PORTA = 0xFF; PORTB = 0x00; _delay_ms(1000); //for (i = 0; i < 200; i++); } } /* Initialize UART */ void InitUART (unsigned char baudrate) { /* Set the baud rate */ UBRR0L = baudrate; /* Enable UART receiver and transmitter */ UCSR0B = (1 << RXEN0) | (1 << TXEN0); /* 8 data bits, 1 stop bit */ UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); } /* Read and write functions */ unsigned char ReceiveByte (void) { /* Wait for incomming data */ while (!(UCSR0A & (1 << RXC0))); /* Return the data */ return UDR0; } void TransmitByte (unsigned char data) { /* Wait for empty transmit buffer */ while (!(UCSR0A & (1 << UDRE0))); /* Start transmittion */ UDR0 = data; }
A force d'être le nez sur le code, je dois rater une erreur grossière d'où mon appel à l'aide.
Merci d'avance de votre coup de main !!
Black
-----