Lampa VFD -> procesor AVR

Masz nietypowy problem 'lampowy'? Spróbuj tutaj.

Moderatorzy: gsmok, tszczesn, Romekd

Awatar użytkownika
MKramer
250...374 postów
250...374 postów
Posty: 350
Rejestracja: pn, 1 stycznia 2007, 19:13
Lokalizacja: Wieliszew
Kontakt:

Lampa VFD -> procesor AVR

Post autor: MKramer »

Mam taki tylko troszkę lampowy problem, jednak wierzę, że uzyskam od Was pomoc.
Problem jest ciekawy. Jest sobie odtwarzacz CD Technics z wyświetlaczem lampowym VFD. Moim zadaniem jest odczyt numeru utworu i czas jego trwania (minuty i sekundy) i wyświetlenie tego na dużych wyświetlaczach LED w pewnym oddaleniu od CD.
Większość spraw już rozwiązałem, mam nawet gotowy prototyp, który w skrócie wygląda następująco. Dwa procesory ATTiny2313 (akurat takie mam), jeden odczytuje lampę VFD i przesyła 6 cyfr poprzez RS do drugiego procka, który wyświetla je na wyświetlaczach LED. Banał.... poza jednym szczegółem. Nie wiem jak "odczytać" lampę VFD.
W tym odtwarzaczu informacja wyświetlana jest multipleksowana. Dla mnie ważne są trzy pola (obszary ze wspólną siatką): pole numeru utworu, pole minut i pole sekund. W obrębie każdego z tych pól są dwa wskaźniki 7-segmentowe. Lampa sterowana jest standardowo impulsami 30V. W sumie więc jest 17 interesujących mnie wyprowadzeń - 14 z nich odnoszą się do segmentów obu cyfr, pozostałe 3 to identyfikacja świecącego pola.

Doradźcie jak ugryźć taki problem. Nie mam praktyki na tym polu i nie wiem jak się do tego mądrze zabrać.

Dzięki
Pozdrawiam
Mariusz Kram
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

MKramer pisze:[...]jeden odczytuje lampę VFD [...] Nie wiem jak "odczytać"
Zakładam że pierwsze "odczytać" dotyczy podłączenia a drugie interpretacji tego co odczytano? :D Zacznij od sprawdzenia czasu multipleksowania. Program najłatwiej będzie oprzeć o przerwanie PCINT. Pod warunkiem, że wystarczy czasu na jego obsługę...
Tomek
Awatar użytkownika
MKramer
250...374 postów
250...374 postów
Posty: 350
Rejestracja: pn, 1 stycznia 2007, 19:13
Lokalizacja: Wieliszew
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: MKramer »

Połączyć można chociażby poprzez tranzystory kluczujące, więc tu nie będzie raczej problemu.
Akurat jestem bez oscyloskopu i nie potrafię jednoznacznie stwierdzić jaka jest częstotliwość multipleksowania. Multimetr pokazuje coś koło 5kHz na wyprowadzeniu jednej z siatek, co wydaje mi się mało prawdopodobne - chyba ciut za dużo?

pozdrawiam

Mariusz
Pozdrawiam
Mariusz Kram
Awatar użytkownika
tszczesn
moderator
Posty: 11227
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: tszczesn »

MKramer pisze:W tym odtwarzaczu informacja wyświetlana jest multipleksowana. Dla mnie ważne są trzy pola (obszary ze wspólną siatką): pole numeru utworu, pole minut i pole sekund. W obrębie każdego z tych pól są dwa wskaźniki 7-segmentowe. Lampa sterowana jest standardowo impulsami 30V. W sumie więc jest 17 interesujących mnie wyprowadzeń - 14 z nich odnoszą się do segmentów obu cyfr, pozostałe 3 to identyfikacja świecącego pola.
Najprościej? Podłącz te 14 sygnałów do wejśc dwóch portów.
Trzy sygnały multipleksujące podłącz do wejść generujących przerwania. Ustal na wyzwalanie zboczem narastającym (bo siatki kluczowane są dodatnio). W procedurze obsługi przerwania od każdego wejścia odczytuj te czternaście linii i zapisz w pamięci, oczywiście w oddzielnych komórkach dla każdego przerwania. Program główny niech w pętli przesyła te sześć cyfr dalej. I już. Z tym, że chyba 2313 ma za mało nóg, potrzebujesz co najmniej 14+3+2 (RS232) = 19 pinów we-wy.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

