ATMega8 i USART



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: ATMega8 i USART
Date: Sun, 20 Mar 2005 19:24:17 +0100


Wlasnie mecze sie od dwoch dni z portem szeregowym w tym procku.
Taktuje go 12MHz, kwarc. Przy 9600 wysylam cyklicznie znaki AA, co
ktorys (co 3 lub 4) przychodza smieci zamiast AA. Zmniejszylem predkosc
do 1200bodow, jest moze lepiej, bo juz tylko srednio co 8 to smieci. Na
wewnetrznym oscylatorze RC 8MHz ten sam problem. Wczesniej bawilem sie
90S2313 na 8MHz i nigdy mi sie nie zdarzaly bledy transmisji.
Co ciekawe jesli wysylam znak po znaku (taki burst) to bledow jest
praktycznie 100%, jak wysylam co sekunde to tylko 10-15%. Z obliczen
wychodzi mi, ze przy 12MHz blad nie przekracza 0,1%, a wiec powinien byc
swietnie tolerowany przez USART.
Pomozcie, bo rece mi opadaja z tym prockiem:(


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Poprzedni Następny
Wiadomość
Spis treści
From: "Artur Starz" <artur_at_nospam_mail.argos1.com.pl.precz.ze.spamem>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 19:34:11 +0100


Witam..
z 1200 bodów bedzies na pewno mial bledy - UART tak nisko nie zejdzie z
kwarcem 12MHz
po 9600 powinno bez problemów hulac.. Sprawdz czy na pewno wszystkio w
porzadku z kwarcem, maxem232 itp.
Duzo robie na mega8 i z rs'em raczej nie ma problemów

Pozdrawiam
Artur Starz


Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 19:56:42 +0100


Artur Starz wrote:

Witam..
z 1200 bodów bedzies na pewno mial bledy - UART tak nisko nie zejdzie z
kwarcem 12MHz

Zejdzie - laduje mu 623, 2 do UBRRH i 112 do UBRRL. Ale na 9600 ten sam
problem.

po 9600 powinno bez problemów hulac.. Sprawdz czy na pewno wszystkio w
porzadku z kwarcem, maxem232 itp.

Z kwarcem chyba tak, bo w koncu ATMega na nim dziala. Nie mam niestety
mozliwosci zmierzenia Fosc, moze tu jest problem? Ale przy kwarcu
czestotliwosc nie moze przeciez za bardzo odbiegac od nominalnej...

Duzo robie na mega8 i z rs'em raczej nie ma problemów
Szczesciarz:)

--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 19:34:17 +0100


T.M.F. wrote:

> Wlasnie mecze sie od dwoch dni z portem szeregowym w tym procku.
> Taktuje go 12MHz, kwarc. Przy 9600 wysylam cyklicznie znaki AA, co
> ktorys (co 3 lub 4) przychodza smieci zamiast AA. Zmniejszylem predkosc
> do 1200bodow, jest moze lepiej, bo juz tylko srednio co 8 to smieci. Na
> wewnetrznym oscylatorze RC 8MHz ten sam problem. Wczesniej bawilem sie
> 90S2313 na 8MHz i nigdy mi sie nie zdarzaly bledy transmisji.
> Co ciekawe jesli wysylam znak po znaku (taki burst) to bledow jest
> praktycznie 100%, jak wysylam co sekunde to tylko 10-15%. Z obliczen
> wychodzi mi, ze przy 12MHz blad nie przekracza 0,1%, a wiec powinien byc
> swietnie tolerowany przez USART.

Program napisany dla 2313 po kompilacji pod ATmega8 i kosmetycznych
zmianach - ruszył u mnie od razu poprawnie. Więc raczej nie szukałbym
błędu w sofcie, jesli jesteś pewny swoich umiejętności na 2313.

Co do problemów - jako że miałem kiedyś podobne (zbyt wolna transmisja
powodowała błędy) to zapytam o MAX232 - czy jestes pewny poprawnego
wlutowania kondensatorów do niego ? To najczęstsze źródło błędów.
Pomierz nogi tego procka, względem masy powinieneś uzyskać coś w
granicach +8V i -8V na niektorych.

U mnie powodem była raz odłaczenie się masy w kabelku - działało tylko
kiedy wysyłane było dużo 0 a nie 1 ;) Cholerstwo trudne w diagnozie.
Innym razem wsadziem odwrotnie elektrolit i max nie miał pełnego
napięcia - efektem było że przechodziło pare znaków a potem mogiła -
błędy i cisza. Przy wyzszych transmisjach wszystko było ok (!). I
następny dzień stracony w poszukiwaniu błędu w sofcie :/

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 19:50:04 +0100



Program napisany dla 2313 po kompilacji pod ATmega8 i kosmetycznych
zmianach - ruszył u mnie od razu poprawnie. Więc raczej nie szukałbym
błędu w sofcie, jesli jesteś pewny swoich umiejętności na 2313.

