scx
Guest
Sun Apr 22, 2007 5:10 pm
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
Jarosław Grolik
Guest
Sun Apr 22, 2007 5:47 pm
Użytkownik "scx" <es-ce-iks-7@wu-pe.pe-el> napisał w wiadomości
news:143mx23iyfshz.jdkmwku3ch9y.dlg@40tude.net...
Quote:
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
Hmm :-)
A policzyłeś sobie ile bitów twój ATmega wysyła ? Chyba 7 różni się od 8 ?
Pozdrawiam
Jarek Grolik
pawel
Guest
Sun Apr 22, 2007 6:24 pm
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ł
H.D.
Guest
Sun Apr 22, 2007 7:41 pm
Użytkownik "Jarosław Grolik" napisał
w wiadomości news:f0g3rl$3ec$1@nemesis.news.tpi.pl...
Quote:
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
wyglada jak bit parzystosci zawsze 1 lub ustawianie nieparzystosci.
H.D.
Bogdan Gutknecht
Guest
Mon Apr 23, 2007 6:33 am
Quote:
Szczegóły techniczne:
atmega8-16 @ 14,74MHz
4800 baud, 7 bit, brak kontroli parzystości, 1 bit sopu
Ustaw, żeby procesor wysyłał 8 bitów - inaczej po siedmiu wystawiana jest
jedynka.
Piotrek Sz.
Guest
Mon Apr 23, 2007 3:41 pm
Jarosław Grolik <grolikNO_SPAM@chemia.uj.edu.pl> napisał(a):
Quote:
Użytkownik "scx" <es-ce-iks-7@wu-pe.pe-el> napisał w wiadomości
news:143mx23iyfshz.jdkmwku3ch9y.dlg@40tude.net...
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
Hmm :-)
A policzyłeś sobie ile bitów twój ATmega wysyła ? Chyba 7 różni się od 8 ?
Pozdrawiam
Jarek Grolik
A o ustawieniu wskaźnika stosu , też zapomniałeś ? ;)
Piotrek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/