logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przekłamania danych przy 36 rejestrach 74HC574 na 1,1m - ATMega32

Johny_Bit 29 Mar 2012 12:17 3209 21
  • #1 10732152
    Johny_Bit
    Poziom 11  
    Witam.

    Po raz kolejny potrzebuje waszej pomocy.
    Mam następujący schemat (przepraszam za mocne uproszczenie).
    Przekłamania danych przy 36 rejestrach 74HC574 na 1,1m - ATMega32
    Jak nie trudno się połapać jest to coś w rodzaju tablicy LED.
    Wiem że linie wejść lepiej buło by dać przed rezystorami (połączyć je bezpośrednio z wyjściem poprzedniego rejestru) ale takie rozwiązanie znacznie uprościło płytkę.

    Całość działa tak:
    - tranzystory NPN gaszą diody LED odłączając je od GND
    - na linie data są kolejno podawane odpowiednie wartości i przesuwane sygnałem CLK do następnego rejestru
    - diody LED są zaświecane na 200ms
    - cały cykl się powtarza w nieskończoność z różnymi danymi

    Niby wszystko działa tak jak sobie zaplanowałem. Wszystko jest super dopóki nie przekroczę pewnej liczy rejestrów. Mam 32 takie 74HC574 na długości 1m i wszystko jest OK. Dokładam jeszcze 4 rejestry i mam w sumie 1,1m i w tym momencie zaczynają się schody.
    Na transmitowanych danych pojawiają się przekłamania. Wygląda to mniej więcej tak jakby niektóre rejestry dostawały podwójny sygnał CLK na jeden cykl. Kiedyś czytałem że na takich długich liniach należy stosować jakieś dodatkowe elementy ale teraz nie mogę znaleźć tego tematu.

    Proszę więc o pomoc jaka może być przyczyna takiego stanu rzeczy. Czy to wina długości linii CLK a może czegoś innego.
    Za pomoc oczywiście punkty.

    Pozdrawiam.
  • #2 10732208
    jarekz_2
    Poziom 16  
    Johny_Bit napisał:
    (...)jaka może być przyczyna takiego stanu rzeczy. Czy to wina długości linii CLK a może czegoś innego(...)
    Długa linia CLK zapewne „dzwoni“, więc do rejestrów mogą być niepotrzebnie wpisywane dane „nowe“ zamiast „starych“ (wpisanych do poprzedzającego rejestru poprzednim zboczem zegara). Można próbować poprawić sygnał zegarowy, dając mu w szereg (przy mikrokontrolerze) rezystor szeregowy 100...1000 omów. Można też wprowadzić drugą linię zegarową, na której będzie zegar przesunięty w fazie o 180°, a która będzie taktowała co drugi przerzutnik.
  • #3 10732513
    Johny_Bit
    Poziom 11  
    100R duże pogorszenie
    300R średnie pogorszenie
    1k niewielkie pogorszenie
    3k3 bez zmian

    Zastanawiam się czy może uC nie daje rady naładować bramek CLK tak dużej ilości rejestrów? Ustawiałem większe "martwe" czasy żeby na pewno wszystko się naładowało i nic.
  • #4 10732769
    piotrva
    VIP Zasłużony dla elektroda
    Masz dostęp do oscyloskopu lub analizatora stanów logicznych?
    Szczerze powiedziawszy poprosiłbym o jakiś normalny schemat z programu do schematów...
  • #5 10733039
    janbernat
    Poziom 38  
    Sumują Ci się czasy propagacji między wejściem a wyjściem kolejnych przerzutników.
    Dla jednego to będzie kilkanaście- kilkadziesiąt ns.
    Ale dla 32 wchodzimy już w us.
    A sygnał CLK dochodzi do układów prawie w tym samym czasie.
    No i zaczyna się wszystko "rozjeżdżać".
  • #6 10733232
    Johny_Bit
    Poziom 11  
    piotrva napisał:
    Masz dostęp do oscyloskopu lub analizatora stanów logicznych?

    Teoretycznie tak ale praktycznie nie. Oscyl został w domu 150km dalej. Po prostu nie mieści mi się to wszystko w bloku.

    janbernat napisał:
    Sumują Ci się czasy propagacji między wejściem a wyjściem kolejnych przerzutników.

    Może i to faktycznie coś z tego typu zjawisk ale ciekawe jest to że najwięcej błędów pojawia się w przedziale 8-12 i kilka ostatnich reszta jest OK co teoretycznie wyklucza propagację.
  • #7 10733689
    rafk
    Poziom 13  
    Może coś takiego, że CLK również przechodziłby "szeregowo" przez każdy blok '574?
    Impuls zegarowy powodowałby przepisanie zawartości na wyjście ale do następnego bloku byłby przekazywany z opóźnieniem takim jak czas propagacji pojedynczego '574 (plus, profilaktycznie, czas propagacji jednej bramki). Wtedy długość łańcucha nie miałaby aż takiego znaczenia. Jedynie przy ustawianiu ZAŚWIEĆ można by pilnować czasu, min. czas przepłynięcia CLK przez cały łańcuch po wystawieniu ostatnich danych.
  • #8 10733709
    krru
    Poziom 33  
    1. Dlaczego te rezystory są połączone pomiędzy wyjściami jednego a wejściami następnego układu? Ja bym raczej dał je szeregowo z LEDami.
    2. Dlaczego stosujesz rejestry równoległe - prościej dać szeregowe (4094/74595) - układów będziesz miał tyle samo, ale mniejszych.
  • #9 10733772
    rafk
    Poziom 13  
    krru:
    Pomysł całkiem niezły. Zalety:
    - nie trzeba przejmować się czasami,
    - zamiast 10 wyprowadzeń uc potrzebne 3 (dane, zegar, przepisanie do zatrzasku 595)
    - no i, dzięki zatrzaskom, Autor praktycznie nie będzie musiał gasić wyświetlacza (obecnie musiał na czas wpisywania zawartości). Zapisze nową zawartość w trakcie wyświetlania starej.
  • #10 10734120
    Johny_Bit
    Poziom 11  
    rafk napisał:
    Może coś takiego, że CLK również przechodziłby "szeregowo" przez każdy blok '574?

    Myślałem o tym ale ilość wyprowadzeń jest "na styk" a na płytce ciasno i dla tego nie da rady puścić tego w taki sposób. Choć moim zdaniem to nie wina propagacji. Bardziej skłaniał bym się ku jakimś zakłóceniom bo gdyby to była kwestia propagacji to od pewnego momentu obraz był by przekłamany aż do samego końca a tutaj jest tak że obraz sypie się chwilami blisko początku i na samym końcu. Kolejna sprawa to fakt iż zakłócenia pojawiają się tylko na niektórych liniach a pozostałe są OK.

    krru napisał:
    Dlaczego te rezystory są połączone pomiędzy wyjściami jednego a wejściami następnego układu?
    Johny_Bit napisał:
    Wiem że linie wejść lepiej buło by dać przed rezystorami (połączyć je bezpośrednio z wyjściem poprzedniego rejestru) ale takie rozwiązanie znacznie uprościło płytkę.

    Na której jest niemiłosiernie ciasno. Gdybym zrobił to inaczej to trzeba by było iść w 2 warstwy.

    krru napisał:
    Dlaczego stosujesz rejestry równoległe - prościej dać szeregowe (4094/74595) - układów będziesz miał tyle samo, ale mniejszych.

    Bo całość działa jako taki niby ekran. Każda zmiana klatki to przerysowanie pełnej matrycy. Równolegle robię to 8x szybciej niż szeregowo a i tak widać nieznaczne migotanie. Gdyby było to robione szeregowo czas wypełniania matrycy był by zbyt długi. Matrycę i tak muszę zgasić na czas wypełniania nową klatka bo obraz by się rozmywał.

    rafk napisał:
    - nie trzeba przejmować się czasami,

    To raczej nie wina czasów. Kiedy mam 32 rejestry wszystko jest OK a przy 36 już jest źle i tak jak pisałem wcześniej rozumiał bym gdyby sypała się tylko końcówka ale dołożenie tych 4 rejestrów powoduje powstawanie zakłóceń również na początku.

    Dodatkowo teraz tak sobie myślę że przecież przy sygnale CLK zawsze dane są pobierane od sąsiedniego rejestru więc istnienie propagacji nie ma tutaj racji bytu!!! Przecież to nie 32 pobiera dane od 1 tylko 2 od 1 a 3 od 2 itd. W takim wypadku ich ilość nie ma znaczenia. Żeby zapełnić je wszystkie muszę podać 32 sygnały CLK i zawsze dane pobierane są od poprzednika jedynie pierwszy bierze je od proca.

    rafk napisał:
    - zamiast 10 wyprowadzeń uc potrzebne 3 (dane, zegar, przepisanie do zatrzasku 595)

    Wolnych wyprowadzeń mam jeszcze 9szt. więc nie ma co oszczędzać :)

    rafk napisał:
    - no i, dzięki zatrzaskom, Autor praktycznie nie będzie musiał gasić wyświetlacza (obecnie musiał na czas wpisywania zawartości). Zapisze nową zawartość w trakcie wyświetlania starej.

    Na czas rysowania nowej klatki i tak muszę zgasić wyświetlacz bo obraz się będzie rozmywał. To gaszenie działa jak koło z przesłoną w projektorze kinowym. Bez niego widać by było przesuwającą się taśmę z klatkami zamiast animacji.

    Czy ktoś ma jeszcze jakieś pomysły?
    Udało mi się nieco poprawić sytuacje dodając rezystor 100R ale na samym końcu łańcucha a nie tak jak proponował jeden z was przy uC. Ilość błędów się zmniejszyła ale jeszcze się zdarzają.

    Najciekawsze jest to że są one w miarę powtarzalne. Poszczególne przekłamania w każdej pętli wyświetlania są do siebie bardzo podobne. Płytki sprawdziłem 10x i są OK. O ich poprawności świadczy też prawidłowa praca przy ich mniejszej ilości.
  • #11 10734316
    krru
    Poziom 33  
    Johny_Bit napisał:

    krru napisał:
    Dlaczego te rezystory są połączone pomiędzy wyjściami jednego a wejściami następnego układu?
    Johny_Bit napisał:
    Wiem że linie wejść lepiej buło by dać przed rezystorami (połączyć je bezpośrednio z wyjściem poprzedniego rejestru) ale takie rozwiązanie znacznie uprościło płytkę.

    Na której jest niemiłosiernie ciasno. Gdybym zrobił to inaczej to trzeba by było iść w 2 warstwy.

    krru napisał:
    Dlaczego stosujesz rejestry równoległe - prościej dać szeregowe (4094/74595) - układów będziesz miał tyle samo, ale mniejszych.

    Bo całość działa jako taki niby ekran. Każda zmiana klatki to przerysowanie pełnej matrycy. Równolegle robię to 8x szybciej niż szeregowo a i tak widać nieznaczne migotanie. Gdyby było to robione szeregowo czas wypełniania matrycy był by zbyt długi. Matrycę i tak muszę zgasić na czas wypełniania nową klatka bo obraz by się rozmywał.


    Niekoniecznie trzeba wszystkie te rejestry szeregowe łączyć szeregowo i mieć tylko 3 linie sterujące.
    Masz 32 układy - możesz dać 8 szeregów po 4 układy, każdy szereg do innej linii portu i nawet sterowanie pozostanie takie same jak teraz, tyko będziesz miał mniej połączeń na płytce - większość będzie wewnątrz układów scalonych.
    Układy SIPO (seril input paraller output) są mniejsze - 16 nózek zamiast 20 - masz więcej miejsca na płytce.
    No i układy te (4094/74595) mają zatrzaski na wyjściach dzięki temu nie trzeba wygaszać wyświetlania na czas wpisywania danych. Nowa zawartość wchodzi do rejestru przesuwającego, a zatrzask cały czas trzyma starą wartość. Potem jednym impulsem się przepisuje dane.

    W ogóle to są jeszcze lepsze układy - tylko nie pamiętam teraz jak się nazywają, które mają 16 wyjść i to od razu prądowych - nie trzeba rezystorów.
  • #12 10734642
    Johny_Bit
    Poziom 11  
    No to są jakieś sensowne argumenty.
    Układ 4094 odpada bo ma za mały prądy wyjściowy. Musiał bym dorzucić do niego np ULN2803. Ten 74595 wygląda ciekawie i ma bardziej sensowny prąd. Ja wybrałem te 74HC574 bo mają duży prąd wyjściowy dzięki czemu nie muszę dodatkowo stosować ULN-ów.
    To że dam kilka magistrali szeregowych może przyspieszy nieco transfer a może i nie bo będzie on i tak wolniejszy ze względu na konieczność podania dużo większej ilości sygnałów zegarowych co przy tej ilości LED-ów ma spore znaczenie. Na plus działa możliwość pracy zatrzaskowej co nieco niweluje konieczność szybkiego wypełniania ale i spowalnia wyświetlany obraz.

    To będę miał na uwadze na przyszłość ale teraz chciałbym jakoś obłaskawić istniejący układ. Płytki są już ocynowane polutowane i aż łezka w oku lata że to nie hula tak jak powinno.

    Nie wrypał bym się tak ale układ miał mieć docelowo 10 płytek (na każdej 4 rejestry). Złożyłem 2 prototypowe i było OK. Składałem kolejne i nadal było OK aż doszedłem do 9 i zaczęły się schody. Odwrotu za bardzo nie ma bo zużyłem furę laminatu i włożyłem wiele pracy. Kurcze oscyl by wszystko wyjaśnił.

    ja skłaniał bym się albo ku zakłóceniom albo zbyt małym prądem przez co pojemność bramek powoduje nierównomierne odczytanie sygnału CLK przez rejestry. Jeszcze jutro spróbuje w pająka dać tam jakiś szybki tranzystor. Zobaczymy co z tego wyniknie.
  • #13 10734685
    Konto nie istnieje
    Konto nie istnieje  
  • #14 10735565
    jarekz_2
    Poziom 16  
    Johny_Bit napisał:
    (...)100R duże pogorszenie
    300R średnie pogorszenie
    1k niewielkie pogorszenie
    3k3 bez zmian
    ??? Hmm... Czy nie było przypadkiem odwrotnie, tzn. im większy rezystor tym gorzej?
    Johny_Bit napisał:
    (...)chciałbym jakoś obłaskawić istniejący układ. Płytki są już ocynowane polutowane i aż łezka w oku lata że to nie hula tak jak powinno(...)Odwrotu za bardzo nie ma bo zużyłem furę laminatu i włożyłem wiele pracy(...)
    Proponuję:
    - utworzyć dwie linie zegarowe (CLK1 i CLK2),
    - wpis danych polegałby na wytwarzaniu na przemian czterech impulsów na CLK1 i czterech na CLK2, tyle razy ile jest par płytek,
    - zbocza na CLK1 dokonują wpisów do płytek „parzystych“ (numerujemy je od zera, zaczynając od tej przy mikrokontrolerze), zbocza na CLK2 - do płytek „nieparzystych“,
    - obie linie zegarowe zbuforować jakimiś „mocnymi“ układami (np. po dwa bufory HC125 łączone równolegle), a na wyjściu buforów dać rezystor. Jego wartość dobrać doświadczalnie (0?...22Ω?...100Ω? ...kilkaset Ω?).
    Prawdopodobnie układ zadziała poprawnie bez względu na ilość płytek i projekt da się uratować... :D
  • #15 10736003
    krru
    Poziom 33  
    jarekz_2 napisał:
    Proponuję:
    - utworzyć dwie linie zegarowe (CLK1 i CLK2),
    - wpis danych polegałby na wytwarzaniu na przemian czterech impulsów na CLK1 i czterech na CLK2, tyle razy ile jest par płytek,
    - zbocza na CLK1 dokonują wpisów do płytek „parzystych“ (numerujemy je od zera, zaczynając od tej przy mikrokontrolerze), zbocza na CLK2 - do płytek „nieparzystych“,


    Jesteś pewny, że taki układ by zadziałał? Wydaje mi się że trzeba by podwoić liczbę rejestrów. To coś jak układy Master-Slave - tam potrzeba dwóch przerzutników na bit.
    Inaczej będą identyczne dane w parach rejestrów - zgubimy połowę danych.
    Może wrzuć jakąś propozycję schematu.


    jarekz_2 napisał:

    - obie linie zegarowe zbuforować jakimiś „mocnymi“ układami (np. po dwa bufory HC125 łączone równolegle), a na wyjściu buforów dać rezystor. Jego wartość dobrać doświadczalnie (0?...22Ω?...100Ω? ...kilkaset Ω?).
    Prawdopodobnie układ zadziała poprawnie bez względu na ilość płytek i projekt da się uratować... :D


    Można też spróbować w drugą stronę - dopasować linię po otwartej stronie.
    Dajemy silne nadajniki, linia idzie jak najbliżej wejść CLK, tak by nie było odgałęzień, a na końcu dzielnik rezystorowy dający 3.3V i 150Ω jako terminator.
    Może masz stary sprzęt sieciowy - taki ethernet na koncentryku. Terminator, trójniki itp.

    Zastanawiam się też na ile korzystne byłoby puszczenie zegara w przeciwnym kierunku niż dane - tak by zegar docierał do szeregu układów od przeciwnej strony niż dane i jako pierwszy dostawałby zegar układ ostatni w szeregu przepisywania danych.

    Kolejnym pomysł jest trochę podobny do pomysłu poprzednika - dwie linie zegara, użyte jako set - reset. Na każdej płytce prosty przerzutnik RS (połowa 7474 albo dwie bramki)
    działający podobnie do układu eliminacji drgań styków. Wyjście przerzutnika jako sygnał zegarowy dla 574. Być może jeden RS na kilka płytek. Podajemy impuls najpierw na jedną linie - wszystkie zegary przyjmują stan wysoki, późniejsze dzwonienie nie przeszkadza. Potem impuls na drugą linię - zegary przyjmują stan niski.
  • #16 10736015
    Johny_Bit
    Poziom 11  
    jarekz_2 napisał:
    ??? Hmm... Czy nie było przypadkiem odwrotnie, tzn. im większy rezystor tym gorzej?

    Było dokładnie tak jak napisałem tylko że popełniłem pewien błąd. Mowa była o połączeniu szeregowym a ja się walnąłem i zrobiłem to równolegle. Pomyłka wyniknęła z tego że miałem tam wcześniej rezystor 300R a później 240R w szereg i było dużo gorzej. Po zastąpieniu go zworą efekt znacznie się poprawił.

    jarekz_2 napisał:
    - utworzyć dwie linie zegarowe (CLK1 i CLK2),

    Pomysł jest dobry ale dlaczego 2 linie dowolnej długości mają działać a 1 nie ma prawa?
    Dodatkowo trzeba by pociągnąć na płytkach drugą linie CLK co w tej chwili jest niewykonalne. Najlepiej było by gdyby całość udało się załatwić jakimś prostym sposobem ingerując jedynie w układ sterowania a płytki zostawić w spokoju.

    Zrobię za chwilę test z mniejszym rezystorem w szereg przy uC (ostatnio był 240R) oraz z tranzystorem i zobaczę czy coś z tego wyniknie.
  • #17 10736223
    jarekz_2
    Poziom 16  
    krru napisał:
    (...)Jesteś pewny, że taki układ by zadziałał? Wydaje mi się że trzeba by podwoić liczbę rejestrów(...)
    Wychodzę z założenia, że pojedyncza płytka (4 rejestry HC574) działa poprawnie, o ile tylko dane na wejściu jej 1. przerzutnika są stabilne w momencie narastającego zbocza zegara - i to właśnie trzeba (i wystarczy) zapewnić.
    Dwufazowy zegar CLK1/CLK2 ma spowodować, że w momencie gdy n-ta płytka otrzyma narastające zbocze zegara, to dane na jej wejściu - pochodzące z wyjścia płytki (n-1), taktowanej zegarem o przeciwnej fazie - są już od pół okresu zegara stabilne!
    krru napisał:
    (...)Można też spróbować w drugą stronę - dopasować linię po otwartej stronie. Dajemy silne nadajniki, linia idzie jak najbliżej wejść CLK, tak by nie było odgałęzień, a na końcu dzielnik rezystorowy dający 3.3V i 150Ω jako terminator. Może masz stary sprzęt sieciowy - taki ethernet na koncentryku. Terminator, trójniki itp(...)
    Buforowanie sygnałów zegarowych to jakby opcja dodatkowa, mająca ogólnie poprawić kształt tych przebiegów. Można rzecz jasna, jak sugeruje kol. krru, kombinować z zapewnieniem dopasowania do impedancji falowej linii zegarowych.

    (...)Dodatkowo trzeba by pociągnąć na płytkach drugą linie CLK co w tej chwili jest niewykonalne(...)
    Nie rozumiem czemu. Linię CLK1 „przeciągasz“ przez płytki pierwszą, trzecią, piątą, ..., natomiast linię CLK2 - przez drugą, czwartą, szóstą, ... Jeśli chodzi o zegar, to zamiast jednego ciągu płytek masz niejako dwa ciągi, każdy o dwukrotnie mniejszej długości. Jeśli chodzi o dane - jest po staremu, czyli jeden ciąg.
    Podkreślam - próbuję „uratować“ projekt bez projektowania i wykonywania nowych płytek z rejestrami!
  • #18 10736446
    Johny_Bit
    Poziom 11  
    jarekz_2 napisał:
    Wychodzę z założenia, że pojedyncza płytka (4 rejestry HC574) działa poprawnie, o ile tylko dane na wejściu jej 1. przerzutnika są stabilne w momencie narastającego zbocza zegara

    Zgadza się. Tak właśnie jest.
    jarekz_2 napisał:
    Dwufazowy zegar CLK1/CLK2 ma spowodować, że w momencie gdy n-ta płytka otrzyma narastające zbocze zegara, to dane na jej wejściu - pochodzące z wyjścia płytki (n-1), taktowanej zegarem o przeciwnej fazie - są już od pół okresu zegara stabilne!

    A czy dwufazowy zegar nie spowoduje przekłamań? Oba zegary musiały by działać dokładnie w tym samym momencie bo każdy rejestr pobiera dane od swojego sąsiada. Jeśli sygnały nie będą podane jednocześnie to drugi sygnał spowoduje przepisanie od sąsiadów już zaktualizowanych danych.

    jarekz_2 napisał:
    Linię CLK1 „przeciągasz“ przez płytki pierwszą, trzecią, piątą, ..., natomiast linię CLK2 - przez drugą, czwartą, szóstą, ... Jeśli chodzi o zegar, to zamiast jednego ciągu płytek masz niejako dwa ciągi

    Tyle że płytki mają już porobione konektory i są rozpinane do transportu przez co pociąganie osobnych kabli odpada. Mógłbym zrobić coś takiego dla siebie ale jest to projekt dla klienta który raczej nie spojrzy przychylnym okiem na takie modyfikacje z kablami.

    jarekz_2 napisał:
    Podkreślam - próbuję „uratować“ projekt bez projektowania i wykonywania nowych płytek z rejestrami!

    I właśnie dokładnie o to mi chodzi.

    Po południu siądę przy tym i pobawię się z dopasowaniem potencjometrem wieloobrotowym jak to nie da rady to pomyślę nad tranzystorem pomiędzy prockiem a linią CLK.
  • #19 10738553
    jarekz_2
    Poziom 16  
    krru napisał:
    (...)Można też spróbować w drugą stronę - dopasować linię po otwartej stronie. Dajemy silne nadajniki, linia idzie jak najbliżej wejść CLK, tak by nie było odgałęzień, a na końcu dzielnik rezystorowy dający 3.3V i 150Ω jako terminator.
    Zastanawiam się też na ile korzystne byłoby puszczenie zegara w przeciwnym kierunku niż dane - tak by zegar docierał do szeregu układów od przeciwnej strony niż dane i jako pierwszy dostawałby zegar układ ostatni w szeregu przepisywania danych(...)
    Pokombinowałem trochę i stwierdzam, że ten Pan ma 100% racji.
    Cały problem wynika z systematycznego opóźniania się zbocza zegara w miarę oddalania się od mikrokontrolera, co powoduje, że ciąg rejestrów przestaje działać jak rejestr przesuwny. Do tego być może dochodzi "dzwonienie" linii zegarowej, co powoduje dodatkowe wpisy do rejestrów w momentach kiedy na ich wejściach nie ma już tych danych co trzeba.
    Moim zdaniem uratować projekt może przede wszystkim puszczenie zegara od innej strony, tzn. prowadzenie go od płytek "końcowych" (za "początkową" uznajemy tę, której wejścia danych są sterowane wprost z mikrokontrolera). Poza tym należy wytłumić drgania na linii zegara (poprawić dopasowanie falowe) szeregowym rezystorem o eksperymentalnie dobranej wartości.
    To wszystko ma dużą szansę rozwiązać problem bez jakiejkolwiek zmiany w konstrukcji modułów.
  • #20 10740154
    Johny_Bit
    Poziom 11  
    Udało się.
    Jednak kolega jarekz_2 miał rację na samym początku.
    Jak wspominałem układ miał rezystor w szereg zaraz przy uC ale był to najpierw 300R a później 240R. Teraz wlutowałem tam na kabelkach potencjometr wieloobrotowy (wszystkie elementy mam SMD) i co się okazało?
    Przy 90R układ działa idealnie. Zero przekłamań. Pobawię się jeszcze trochę w testy i napisze ostatecznie czy wszystko jest OK oraz przyznam punkty za pomoc.

    Mam jeszcze wielką prośbę. Jako że jestem inż. informatyki i znam tylko podstawy elektroniki prosił bym aby ktoś bardzo łopatologicznie wyjaśnił mi co to jest impedancja? Czy jest jakaś różnica pomiędzy impedancją a impedancją falową?
    Wiem że chodzi tutaj mniej więcej o opór przy prądzie stałym. Próbowałem poczytać trochę o tym ale te regułki z podręczników jakoś do mnie nie trafiają.
  • Pomocny post
    #21 10740530
    jarekz_2
    Poziom 16  
    Johny_Bit napisał:
    (...)prosiłbym aby ktoś bardzo łopatologicznie wyjaśnił mi co to jest impedancja? Czy jest jakaś różnica pomiędzy impedancją a impedancją falową? Wiem że chodzi tutaj mniej więcej o opór przy prądzie stałym. Próbowałem poczytać trochę o tym ale te regułki z podręczników jakoś do mnie nie trafiają.
    Ja tylko objaśnię czemu rezystor szeregowy pomaga w takich przypadkach. Linia CLK ma pewną rezystancję R, indukcyjność L i pojemność C. Jest więc w przybliżeniu - jeśli traktujemy elementy RLC jako skupione - obwodem szeregowym RLC. Taki obwód, o ile jego dobroć Q = 1/R*sqrt(L/C) jest wystarczająco duża, oscyluje („dzwoni”), pobudzony szybkim zboczem sygnału. Dobroć możemy zmniejszyć zwiększając R (na L i C raczej nie mamy wpływu).
    Jest też podejście falowe, dokładniejsze. Elementy RLC traktuje się jako rozproszone, linię rozpatruje się jako tzw. „linię długą”, złożoną z nieskończonej liczby malutkich obwodzików dR,dL,dC, a sygnał analizuje się jako falę biegnącą wzdłuż linii. Taka linia ma pewien parametr – „impedancję falową” Rf, wyrażoną w omach. Okazuje się, że „czyste” (bez odbić) przenoszenie się fali jest możliwe tylko wtedy, gdy linia sterowana jest ze źródła napięciowego o rezystancji Rf, a na końcu linii znajduje się obciążenie również w postaci rezystancji Rf.
    I jeszcze ku przestrodze - wspomnienie:
    Podłączyłem kiedyś prowizorycznie płytkę pamięci RAM do szybkiego procesora sygnałowego. Pamięć działała źle choć regularny test pamięci nie wykrywał żadnych błędów! W końcu ustaliłem, że z powodu „dzwonienia” na linii zapisu (WR\), odbywały się dodatkowe „pasożytnicze” zapisy do pamięci w czasie do kilkunastu nanosekund po tym jak linia WR\ przyjmowała stan bierny. A w tym czasie niektóre linie adresowe przechodziły już w stan wysoki. Skutkiem były dodatkowe zapisy do komórek pamięci o wyższych adresach. Test nie wykrywał błędów, ponieważ wypełniał pamięć danymi testowymi w kolejności od najniższych do najwyższych adresów, więc pamięć po zakończeniu wypełniania miała zawsze prawidłową zawartość. Dopiero test, który zaczynał od najwyższych adresów i szedł w dół, ujawnił błędy. Dodanie rezystora 100 omów w szereg z WR\ rozwiązało problem…
  • #22 10752959
    Johny_Bit
    Poziom 11  
    Po dłuższych testach okazało się że wszystko jest OK.
    Kolega jarekz_2 otrzymuje pomógł i punkty.

    Dziękuję wszystkim za pomoc i życzę Wesołych Świąt.

    ===================================
    Zainteresowanych jak działa w pełni sprawna tablica zapraszam do tematu:
    Link
REKLAMA