Załóżmy ze mam sygnał zegarowy o częstotliwości 100MHz +-10% (okres od
9.09ns do 11.11ns) I dziele go przez 10 i po podziale mamy 10MHz+-10% (błąd wzgledny)
Z tego wynika, ze po podziale czas trwania okresu powinien "rozjechac sie od 90ns do 111ns. A jest przeciez jest rozjechany tylko o niedokładność zegara ! (9.09ns-11.11ns) Gdzie robie błąd w rozumowaniu ?
A sprawa jest taka że w MSP430 chcieliśmy zastosować zegar z wewnetrznego generatora RC. Ale taki zegar ma rozrzut od 800K do 1.5MHz i niestety z UART powiedział dość....:) Nawet dla 1200b :)
No ale nic nie stoi na przeszkodzie, zeby transmisje poprzedzic czyms w stylu AA55 i w programie synchronizowac sie z tym sygnalem. Wtedy twoja czastotliwosc nie ma wiekszego znaczenia (o ile dzielnik dla RSa potrafi wystarczajaco sie dostroic). Jesli w trakcie dzialania oscylator ci plywa to mozesz taka synchronizacje okresowo powtarzac. Jeszcze inna mozliwosc to manchaster, niektore AVRy maja stosowny dekoder na pokladzie.
Adamie! Ja nigdy i nigdzie nie napisałem, że sie nie da oraz, że nie chcemy się wysilać. :) Rozwiązań jest mnóstwo (np. autosynchronizacja o które pisze T.M.F.). Albo na przykład mozna skorzystać z prekalibrowanych zegarów, których dane sa we FLASHu. MSP... Spokojnie.
Ja mam spojrzeć na problem z punktu widzenia DfM a to naprawdę zmienia sposób patrzenia, gdzie każda sekunda pracy automatu kosztuje ileś tam setnych centa co dla miliona sztuk daje konkretne pieniądze...
Wracając do początku - prosty podział zegara nie załatwi sprawy z UARTem a dodatkowo rozrzut technologiczny na poziomie 0.8-1.5MHz może mieć wpływ na zegar we FLASH Memory Timing Generator Rozwiązaniem jest dla nas użycie danych kalibracyjnych, przy których stabilność zegara jest już OK. Pozdrawiam, M.
PS Czy to z Tobą kiedyś był ten 'deal' dla Hadasa -AZ-COM ?? (PCB) Mój GG się nie zmienił ale jestem dostępny tylko wieczorami ;)
No bo to jest tak: jitter jest niezależny od częstości ale szumy fazowe skalują się z kwadratem harmonicznej. Więc dzielenie nie zlikwiduje jitteru. Ale być może wolne transmisje mają mniejsze wymaganie co do pływań czasu nadejścia zboczy, więc na 1200bps da się coś przepchać. W sumie trudno cokolwiek więcej doradzić przy małej liczbie szczegółów. Ale +/- 10% to dużo, nawet bez podania skali czasu na jakiej to pływa.
Dzięki Filip. To postaram się przedstawić problem (choć rozwiązanie już mamy)
Jest układ mikroprocesorowy gdzie sygnał zegarowy MCLK jest generowany z wewnętrznego generatora RC (R zewnętrzne tak po prawdzie)
Średnie częstotliwość takiego zegara w naszej konfiguracji 1.048MHz
Dla takiej częstotliwości ustawiamy rejestry podziału/konfiguracji zegara dla UART dla predkości 9600b.
Niespodzianka - Częstotliwość zegara MCLK może sie zmieniać w zakresie 0.8 - 1.5MHz w zależności od procesora (fizycznie od chipu). Taka technologia - wiadomo jak z pojemnościami robionymi w krzemie.
Dla takiego "rozrzutu" częstotliwości nie da się znaleźć jednego ustawienia rejestrów, przy którym działał by UART (nawet dla 1200b) Indywidualne strojenie UARTA do częstotliwości zegara MCLK za duzo kosztuje podczas produkcji.
Stąd więc moje pytanie czy aby czasem błąd zegara nie podzieli się przez zastosowanie dzielników - nie podzieli się gdyż względny błąd jest stały. Juz wiem gdzie się myliłem.
Ani jitter ani szumy fazowe tutaj nie maja wpływu tylko dokładność pojemności w krzemie....
Witam Taki problem pojawia się chyba w każdym procku popędzanym wewnętrznym oscylatorem RC. Nie znam MSP430, ale z powodzeniem uzyskuję 9600bps (a i z 19200 też nie ma większych problemów) na AVR-ach poganianych wewnętrznym oscylatorem. Tu również występuje problem, że co procek to inna czastota, ale AVR-y mają wewnętrzny rejestr kalibracji oscylatora wewnętrznego. Po zaprogramowaniu kalibruję ten oscylator i wartość zapamiętuję w EEPROM-ie. Rozwiązanie daje mi wystarczającą stabilność w dość szerokim zakresie temperatur.
Dzięki Grzegorz. Jak juz napisałem wyżej. W MSP da się dobrać tak współczynniki że by RS zadziałał z różnymi zegarami. Problem jest że trudno dobierać te współczynniki indywidualnie dla każdego egzemplarza na linii produkcyjnej... Tak jak pisałem wczesniej - użyjemy danych kalibracyjnych dla DCO
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.