Przekopiowalem oryginalne procedury inicjalizacji portu i transmisji z
pdfa do ATMega8. Sprawdzilem na debuggerze, 100x rzucilem okiem i
wszystko jest ok:( Brak pomyslow.

Co do problemów - jako że miałem kiedyś podobne (zbyt wolna transmisja
powodowała błędy) to zapytam o MAX232 - czy jestes pewny poprawnego
wlutowania kondensatorów do niego ? To najczęstsze źródło błędów.
Pomierz nogi tego procka, względem masy powinieneś uzyskać coś w
granicach +8V i -8V na niektorych.

MAX jest na osobnej plytce, po podlaczeniu 90S2313 wszystko dziala. Na
stosownych nogach maxa napiecie +/-9V.

U mnie powodem była raz odłaczenie się masy w kabelku - działało tylko
kiedy wysyłane było dużo 0 a nie 1 ;) Cholerstwo trudne w diagnozie.
Innym razem wsadziem odwrotnie elektrolit i max nie miał pełnego
napięcia - efektem było że przechodziło pare znaków a potem mogiła -
błędy i cisza. Przy wyzszych transmisjach wszystko było ok (!). I
następny dzień stracony w poszukiwaniu błędu w sofcie :/

Nie wiem, wszystko sprawdzone:(

--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Poprzedni Następny
Wiadomość
Spis treści
From: "Robercik" <mojejapko_at_nospam_nouspam.poczta.onet.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 20:34:57 +0100



Użytkownik "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl> napisał w wiadomości
news:o7t0h2-jn3.ln1_at_nospam_hermes.wizzard...


Nie wiem, wszystko sprawdzone:(


moze nie zgadzaja sie bity stopu/parzystosci? Jezeli wysyla za duzo bitow to
poprostu dane sie "rozjezdzaja"...
pozdrawiam



Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 20:41:22 +0100


Chyba MAX232 odszedl do krainy wiecznych scalakow. Uzylem go z procem,
ktory wczesniej nie dawal bledow i tragedia:( Wali blad za bledem.

--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Poprzedni Następny
Wiadomość
Spis treści
From: "grze" <grzecholek_at_nospam_poczta.fm>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 20:51:26 +0100



Uzytkownik "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl> napisal w wiadomosci
news:cnr0h2-5e3.ln1_at_nospam_hermes.wizzard...
(...)
Pomozcie, bo rece mi opadaja z tym prockiem:(


Ja ostatnio tez pracuje na mega8 i nie mam zadnych poroblemow (dzialam na
115200)

Zapodaj moze ten progra na liste, moze jednak nie wszystko jest OK...
Jak nie masz juz pomyslow to moze trzeba siegnac po oscyloskop i macnac co
wychodzi na UART i na MAX



Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: ATMega8 i USART
Date: Sun, 20 Mar 2005 21:44:12 +0100


Zapodaj moze ten progra na liste, moze jednak nie wszystko jest OK...
Jak nie masz juz pomyslow to moze trzeba siegnac po oscyloskop i macnac co
wychodzi na UART i na MAX

Ponizej program. Co ciekawe praktycznie ten sam program dzialal na
90S2313, z tym, ze teraz po podlaczeniu do Max ktorego uzywalem z ATMega
nie dziala:( Wiec podejrzenie padlo na maxa - z tym, ze w odpowiednich
punktach napiecia sa takie jak podaja w pdfie.
Co ciekawe program oprocz wysylania bzdur ma jeszcze jedna ciekawostke.
A mianowicie po resecie zgodnie z oczekiwaniem czeka na znak z RS i do
chwili otrzymania go nic nie wysyla. Ale wystarczy wyslac jeden znak i
koniec, juz bez czekania wysyla w kolko rozne bzdury.
A oscyloskopu nie mam:(


RESET:
; Initialize stack pointer
LDI R16,high(RAMEND) ; Main program start
OUT SPH,R16 ; Set stack pointer to top of RAM
LDI R16,low(RAMEND)
OUT SPL,R16
; Initialize watchdog
LDI R16, (1<<WDCE)|(1<<WDE)
OUT WDTCR, R16 ; Turn off WDT
LDI R16, (0<<WDE)
OUT WDTCR, R16
;Initialize RS232(485) port - now obsolete
LDI R16,2 ; Set baud rate to 1200bps (12 MHz clock)
OUT UBRRH, R16
LDI R16,111
OUT UBRRL, R16
LDI R16, (1<<RXEN)|(1<<TXEN) ; Enable receiver and transmitter
OUT UCSRB,R16
LDI R16, (1<<URSEL)|(3<<UCSZ0) ; Set frame format: 8data, 1stop bit
OUT UCSRC,R16
LOOP:
rcall RSReceiveData
rcall RSSendData
RJMP LOOP

; Wysyła na RS dane z R16
RSSendData:
sbis UCSRA,UDRE
rjmp RSSendData ; Wait for empty buffer
out UDR,r16 ; Send data
ret

;Odbiera dane z rs do R16
RSReceiveData:
sbis UCSRA, RXC
rjmp RSReceiveData ;Wait for data
in r16,UDR
ret



--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Poprzedni Następny
Wiadomość
Spis treści
From: "grze" <grzecholek_at_nospam_poczta.fm>
Subject: Re: ATMega8 i USART
Date: Mon, 21 Mar 2005 22:34:17 +0100


Ponizej program. Co ciekawe praktycznie ten sam program dzialal na
90S2313, z tym, ze teraz po podlaczeniu do Max ktorego uzywalem z ATMega
nie dziala:( Wiec podejrzenie padlo na maxa - z tym, ze w odpowiednich
punktach napiecia sa takie jak podaja w pdfie.
Co ciekawe program oprocz wysylania bzdur ma jeszcze jedna ciekawostke.
A mianowicie po resecie zgodnie z oczekiwaniem czeka na znak z RS i do
chwili otrzymania go nic nie wysyla. Ale wystarczy wyslac jeden znak i
koniec, juz bez czekania wysyla w kolko rozne bzdury.
A oscyloskopu nie mam:(


RESET:
; Initialize stack pointer
LDI R16,high(RAMEND) ; Main program start
OUT SPH,R16 ; Set stack pointer to top of RAM
LDI R16,low(RAMEND)
OUT SPL,R16
; Initialize watchdog
LDI R16, (1<<WDCE)|(1<<WDE)
OUT WDTCR, R16 ; Turn off WDT
LDI R16, (0<<WDE)
OUT WDTCR, R16
;Initialize RS232(485) port - now obsolete
LDI R16,2 ; Set baud rate to 1200bps (12 MHz clock)
OUT UBRRH, R16
LDI R16,111
OUT UBRRL, R16
LDI R16, (1<<RXEN)|(1<<TXEN) ; Enable receiver and transmitter
OUT UCSRB,R16
LDI R16, (1<<URSEL)|(3<<UCSZ0) ; Set frame format: 8data, 1stop bit
OUT UCSRC,R16
LOOP:
rcall RSReceiveData
rcall RSSendData
RJMP LOOP

; Wysyła na RS dane z R16
RSSendData:
sbis UCSRA,UDRE
rjmp RSSendData ; Wait for empty buffer
out UDR,r16 ; Send data
ret

;Odbiera dane z rs do R16
RSReceiveData:
sbis UCSRA, RXC
rjmp RSReceiveData ;Wait for data
in r16,UDR
ret


Przegladalem ponizej watek "ATmega8 + USART/UART" kolegi Mes z 19-03-2005
20:55
Przyszlo mi do glowy ze moze u ciebie tez nie jest ustawiony Fusebit na
oscylator zewnetrzny.
Nowki ustawione sa na wewnetrzny RC 1MHz. Ty i tak ustawiles baaardzo maly
Boudrate wiec jak procek chodzi 12x wolniej
to ... (sam wiesz).
Ja uzywam do programowania programowania z BASCOMA AVR - STK200/300. Tam sa
lepiej opisane Fuse Bity

Co do programu to wyglada OK. Mam zastrzezenia do petli programu, a
dokladnie do zachowania sie programu. Widze ze procek stoi w miejscu
poki nie otrzyma bajtu na UART i to co otrzmal powinien wyslac i znowu
czekac az cos do niego przyjdzie.
A jak cos dalej wysyla to znaczy ze cos otrzymuje, wiec moze komp wysyla
ECHO tego co on z kolei odebral :-) - ale zakrecilem :)))
Sprobuj odpiac kabel w czasie zapetlenia sie progranu i po ponownym
podpieciu zobacz czy sie uspokoilo.
Ja bym dodal jeszcze machanie noga w procedurze wysylania. To bedziesz
widzial jak podepniesz LED czy on dalej cos wysyla sam z siebie
(bez poloaczenia z PC).
.



Poprzedni Następny
Wiadomość
Spis treści
From: "T.M.F." <tfrancuz_at_nospam_nospam.mp.pl>
Subject: Re: ATMega8 i USART
Date: Tue, 22 Mar 2005 09:55:12 +0100



Przegladalem ponizej watek "ATmega8 + USART/UART" kolegi Mes z 19-03-2005
20:55
Przyszlo mi do glowy ze moze u ciebie tez nie jest ustawiony Fusebit na
oscylator zewnetrzny.

Nie, ustawialem go na wewnetrzny RC 8MHz, zewnetrzny kwarc 12MHz, to samo.

A jak cos dalej wysyla to znaczy ze cos otrzymuje, wiec moze komp wysyla
ECHO tego co on z kolei odebral :-) - ale zakrecilem :)))
Sprobuj odpiac kabel w czasie zapetlenia sie progranu i po ponownym
podpieciu zobacz czy sie uspokoilo.

Uszkodzony max232. Ten sam program na innym procku, z innym maxem dziala
ok.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.