Skocz do zawartości

Problem z odbiorem danych USART Atmega8


klm86

Pomocna odpowiedź

Witam. Zrobiłem prosty sterownik silników krokowych z którym komunikuje się przez

USART korzystając z pomocy MAX232. Sprawa wygląda tak, że dane wysyłane do komputera

(odbierane w programie termite) są w 100% poprawne, natomiast wysyłanie do UC

wygląda tak, że gdy wysyłam np 0x01, to otrzymuje 0x31, 0x02 otrzymuje ox32,
w miejscu drugiego półbajtu ciągle występuje "3", nawet gdy liczba jest większ, choćby np 0x53 to i tak odczytuje 0x33

#define BAUD 9600       //tutaj podaj żądaną prędkość transmisji  
#include <util/setbaud.h> //linkowanie tego pliku musi być 

UBRRH=UBRRH_VALUE;
UBRRL=UBRRL_VALUE;
#if USE_2X  
  UCSRA |=  (1<<U2X);  
#else  
  UCSRA &= ~(1<<U2X);  
#endif 
//UBRRL=(unsigned char)F_CPUUBR_VAL;
UCSRB|=(1<<RXEN)|(1<<TXEN)| (1<<RXCIE);
UCSRC|=(1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);

Odbiór danych realizowany jest za pomocą przerwania:

if(UCSRA& 1<<RXC) 
 {

LED_ON;
_delay_ms(5);
LED_OFF;
ReciveData=UDR;

[ Dodano: 22-03-2014, 11:07 ]

Zamykam temat, sam odpowiedziałem na sobie na pytanie, termite wysyła wpisaną

wartość np 1,2,3,4 lub, a,b,c,d w kodzie ASCI. Pozdro

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.