AVR - Procyon software UART

Apr 26, 2006 8 Replies

Potrzebuję dla modułu Axiom gps uruchomić drugiego uarta, prędkość tylko



4800, skompilowałem plik uartsw.c - piny standardowe podane w tym pliku.

Testowałem wysyłanie i odbiór, ale są przekłamania, np. zamiast A jest j, niestety nie ma stałego przesunięcia pomiędzy znakami w tablicy asci.



Czy ktoś testował tą bibliotekę Procycon dla AVR ? działa software uart?


Wprawdzie nie uzywalem jeszcze tej biblioteki (aczkolwiek posiadam w swoich zbiorkach :) Przypuszczam, ze jakies inne przerwanie tu przeszkadza... spróbuj przetestowac sama biblioteke, bez dodatkowego swojego kodu. Jesli bedzie OK, to poszukaj w swoim kodzie przerwan które moga konfliktowac, spróbuj inaczej rozwiazac te konfliktujace, ew. skrócic obsluge przerwan, mniej krytyczne czasowo rzeczy przerzucic z obslugi przerwania do zakolejkowania i pozniejszego wykonania w main() Zreszta tak sobie ogólnie gdybam, nie wiem co tam masz.

DJ napisał(a):

Mam najprostszy programik na ATmega32 @ 8Mhz:

int main(void) { uartswSetBaudRate(4800); uartswInit();

uartswSendByte(0x65); uartswSendByte(0x66); }

Na terminalu pojawia mi się M& czasem 53.

Czy ktoś może potwierdzić, że ta funkcja działa ?

tomi napisał(a):

Przy takiej ogromnej predkosci transmisji to mozesz przeciez nawet karta muzyczna zarejestrowac wyjscie z tego uartu i obejrzec/sprawdzic czasy/bity czy sie zgadzaja...

Nie uzywalem, ale powiem tak: jesli jestes PEWNY co do tego, ze odbiornik i linia transmisyjna sa OK (przetestowales z innym nadajnikiem), to "na logike" czeste przeklamania musza byc spowodowane przez nadajnik. Byc moze ta biblioteka wymaga jakichs dodatkowych ustawien? Dla pewnosci przejzyj przebiegi jakimkolwiek analizatorem - to bedzie cenna informacja :).

tomi przemówił ludzkim głosem:

te 8MHz to z wewnętrznego generatora RC, czy z kwarcu ?

Tak na pierwszy rzut oka - czy w plikach .h (ewentualnie w Makefile) ustawiles poprawne F_CPU, moze F_OSC

Moge Ci te biblioteke sprawdzic, ale najwczesniej w sobote, bo chwilowo mam niekompletne zasoby sprzetowe.

Aha - czym kompilujesz? (wersja) i podaj wersje uzywanego Procyon AVRlib

A czy mialoby to jakies kolosalne znaczenie? przeciez zegar nie moze "plywac" na tyle zeby byly takie przeklamania na wolnym uart'cie. Gdyby byla stala odchylka w czestotliwosci cpu, to chyba zawsze bylby odebrany ten sam znak, lub w najgorszym razie frame error na odbiorniku (zaleznie jaki znak i/lub w która strone odchylka)

Dla przykladu - po rozpisaniu binarnie nadanego 0x55 i odebranego 0x4D nijak nie wychodzi ze to blad w timingu

Fajnie sobie pogdybac ;) a tu trzeba skompilowac, podlaczyc analizator i obejrzec...

DJ przemówił ludzkim głosem:

Autor nie napisał nigdzie, czy sprawdza FE, a co do tego, że odebrany byłby zawsze ten sam znak to się nie zgodzę. Wszystko zależy od tego jak i ile razy odbiornik próbkuje stan bitu. Właśnie zmontowałem sobie układ, który nadaje na prędkości ~5000 (odbiór na 4800, błąd >4%), i co kilka odebranych bajtów zmienia się wartość.

Oczywiście, w końcu p.m.e jeszcze nie ma statusu szklanej kuli :-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required