MKramer pisze:[...]jestem bez oscyloskopu i nie potrafię jednoznacznie stwierdzić jaka jest częstotliwość multipleksowania.
Nie da się tego zrobić bez sprawdzenia przebiegów. Wystarczy rezystor, ogranicznik na dwóch diodach połączonych antyrównolegle i możesz wejść na kartę dźwiękową. Programów "oscyloskopowych" znajdziesz w necie bez liku.
Tomek
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

tszczesn pisze:Trzy sygnały multipleksujące podłącz do wejść generujących przerwania. Ustal na wyzwalanie zboczem narastającym (bo siatki kluczowane są dodatnio). W procedurze obsługi przerwania od każdego wejścia odczytuj te czternaście linii
Dla zapobieżenia "podżarzania" sąsiednich znaków/segmentów stosuje się czasem niewielkie opóźnienia między wystawieniem sygnałami załączającymi segmenty a wybierającymi znaki. Jeśli opóźnień nie będzie, to odczytasz segmenty akurat w chwili gdy się zmieniają. Jeśli takowe opóźnienia są, to stan na segmentach może się jeszcze nie ustalić. Proponuję jednak obejrzeć przebiegi, ustalić co jest wystawiane jako pierwsze i generalnie jakie są czasy zapalania.
Tomek
Awatar użytkownika
tszczesn
moderator
Posty: 11227
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: tszczesn »

Tomasz Gumny pisze:Dla zapobieżenia "podżarzania" sąsiednich znaków/segmentów stosuje się czasem niewielkie opóźnienia między wystawieniem sygnałami załączającymi segmenty a wybierającymi znaki. Jeśli opóźnień nie będzie, to odczytasz segmenty akurat w chwili gdy się zmieniają. Jeśli takowe opóźnienia są, to stan na segmentach może się jeszcze nie ustalić. Proponuję jednak obejrzeć przebiegi, ustalić co jest wystawiane jako pierwsze i generalnie jakie są czasy zapalania.

Owszem. I to na ogół siatki są opóźnione w stosunku do segmentów. Czyli najpierw gasimy siatkę, wystawiamy nową treść segmentów i zapalamy siatkę. A nawet jeśli nie, to kilka NOPów rozwiąże problem, procesor i tak się będzie bardzo nudził.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

tszczesn pisze:[...]nawet jeśli nie, to kilka NOPów rozwiąże problem, procesor i tak się będzie bardzo nudził.
Tak by było, gdyby program został napisany w asemblerze, a jeśli dobrze kojarzę, to autor wątku pisze w Bascomie.
Tomek
Awatar użytkownika
tszczesn
moderator
Posty: 11227
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: tszczesn »

Tomasz Gumny pisze:
tszczesn pisze:[...]nawet jeśli nie, to kilka NOPów rozwiąże problem, procesor i tak się będzie bardzo nudził.
Tak by było, gdyby program został napisany w asemblerze, a jeśli dobrze kojarzę, to autor wątku pisze w Bascomie.
?

Co ma do tego język programowania?
Awatar użytkownika
MKramer
250...374 postów
250...374 postów
Posty: 350
Rejestracja: pn, 1 stycznia 2007, 19:13
Lokalizacja: Wieliszew
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: MKramer »

W czasie Świąt znajdę czas na testy, a na razie rozważam czysto teoretycznie. Skoro segmenty są ustawiane najpierw, a potem zapalany jest znak, to czy nie wystarczyłoby osczytywać stanu segmentów w momencie zapalenia znaku? Brzmi to dośc prosto, choć wiem, że życie takie nie jest. Postaram się więc "wejść na kartę dźwiękową" i obejrzeć przebiegi.
Jak dobrze zrozumiałem, diody połączone antyrównolegle, to takie połączone równolegle, tylko na odwrót? Celem ich jest zabezpieczenie wejścia karty dźwiękowej i ograniczenie poziomu do ok. +-0,7V, czy tak?
A tak przy okazji - co to są NOPy?

pozdrawiam
Pozdrawiam
Mariusz Kram
sppp
625...1249 postów
625...1249 postów
Posty: 952
Rejestracja: pt, 23 stycznia 2009, 20:18
Lokalizacja: Legionowo

Re: Lampa VFD -> procesor AVR

Post autor: sppp »

No Operation lub No Operation Performed. Takie opuszczenie jednego (lub kilku) cykli zegarowych przez procesor.
Pozdrawiam
Sebastian

Jestem tylko amatorem, który może się mylić.
Uroczyście obiecuje, że będę dawał rezystor antyparazytowy na każdą siatkę i bramkę.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

