używajcie kwarców !

Nov 08, 2013 27 Replies

Ale w którym miejscu jest synchronizacja*? Przy każdym bicie startu, czy przy pierwszym w "paczce" ? Bo jeżeli na początku paczki to moje błędy też podpadają: kilka początkowych bajtów jest zawsze w porządku, później bywają zjedzone, ale najczęściej już ich po prostu nie ma do końca transmisji. Następna przychodzi przeważnie poprawna. Nie dostałem też ani jednego błędnego bajtu - kontrola parzystości działa.

  • no dobra z tym każdym zboczem to chyba moje pobożne życzenia.

Standardem jest synchronizacja na pierwszym zboczu każdego bitu startu. Nadajnik może nadawać z dwoma bitami stopu, a odbiornik może być ustawiony na jeden bit stopu i też zadziała. Gdyby synchronizacja była na paczkę to:

- tak by nie działało,

- tolerancja na odchyłki częstotliwości byłaby jeszcze mniejsza niż jest. Czy są rozwiązania niestandardowe - nie mam pojęcia.

A może nadajnik urywa transmisję. P.G.

W dniu 2013-11-12 12:09, Piotr Gałka pisze:

No tak, tak jest OK. Myślałem o podwójnych bitach: aabbccdd, a nie o abcd1111. Podoba mi się, tylko trzeba dać dłuższy bit stopu niż jest faktycznie (chyba właśnie jedynki na końcu) - będzie dobrze.

Pozdrawiam

DD

Chyba ubogim standardem. Sam miałem problem kiedyś z taką dziwną parą:

- odbiorca synchronizował na zboczu

- nadawca przed zboczem bitu startu czasami wysyłał szpilkę i było wesoło :(

Prawidłowe implementacje nadpróbkowują np 16x i decyzja op poziomie sygnału zapada na podstawie wartości większości z tych 16-tu próbek.

Użytkownik "Mirosław Kwaśniak" snipped-for-privacy@uv.ikem.pwr.wroc.pl> napisał w wiadomości news:l5tnoe$4fl$ snipped-for-privacy@dont-email.me...

To nie wina standardu tylko nadajnika niezgodnego ze standardem.

Gdy standard powstawał, takie rozwiązanie było chyba ekonomicznie nieuzasadnione. P.G.

Prawidłowe implementacje próbkują raz po czasie połowy bitu, czy to faktycznie był bit startu.

SPI używam do czego innego, poza tym ten UART poza komunikacją Atmeg8<>Atmega128 spełnia też rolę połączenia z PC (ten sam port).

Nie urywa. Podłączyłem równolegle pod komputer i testowało się dobę - na komputerze wszystkie transmisje są prawidłowe. Po stronie linuksa mam kilka pozjadanych bajtów - jak zwykle. Teraz pytanie jak wygląda tam uart - jeśli ma "bufor" jednobajtowy, a reszta odbywa się po stronie sterownika linuksowego to może on gdzieś gubi. Przez przypadek zrobił się też inny test - miałem kiepski zasilacz i dawał na avr 5,6V i zaczęły się pojawiać błędy w transmisji: "A" zamieniało się na "@" , "=" na "<" itp. czyli tutaj pewnie kwarc by pomógł, ale napięcie i tak było dla avr za wysokie.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required