Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Prosty Analizator Stanów Logicznych Atmega8

Mad Bekon 18 Wrz 2007 09:12 3353 5
  • #1 18 Wrz 2007 09:12
    Mad Bekon
    Poziom 23  

    Witam Panowie.
    Chciałem na swoje potrzeby zrobić prosty analizator stanów logicznych.
    Procek miałby odczytywać stan wejść i wrzucać do bufora a co jakiś czas bufor przerzucać do zewnętrznej pamięci Flash.

    Problemem jest to, że gdy zajmę procka zapisywaniem do Flash, występujące zmiany stanów mogą mi umknąć.

    Nie ma być to jakiś mega szybki analizator. Mniej więcej taki, żeby mógł obsłużyć prędkość I2C.

    Lepszym pomysłem byłoby wykorzystać do tego zewnętrzną pamięć RAM, do niej wrzucać stany i na koniec przerzucić do PC, ale jak wspomniałem, chcę żeby to było PROSTE.

    Ma ktoś pomysł co zrobić z takim fantem?

    0 5
  • #2 18 Wrz 2007 10:12
    redart
    Poziom 23  

    Można pokusić się o spięcie razem pinów INT0 i INT1 jako wejście próbkujące i ustawić ich wyzwalanie odwrotnym zboczem. Np: INT0 rising, zaś INT1 falling. Zmiany stanów nie umkną w trakcie zapisu do pamięci - no chyba, że używasz przerwań do czegoś innego. Aby uniknąć głupich zmian przy przykładaniu i odłączaniu sondy można zastosować switch, którego wciśnięcie aktywuje pobieranie próbek (taki analizator kiedyś spłodziłem, ale to było przed procesorami pod strzechą :wink: ).
    Pzdr.

    0
  • #3 18 Wrz 2007 11:12
    marek_Łódź
    Poziom 36  

    Uzupełniając poprzedni pomysł - spinasz wszystkie sondy na komparator cyfrowy, drugi komplet wejść komparatora spinasz z sondami przez zatrzask. Pojawienie się zbocza (zmiana poziomu) na wyjściu komparatora sygnalizuje zmianę stanów wejściowych (wystarczy jeden pin przerwania w procesorze). Po pobraniu danych przez procesor aktywizujemy programowo zatrzask ustawiając stany zgodne na komparatorze, co przygotowuje go do wykrycia kolejnej zmiany. Tak więc na 8 kanałów potrzebujemy 8-bitowy komparator i 8 bitowy zatrzask. Najlepiej by było pewnie to zrobić na jakiejś kości programowalnej, ale równie dobrze można skleić na kilku TTLach czy CMOSach. Obsługa w przerwaniu zamknie się w kilkunastu taktach zegara (pobranie z portu i zapisanie w pamięci SRAM z inkrementacją licznika, wysłanie impulsu na sterowanie zatrzaskiem), czyli jesteśmy w stanie uzyskać rozdzielczość na poziomie 1µs (pod warunkiem, że gdzieś uda nam się zgromadzić te dane).

    Inna wersja to zastosowanie dodatkowego procesorka jako sondy. Transfer danych przez spi czy usart pod kontrolą "głównej maszyny" rozwiąże problemy synchronizacyjne (mały procesor ma do obsłużenia naprzemiennie w pętli lub w przerwaniach sondy i kanał komunikacyjny, więc rozdzielczość może być podobna jak w poprzednim przypadku .

    W wersji sprzętowej sygnał z komparatora generuje impuls zapisu do pamięci po czym drugi na wejściu zatrzasku. W ten sposób można zrobić prosty analizator pracujący z prędkością zależną jedynie od czasów dostępu do kości pamięci (np. próbkowanie 100MHz jeśli zastosujemy kości szybkich SRAM). Oczywiście dla zachowania pełnej prędkości odczyt realizujemy post-mortem, czyli po zakończeniu zbierania danych.
    Taki układ można obsłużyć również bezpośrednio z PC np przez złącze równoległe drukarki bez udziału dodatkowego procesora. Oczywiście niezbędny będzie jeszcze układ wyzwalający/bramkujący pomiary a do tego ewentualnie drugi komparator, że o sondach nie wspomnę (np. wykrywanie wysokiej impedancji). Ale to już inna bajka ;-)

    Do postu poniżej - proste i eleganckie :-) . Przy zegarze 20MHz można uzyskać niezłe osiągi, a nawet na siłę pociągnąć obsługę kawałka zewnętrznego RAMu

    0
  • #4 18 Wrz 2007 13:03
    szelus
    Specjalista - Mikrokontrolery

    Niektóre atmelki (np. mega88) mają funkcję przerwania przy zmianie stanu wejścia (dowolnego). Można to wykorzystać zamiast zewnętrznych komparatorów.
    Jeżeli będziesz buforował monitorowane zmiany w RAMie i ogólna prędkość przychodzenia danych bedzie mniejsza, niż prędkość zapisu do flash-a, a zapis do flasz-a też popędzisz przerwaniami to nic nie powinno umknąć.

    0
  • #5 18 Wrz 2007 21:28
    Mad Bekon
    Poziom 23  

    Do tego wypadałoby jakimś Timerem odmierzać czas, między wystąpieniami zmian i coś całkiem niezłego mogłoby z tego wyjść...

    0
  • #6 20 Paź 2007 19:32
    marek_Łódź
    Poziom 36  

    szelus napisał:
    Niektóre atmelki (np. mega88)
    ATTiny2313 też ;-)

    0