MKramer pisze:Skoro segmenty są ustawiane najpierw, a potem zapalany jest znak, to czy nie wystarczyłoby osczytywać stanu segmentów w momencie zapalenia znaku?
Chodzi o to, żeby znaleźć właściwy moment na odczytanie. :D
MKramer pisze:Celem ich jest zabezpieczenie wejścia karty dźwiękowej i ograniczenie poziomu do ok. +-0,7V, czy tak?
Tak, a szeregowy rezystor ogranicza prąd diod i sterownika wyświetlacza. Zrób od razu dla dwóch kanałów, żeby móc oglądać zależności czasowe przebiegu zapalającego segmenty i wybierającego cyfry.
MKramer pisze:A tak przy okazji - co to są NOPy?
No OPeration - instrukcja pusta w asemblerze. Wstawiana dla przedłużenia lub wyrównania czau wykonywania fragmenu programu. W bascomie na pewno jej nie będziesz używał, dopóki nie zaczniesz robić wstawek asemblerowych.
:arrow: tszczesny - zrobiłem kiedyś na AVR obsługę enkodera (24 impulsy /obrót) na przerwaniu w Bascomie, C i asemblerze. Dla programu w Bascomie wystarczyło nieco szybsze pokręcenie gałką, żeby zaczął gubić kroki. Wychodziło, że obsługa przerwania, w którym było sprawdzenie jednego warunku i zwiększenie (zmniejszenie) jednej zmiennej, zajęło kilkanaście ms (przy kwarcu 11.0592MHz). Bascom po przyjęciu przerwania robi dużo, zapewne w większości zbędnych czynności, na które programista nie ma żadnego wpływu. Dlatego obawiam się, że przy częstotliwości multipleksowania rzędu kilkuset Hz, program w Bascomie może nie nadążyć z obsługą kolejnych przerwań.
Na tej samej zasadzie działa procedura obsługi enkodera w mierniku lamp (napisana w C). Może ktoś z użytkowników wypowie się o szybkości odczytywania enkodera?
W asemblerze taka procedura obsługi przerwania zajmuje kilkanaście taktów zegara...
Tomek
Awatar użytkownika
tszczesn
moderator
Posty: 11227
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: tszczesn »

Tomasz Gumny pisze: :arrow: tszczesny - zrobiłem kiedyś na AVR obsługę enkodera (24 impulsy /obrót) na przerwaniu w Bascomie, C i asemblerze. Dla programu w Bascomie wystarczyło nieco szybsze pokręcenie gałką, żeby zaczął gubić kroki. Wychodziło, że obsługa przerwania, w którym było sprawdzenie jednego warunku i zwiększenie (zmniejszenie) jednej zmiennej, zajęło kilkanaście ms (przy kwarcu 11.0592MHz). Bascom po przyjęciu przerwania robi dużo, zapewne w większości zbędnych czynności, na które programista nie ma żadnego wpływu. Dlatego obawiam się, że przy częstotliwości multipleksowania rzędu kilkuset Hz, program w Bascomie może nie nadążyć z obsługą kolejnych przerwań.
Na tej samej zasadzie działa procedura obsługi enkodera w mierniku lamp (napisana w C). Może ktoś z użytkowników wypowie się o szybkości odczytywania enkodera?
W asemblerze taka procedura obsługi przerwania zajmuje kilkanaście taktów zegara...
Może, BASCOMa na oczy nie widziałem, ale to by oznaczało, że jest generalnie do ...

Asembler - prawda, odrobina kombinowania i program naprawdę szybki wychodzi. Ale podobno współczesne kompilatory C na µkontrolery nie ustępują wydajnością kodu porządnemu programowi w ASM.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Lampa VFD -> procesor AVR

Post autor: Tomasz Gumny »

tszczesn pisze:[...] BASCOMa na oczy nie widziałem, ale to by oznaczało, że jest generalnie do ...
Dzięki ogromnej liczbie standardowych funkcji, można w Bascomie szybko napisać całkiem złożony program. Tyle, że równie szybko trzeba sięgać po procesory z ogromną pamięcią programu a w krytycznych czasowo fragmentach jedynym rozwiązaniem są wstawki w asemblerze.
tszczesn pisze:[...] podobno współczesne kompilatory C na µkontrolery nie ustępują wydajnością kodu porządnemu programowi w ASM.
To się zgadza. Powiem więcej - podglądając przekład, można się nauczyć ciekawych sztuczek. :D
Tomek
ODPOWIEDZ