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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.