Atmega <> PC błędy w komunikacji po porcie szeregowym

Witajcie

Od rana męczę UARTa w atmedze8. Doszedłem już do tego, że coś działa :] Mega robi za echo. To co jej się wyśle przysyła z powrotem, dodatkowo wyświetla otrzymany kod na 8 ledach. Kody odberane przez atmege są poprawne, na diodkach wyświetla się co trzeba. Natomiast zwracane z powrotem wartosci są dziwnie zakłócone... Nie wierzyłem HyperTerminalowi, więc napisałem własny programik, sterujący każdym bitem w ramce. I w kierunku Atmegi wszystko jest OK, natomiast z powrotem pojawia się na najbardziej znaczącej pozycji jedynka, której być nie powinno, i całość się przesuwa o 1 pozycję. Czyli:

10101010 (wysłane z kompa, prawidłowo odebrane i wyświetlone na ledach) 11010101 (odebrane przez kompa).

albo:

00000000 (wysłane z kompa) 10000000 (obebrane na kompie...)

Co to może być?

Szczegóły techniczne: atmega8-16 @ 14,74MHz

4800 baud, 7 bit, brak kontroli parzystości, 1 bit sopu

Załączam program, może coś wyłapiecie:

.include "m8def.inc" .def temp =R16 .org 0x00 rjmp reset .org 0x0b rjmp dane ;usart rx complete reset: ;konfiguracja coma ldi temp,191 ;4800 baud (parametr wyciagniety z datasheeta) out UBRRL,temp clr temp out UBRRH,temp clr temp out UCSRA,temp

ldi temp, (1<<TXEN)|(1<<RXCIE)|(1<<RXEN) out UCSRB,temp ;włączenie tx i rx, przerwania ldi temp,(1<<UCSZ1)|(1<<UCSZ0)|(1<<URSEL) out UCSRC,temp ;8 bit

ldi temp,0b00111111 out DDRC,temp ldi temp,0b00000011 out DDRB,temp ;nie mam calego wolnego portu na diody wic taka rzezbe odstawilem sei main: rjmp main

dane: in temp,UDR c: nop sbis UCSRA,UDRE rjmp c ;ta petelka pilnuje, zeby nadajnik byl gotowy out UDR,temp com temp ;to zeby sie ladnie na diodkach wyswietlalo out PORTC,temp lsr temp lsr temp lsr temp lsr temp lsr temp lsr temp out PORTB,temp reti

Reply to
scx
Loading thread data ...

Użytkownik "scx" snipped-for-privacy@wu-pe.pe-el> napisał w wiadomości news: snipped-for-privacy@40tude.net...

Hmm :-)

A policzyłeś sobie ile bitów twój ATmega wysyła ? Chyba 7 różni się od 8 ?

Pozdrawiam

Jarek Grolik

Reply to
invalid unparseable

Witam. Mialem podobny problem z atthiny2313. Jeżeli nie uzywasz kwarca, a wewnętrzny generator rc to sprawdź napięcie zasilania. Dodaj jakiś elektrolit przed stabilizatorem. Ostatecznie użyj kwarca.

Pozdrawiam Paweł

Reply to
pawel

Użytkownik "Jarosław Grolik" napisał w wiadomości news:f0g3rl$3ec$ snipped-for-privacy@nemesis.news.tpi.pl...

wyglada jak bit parzystosci zawsze 1 lub ustawianie nieparzystosci. H.D.

Reply to
H.D.

Ustaw, żeby procesor wysyłał 8 bitów - inaczej po siedmiu wystawiana jest jedynka.

Reply to
Bogdan Gutknecht

Jarosław Grolik <grolikNO snipped-for-privacy@chemia.uj.edu.pl> napisał(a):

A o ustawieniu wskaźnika stosu , też zapomniałeś ? ;)

Piotrek

Reply to
Piotrek Sz.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.