| Author |
Message
|
Mad Bekon Poziom 19

Joined: 26 Jun 2003 Posts: 687 Location: Katowice
|
#1
18 Sep 2007 09:12 Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
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?
|
|
| Back to top |
|
 |
Google

|
#
18 Sep 2007 09:12 |
|
|
|
|
|
| Back to top |
|
 |
redart Poziom 18

Joined: 31 Oct 2004 Posts: 528 Location: Lublin
|
#2
18 Sep 2007 10:12 Re: Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
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.
|
|
| Back to top |
|
 |
Google

|
#
18 Sep 2007 10:12 |
|
|
|
|
|
| Back to top |
|
 |
marek_Łódź Poziom 23

Joined: 23 Dec 2004 Posts: 3131 Location: Łódź
|
#3
18 Sep 2007 11:12 Re: Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
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
|
|
| Back to top |
|
 |
Google

|
#
18 Sep 2007 11:12 |
|
|
|
|
|
| Back to top |
|
 |
szelus Poziom 20

Joined: 12 Jul 2004 Posts: 1016
|
#4
18 Sep 2007 13:03 Re: Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
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ąć.
|
|
| Back to top |
|
 |
Mad Bekon Poziom 19

Joined: 26 Jun 2003 Posts: 687 Location: Katowice
|
#5
18 Sep 2007 21:28 Re: Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
Do tego wypadałoby jakimś Timerem odmierzać czas, między wystąpieniami zmian i coś całkiem niezłego mogłoby z tego wyjść...
|
|
| Back to top |
|
 |
Google

|
#
18 Sep 2007 21:28 |
|
|
|
|
|
| Back to top |
|
 |
marek_Łódź Poziom 23

Joined: 23 Dec 2004 Posts: 3131 Location: Łódź
|
#6
20 Oct 2007 19:32 Re: Prosty Analizator Stanów Logicznych Atmega8 |
|
|
|
| szelus wrote: |
| Niektóre atmelki (np. mega88) |
ATTiny2313 też ;-)
|
|
| Back to top |
|
 |