Hello,
je me remets doucement a la programmation de microcontroleur avr, après une pause relativement longue .
j'essaie de transmettre des données via UART (atmega to uart to usb) et je m'inspire de code que j'ai écrit il y a longtemps . lors de la transmition de données (le résultat d'un capteur d'humidité connecté a une broche ADC de mon atmega) j'ai systématiquement des données parasites a chaque transmission que je n'arrive pas a regler
voici les fonctions de ma transmition uart :
voici le code qui envoie les données :Code:int printCHAR(char character, FILE *stream) { while ((UCSRA & (1 << UDRE)) == 0) {}; UDR = character; return 0; } FILE uart_str = FDEV_SETUP_STREAM(printCHAR, NULL, _FDEV_SETUP_RW); void USARTInit(uint16_t ubrr_value) { UBRRL = ubrr_value; UBRRH = (ubrr_value>>8); UCSRC=(1<<URSEL)|(3<<UCSZ0); UCSRB=(1<<RXEN)|(1<<TXEN); UCSRB |= (1 << RXEN) | (1 << TXEN); UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); }
la fonction Humidite_capteur est un un retour int du convertisseur analogique numérique de l'atmega.Code:#define CRLF "\r\n" // Retour à la ligne fprintf (&uart_str,CRLF); fprintf(&uart_str," Humidite: %u \r\n",Humidite_capteur());
seulement dans putty en communication avec le port com de mon convertisseur uart to usb, cela donne ça :
je ne comprend pas les caracteres parasite a la fin, et après avoir épluché la datasheet, je ne vois pas mon erreur .
Si quelqu'un a une idée ?
merci!!!
-----