Skocz do zawartości

[BASCOM] ATMEGA8 - problem z komunikacją UART


Pomocna odpowiedź

Napisano

Witam

Zainteresowałem się ostatnio komunikacją pomiędzy procesorem a komputerem. Postanowilem zrobic ukladzik testowy. Zaprogramowalem atmege dzialajaca na wewnetrznym kwarcu bez oscylatora, ponizej podaje kod programu:

$regfile = "m8def.dat"
$crystal = 1000000
$baud = 2400



Do
Print "TEST"                                                     ''
Wait 1
Loop


End

Komputer lacze do lapka za pomoca przejsciowki USB <->RS-232 na ukladzie Prolific PL-2303, jak mniemam do polaczenia nie trzeba konwertera MAX232 poniewaz po obu stronach sa poziomy TTL. Przejsciowke testowalem loopbackiem w hyperterminalu i wszystko jest ok. Nastepnie lacze procek z przejsciowka krosujac przewody oczywiscie i laczac masy. W hyperterminalu ustawiam baud 2400, bity stopu 1, none, none i to tyle co mozna tam ustawic. Procek wysyla slowo test ale jedyne co odbieram w terminalu to krzaki. Nie mam pojecia co moze byc nie tak. Bede wdzieczny za pomoc.

Pozdrawiam

Cześć, musisz uwzględnić, że wewnętrzny oscylator wymaga kalibracji. w Bascomie wystarczy dodać doo pętli głównej polecenie

 
do
Osccal =  osccal +1
print osccal
Loop 

na ekranie powinieneś zaobserwować na początku krzaki, ale z czasem zamienią sie na liczbe. Potem przed programem głównym dajesz już OSCCAL z wartością. Przykład.

$regfile = "m32def.dat"
$crystal = 1000000
$baud = 2400
Osccal = 160

Spróbuj pozmieniać wartość baud, z tego co pamiętam to u mnie krzaczki zmieniły się na poprawne dane przy ustawieniu go na 4800.

Baudami bawilem sie juz wczesniej, od 110 do 19200. Sposob MacGyvera wydal mi sie bardzo fajny i od razu zasiadlem do jego realizacji, jednak nie udalo mi sie odebrac zadnej odpowiedniej wartosci osccala, caly czas mialem cykliczne krzaki. Zastanawia mnie czy to nie wina przejsciowki...

No to klops, ale jak to się mówi jak nie można od przodu, to od tyłu do przodu 😃.

Może na początek sprawdźmy przejściówkę zewrzyj wyjście RXT i TXT włącz terminal ustaw baud na 4800, 8 bitów danych, 1 bit stopu, bez bitów parzystości. Włącz terminal i zacznij coś pisać na klawiaturze, w oknie powinieneś dostawać echo- czyli dokładnie to samo co piszesz.

Testowalem takim loopbackiem, tak jak pisalem w pierwszym poscie. Juz sam sobie przecze. 😃 Kwestia tego ze siedze nad tym juz trzeci dzien i nie mysle... Czyli przejsciowka w porzadku.

podaj swoje GG, myślę że to ułatwi komunikacje :)// faktycznie mój błąd 🙂

//EDIT@@

Spróbuj dać opóźnienie, miedzy edycją rejestru OSCCAL:

do
OSCCAL = OSCCAL +1
print OSCCAL
waitms 500
loop

Poszlo, na priv i na maila, bo nie wiem jak tu ten priv dziala 🙂

[ Dodano: 16-07-2012, 11:44 ]

Kombinowalem z drugim prockiem, poprzedni to ATMEGA8-16PU, ten nowy ATMEGA8A-PU, jednak bez zadnej poprwawy. Mniemam iz blad jest w elektronice, dlatego przesylam schemat pogladowy.

Jakby ktos mial jeszcze jakies pomysly to prosze o podpowiedz.

Pozdrawiam

[ Dodano: 16-07-2012, 16:12 ]

Dzisiaj probowalem uruchomic zegar wewnetrzny 8mhz i kalibrowac go osccilem, zabieg sie udal jednak komunikacja nadal krzaczy. Poszedlem do sklepu po rezonatorek 8mhz i kondki 22pF, ustawilem wszystko jak trzeba, procek nadal krzaczy. Elektronika w tym momencie na pewno jest ok, nie mam juz w ogole pomyslow...

[ Dodano: 16-07-2012, 16:19 ]

Może jednak potrzeba tu max232?

Po kilku dnia, kilkunastu kawach i kilkudziesięciu wedrowkach do elektronicznego - problem rozwiazany. Mimo ze przejsciowka ma poziomy TTL, trzeba uzywac MAX232, potomni mam nadzieje oszczedza sobie czasow i nerwow.

Szczerze mowiac, nie wiem. Przejsciowke sprawdzalem w taki sposob, ze gdy nadawala w trybie echa, sprawdzalem jej napiecie na linii transmisyjnej. Otrzymalem wynik 4.8-4.9V, wiec uznalem ze to poziomy TTL, dlatego kombinowalem bez MAX232. Na kilku forach znalazlem dane ze wlasnie tak nalezy robic. Po kilku dniach bezowocnych prob doszukalem sie gdzies gleboko na innym forum schematu z MAXem, wiec postanowilem sprobowac poraz ostatni. Zadzialalo.

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