Skocz do zawartości

[BASCOM] ATMEGA8 - problem z komunikacją UART


wojciradom

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

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.