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

Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?

04 Sie 2006 18:28 35014 109
  • Poziom 13  
    Witam!

    Dostał się w moje ręce wyświetlacz (dla klienta) od kasy fiskalnej, jest to IBM P/N 93F1090 - wewnątrz znajduje się moduł FUTABA CORP M202LD01BA.

    Jest duży i robi wrażenie, chciałbym się do niego jakoś dobrać (tzn. móc coś na nim wyświetlać), z tym, że nie wiem jak nim sterować, a chciałbym to zrobić np. za pomocą mikrokontrolera AVR... a się okazuje, że interfejs to EIA-485

    Informacje jakie udało mi się znaleźć na jego temat to:
    (Electrical Characteristics )

    Operating voltage:
    11.4 to 13.2 Vdc (8.4 watts maximum)

    Data interface:
    EIA-485

    Data transfer:
    IBM protocol (187.5 kilobaud, 12-bit serial dot data)

    Interconnection:
    Molex 15-83-0304

    Pin Function
    1 +12V
    2 Data A
    3 Data B
    4 Pwr Rtn

    Opis
    Wygląd
  • AM TechnologiesAM Technologies
  • Poziom 1  
    Hi!

    I have a IBM 93F1090 VFD display too. But, I don't know, how can I drive this unit. Are you can drive this display? Please translate your post to english, because I wish read that, but I don't speak polish.

    If I put the power to display, display show "u001" error? message, next 15s reset himself.
  • Poziom 11  
    Skontaktowałem się w tej sprawie z IBM'em. Po paru mailach niezbyt chętnie przekazali mi dokumentację tego protokołu. Niestety jest on straszliwie skomplikowany - komunikacja jest dwukierunkowa, występują od 2 do 24 bitów stopu, bit który w rs232 odpowiada za kontrolę parzystości tu jest używany do określania typu "pakietu"(bajta). Po nawiązaniu komunikacji dane przesyłane są w ramkach z kontrolą parzystości CRC, bajtami rozpoczynającymi i kończącymi, adresem urządzenia, licznikiem ramek wysłanych/odebranych itp.
    bitrate to faktycznie 187.5k (192000bit/s)
    Jak będą chętni to wrzucę wszystko co mam na elektrodę, ale zasadniczo do żadnego projektu bez użycia kompa raczej niemożliwe będzie zastosowanie tego...

    [EDIT]

    Dokumentacja

    Przez 2 dni nadal nic nie osiągnąłem - nawet nie wiem czy mój adapter wysyła prawidłowo sygnały (używam czegoś takiego + max485, ustawiam to w trybie bit bang mode żeby mi nie wysyłał bitów startu i stopu kiedy tego nie chcę, ale nawet nie wiem jak zbadać czy to działa...)

    Moje próby wyglądają tak: nadaję ramki poll (conajmniej dwie, 24 jedynki i 000100101111 - 36=adres wyświetlacza), po chwili SNRM (znów adres ale z 7 bitem na 0, odpowiedni znak SNRM, wyliczona suma kontrolna CRC-16 i flaga zamykająca) i jak narazie żadnej reakcji od wyświetlacza...

    Jeśli komuś się coś uda zrobić to bardzo proszę o informacje ;)
  • Poziom 13  
    Jeśli możesz to oczywiście wrzucaj wszystko co masz, przyda się ;)
    Jeżeli chodzi o komunikację z komputerem to czy wystarczy konwerter rs232-rs485? Czy będzie on wtedy działał jak wyświetlacz pod rs232?
  • Poziom 11  
    Wszystko co dostałem od IBM'a jest w linku w poprzednim poście (pod Dokumentacja)
    Nie będzie działał - przede wszystkim musisz mieć konwerter umożliwiający wysyłanie dowolnych 12-bitowych paczek (np. bez bitu startu 0 i pełną kontrolą bitu parzystości, bo czasami potrzeba ponad 100 bitów stopu, czego większość konwerterów rs232 nie umożliwia)

    Gość z IBM'a pisał że zaimplementowanie tego zajmie mi mniej więcej dwa osobo-lata :P zobaczymy, na razie musze przerobic konwerter.
    Jak uda mi się cokolwiek to na pewno się tym podzielę...


    [EDIT]

    Dziś wyświetlacz do mnie przemówił ;)
    okazuje się, że pracuje on z przepustowością 187500 bit/s (a ja błędnie założyłem 192000)

    wyświetlacz odpowiada na kilka wysyłanych znaków, najczęściej odpowiedź dostaję na:
    010000101111 (czyli wywołanie urządzenia o adresie 0x21, 7 bit na jeden bo to wywołanie)
    w odpowiedzi dostaję pełną ramkę:
    Code:

    010000100111 // adres, 0x21
    011110000011 // ROL, 0x0f, request on line, czyli teraz czeka na polecenie SNRM po którym powinno się wyświetlić U003
    011011010011 // crc   0x5B
    010110011011 // crc   0xCD
    001111110111 // flaga zamykająca


    Teraz mam problem z tymi sumami kontrolnymi, nijak nie mogę z tego bajtu adresu i bajtu polecenia wyliczyć tego 5BCD, a następne wysłane polecenie (SNRM) i wszystkie kolejne muszą mieć poprawne sumy kontrolne żeby wyświetlacz je zaakceptował.
    Teoretycznie jest to CRC-CCITT, może ktoś pomóc? :P podsumowując:
    jak z 0x21 0x0f powstał hash 0x5B 0xCD
  • Poziom 42  
    Fueryon -> i jak tam postępy? z chęcią bym się przyłączył do badania tego wyświetlacza - tym bardziej, że jest jakaś dokumentacja dzięki tobie , ale ...

    .... może podpowiesz mi - co to znaczy dla ciebie - zrobienie konwertera ? tzn rozumiem, że użyłeś scalaczka FTDI232R oraz do niego SN75176 (lub podobny) ale jeśli chodzi o obsługę nadawania i odbierania - to co? sam piszesz to całkowicie od nowa ? nie używając standardowego RS232? Jak formujesz te ramki ? robisz to na PC-cie? Jak pomijasz bit startu itp - możesz to troszkę przyblizyć ?

    a nawiasem mówiąc to komunikacja z tym wyświetlaczem na prawdę wygląda na "porąbaną" na maxa - tylko IBM'a na coś takiego było stać ;)

    poza tym wydaje mi się, że całą tą konwersję robi sprzętowo ten calak na wyświetlaczu 5P00A070 - bo to on steruje i odbiera sygnały z tego SN75176 a nie ten większy 40to pinowy procek w obudowie DIP
  • Poziom 11  
    Raport z postępów:
    brak ;P (chociaż rozgryzłem to haszowanie częściowo - w programie easyhash pod nazwą crc-16(x25) - nie moge tylko zmusić swojej funkcji żeby poprawnie hashowała - nie jest podany wielomian haszujący...)

    o adapterze:
    Adapter który posiadam kupiłem gotowy na allegro, schemat:

    http://www.ftdichip.com/Documents/DataSheets/DS_FT232R.pdf

    Połączenia wg. schematu ze str. 27, i dodatkowo bramka blokująca
    odbiór przy nadawaniu.

    Układ domyślnie jest widziany w systemie jako port rs232 - niestety to ustawienie do tego wyświetlacza się nie nadaje (gdy nic nie nadajemy wyjście max485 jest w stanie wysokiego oporu, a jak nadajemy to zawsze pojawi się gdzieś ten bit startu 0 więc nici z potrzebnych kilkunastu/kilkudziesięciu bitów stopu (1))
    Poza tym pierwszy i ostatni bajt ramki muszą mieć ustawiony bit parzystości na 1, wszystkie pozostałe na 0, a przestawianie trybu pracy portu wprowadza (chyba, nie sprawdzałem :P) spore opóźnienia
    jak z tego wybrnąłem?
    układ FTDI232R może pracować w trybie bit bang (czyli w zasadzie jak port równoległy) i podawać kolejne bajty na wszystkie swoje wyjścia jednocześnie z określoną częstotliwością. Pozostał problem odpowiedniego sterowania układem max485 (domyślny sygnał oznaczający nadawanie nie był generowany w trybie bit bang, musiałem przeciąć jedną ścieżkę i przylutować w odpowiednie miejsce którekolwiek wyjście ftdi232r którym mogłem sterować) Część nóżek może działać jako wejścia (dzięki temu odbieram sygnały z wyświetlacza)

    Wszystkim oczywiście steruje programowo z pc (przez funkcje udostępnione w sterowniku do tego ftdi232r). Metoda dosyć okrężna i napewno da się lepiej (ale już kupiłem ten adapter to go użyłem :P)

    Problemy w tej metodzie - precyzja - ftdi zmienia stan na "szynie" 16x szybciej niż ustalony bitrate - nigdzie nie znalazłem na ile dokładnie to działa. Dodatkowo nieznany narzut czasowy związany z zapisem do i z bufora przez usb. Ciężko mi uzyskać powtarzalne wyniki - czasami dostaję ładną prośbę od wyświetlacza o przypisanie do podanego adresu, czasami część bajtów jest przekłamanych, a czasami dostaję tylko pojedyncze 0.

    Najważniejsze - ile już zdołałem rozgryźć z protokołu:
    Po pierwsze ten wyświetlacz jest starszym modelem niż ten w dokumentacji którą zamieściłem, więc może się trochę inaczej zachowywać (odpowiada na adres 0x21h a nie 24/25, czyli nie nazywa się vfd II tylko poprostu aphanumeric display)

    Komunikacja (polling)
    Kontrola (pc) kolejno wysyła ramki "POLL" (wywołujące?) kolejne urządzenia na danym porcie (u nas tylko jeden port więc portami się nie przejmujemy ;)) Jeśli urządzenie nie ma nic do powiedzenia wysyła odpowiedź EOP (nie wiem jak to wygląda), jeśli nie ma jeszcze przypisanego adresu wysyła ramkę ROL (request on line), jeśli ma jakieś informacje do przesłania (potwierdzenie odbioru, itp) to przesyła iframe (jest tego więcej ale skupmy się na tym ;P)
    Nie wiem jaka powinna być częstotliwość tego wywoływania, teoretycznie urządzenie ma 1.3 ms (około 250 bitów) na odpowiedź po wywołaniu - po tym czasie kontrola może uznać że nastąpił timeout i wywołać kolejne urządzenie w kolejności.

    Słów kilka o strukturze znaku
    Urządzenia komunikują się przy pomocy 12 bitowych znaków (z których są budowane ramki o których dalej :P)
    bit startu - zawsze 0
    następnie 8 bitów danych (najmniej znaczący bit leci na początku, czyli 01234567)
    8 bit (używany do kontroli pażystości w rs232) określany adresem (ma wartość 1 dla znaków adresu i końca ramki, dla wszystkich pozostałych znaków ma wartość 0)
    na końcu co najmniej 2 bity stopu


    samo wywołanie wygląda tak (za dokumentacją):
    24 jedynki, znak z adresem, ale dodatkowo 7 bit ustawiony na 1, 24 jedynki, znak z adresem z 7 bitem ustawionym na 1
    (wysyłamy 2 razy adres bo wyświetlacz musi się upewnić czy dobrze widzi ;P Przy wywołaniu nie ma żadnej kontroli parzystości itp)
    Oczywiście jednorazowe wywołanie niewiele da, bo wyświetlacz, z tego co rozumiem, reaguje na 2 różne adresy na przemian co 50ms (zanim nie złapie 2x poprawnego adresu i się do niego nie przyklei na stałe)

    znak z adresem wygląda dokładnie tak:
    Code:

    start   adres(21)   bit adresu     bity stopu
    0       10000100         1                 11

    dodatkowo dla wywołania zmieniamy 7bit na 1 (bo to wywołanie urządzenia, czysty adres jest używany jako początek ramki z jakąś informacją dla urządzenia)

    po wywołaniu, jeśli się poszczęści, wyświetlacz odpowie czymś takim:
    Code:

    start   wartosc     a     stop
    0     10000100     1     11 // adres, 0x21, to normlana ramka więc bit7=0
    0     11110000     0     11 // ROL, 0x0f, request on line, czyli teraz czeka na polecenie SNRM
    0     11011010     0     11 // crc   0x5B
    0     10110011     0     11 // crc   0xCD
    0     01111110     1     11 // flaga zamykająca

    czyli dokładnie to co powinniśmy dostać wg dokumentacji

    Niestety dostaję to w nienaruszonej formie raz na paręset wywołań, często nie dostaję nic, czasami odpowie zaraz po wywołaniu, czasami mam bardzo duże opóźnienie (kilkaset, nawet kilkatysięcy "cykli") Nie wiem czy to wina adaptera czy samego wyświetlacza (zauważyłem że odczyt paru milionów bitów zajmuje 4x więcej niż wynika z bitrate'u, więc gdzieś na pewno gubię sporo informacji)

    trochę więcej o ramkach
    Budowa ramki jest następująca (przykład powyżej):

    |adres_urządzenia|polecenie|dane|crc|crc|flaga_zamykająca|

    Adres urządzenia powinien mieć odpowiednio dużo bitów stopu (żeby do urządzenia dotarło że to do niego się mówi)
    W przypadku wyświetlacza VFD II jest mowa o wartości 60h (tylko nie wiem czego:P bitów?) Nie wiem jak się sprawa ma ze starszym modelem o którym tu dyskutujemy...
    Polecenia które nas interesują: SNRM(0xc1h) oraz iframe (tu wartosc zalezy od licznika ramek wysłanych/odebranych)
    dane (tylko w iframe) - polecenia konkretnych urządzeń (czyli konkretnie sterowanie wyświetlaczem) - do tego jeszcze spory kawałek więc narazie nic nie piszę
    crc - jak już pisałem suma kontrolna crc-16(x25) wyliczana ze wszystkich znaków od adresu włącznie aż do ostatniego znaku przed sumą,ale jak dokładnie to nie wiem (trzebaby do twórcy tego easyhash naskrobać)
    flaga_zamykająca - 7e

    na czym stanąłem:
    Po otrzymaniu od wyświetlacza request on line powinienem mu wysłać ramkę z poleceniem SNRM (set normal response mode)
    Próbuję mu wcisnąć coś takiego (wartości hex znaków, oczywiście trzeba zamienić na dwójkowy, odwrócić, dokleić start, stop, adres itp):
    Code:

    adres (bit a na 1)    polecenie snrm   crc  crc  flaga zamykająca (bit a na 1)
    21                         | c1         | 3f | 83 | 7e

    teoretycznie wyświetlacz powinien po przyjęciu tego do wiadomości wyświetlić u003, odesłać ramkę NSA i czekać na ramki z danymi do wyświetlenia
    jedyne co zauważyłem to to że wyświetlacz przestał się resetować co chwilę, tylko stale wyświetla u001... niestety jeśli jeden znak wywołania docierał poprawnie 1/10 powiedzmy, to ciężko będzie mu przesłać poprawnie 7 znaków z sumami kontrolnymi itp...


    Naturalnie dużo łatwiej by mi było gdybym miał jakiś mikrokontroler, w którym mógłbym to zakodować w asemblerze i nie martwić się o opóźnienia związane z przerzucaniem danych przez usb oraz dokładnością transmisji.

    I tu pytanie, jaki mikrokontroler sprawdziłby się w takim zastosowaniu? Z uczelni mam dobrze ogarnięte wszelkie 8051, ale sam nic się tym nie bawiłem - potrzebowałbym czegoś z niezbyt skomplikowanym zestawem rozruchowym i możliwością łatwego podpięcia pod kompa, oczywiście obowiązkowo wejście i wyjście szeregowe z możliwością taktowania 187500 hz ;)



    [edit]
    a samo sklejanie w słowa robię tak - ustawiam ftdi232 w tryb bitbang z odpowiednia maska wybierającą które nóżki maja byc wejściami a które wyjściami, następnie jak chce nadać 1 to wysyłam do bufora 09h a jak 0 to 08h (4 bit odpowiada za tryb nadawania), jak chce przestawić na odbiór to wysyłam 00 (wszystko oczywiście w paczkach po kilkaset bajtów)
    mam dostępne funkcje read() i write(), ten ftdi232 ma kilkuset bajtowe bufory we/wy + dodatkowo transfer usb jest buforowany, wiec obawiam sie ze to co wysyłam/odczytuje słabo się ma do tego co faktycznie jest na wyjściu całości :/ (generalnie nie polecam tego rozwiązania :P)
  • Poziom 42  
    eeeeh miał chyba ten gostek z IBM'a rację, że robienie programowo tego czym zajmuje się sprzętowo specjalizowany scalak na tym wyświetlaczu - może zająć 2-osobo-lata ;) - to zaczyna wyglądać na totalnie popierniczone. Ja się poddaję. A nawet jak coś tam wyjdzie - to i tak będzie skórka za wyprawkę. Taka robota chyba tylko dla osiągnięcia satysfakcji.

    Szkoda troszkę bo wyświetlacz jest wielki i fajnie by działał. A ludziska go na allegro dalej kupują w ciemno ;) Bo też i na ebay'u było i jest tego typu wyświetlaczy sporo. Więc kolejni ludzie się nabierają na "fajny" wyświetlacz.

    Jednak życzę tobie powodzenia w walce o ile się nie poddasz i coś wyjdzie - to być może będę zainteresowany nawet jeśli uznasz ten kod do sterowania za swoje komerycjne rozwiązanie ;)

    pozdrawiam
  • AM TechnologiesAM Technologies
  • Poziom 31  
    Hmm właśnie zakupiłem dwa takie wyświetlacze ... ale mam nieco inny pomysł - wywalić procesor który tam siedzi i pogadać bezpośrednio z driverami VFD innym procesorem ;) Zobaczymy co z tego wyjdzie
  • Poziom 42  
    KJ -> też już w porywach (złości, że dałem się jak wielu naciągnąć na te wyświetlacze) - myślałem o przeróbce elektroniki - ale bez dokładnego schematu elektroniki to niestety bardzo karkołomne zadanie. Żeby to był tylko ten procesor, ale tam jest jeszcze kilka (co najmniej 2) ukałdów specjalizowanych do do których żdanej noty aplikacyjnej nawet nie znajdziesz .... a na prawdę szkoda, bo duże , ładne wyświetlacze.
    (nie mniej jednak życzę ci powodzenia)

    Widać tylko, że gościu, który sprzedaje je na allegro naciął się najbardziej bo zakupił ich chyba ze 2 tysiące na ebay'u - a teraz po malutku upycha badziewie na allegro.
  • Poziom 31  
    Zobaczymy co z tego wyjdzie. Pewnie te sterowniki są jakieś w miarę normalne bo co tam może być ? kupa rejestrów przesuwnych. Wątpię żeby w nich była jakaś inteligencja większa.
  • Poziom 42  
    Dzisiaj się dokładniej przyjrzałem tym sterownikom bo już nie pamiętałem wcześniejszych oględzin ;) ..... i niestety (miałem nadzieję, że będą to przynajmniej scalaki typu OKI - do których można zdobyć PDF'y) okazuje się jednak, że siedzą tam scalaki firmy Futaba o dziwnie brzmiących symbolach i wątpię aby można było znaleźć choć gdzieś ich specyfikację :( ... a bez tego ???? hmmm to pozostałoby zaprojektować od podstaw swój własny sterownik - co dla celów amatorskich czy nawet produkcji małoseryjnej - mija się z celem

    ale nadal, życzę powodzenia - może ja czegoś jeszcze nie wiem ;)

    pozdrówka
  • Poziom 15  
    Jeśli chodzi o drivery do vfd, to udało mi sie znaleźć pdf do epsona (SED2020F) - trzy takie układy sterują segmentami wyświetlacza.
    Za sterowanie siatkami odpowiada Toshiba TD62C950RF, niestety nie znalazłem noty do tego układu a toshiba odmawia pomocy. Możliwe że jest to cos podobnego do innych układów toshiby używanych do podobnych celów (TB2104F, TD62C805F, TD62C851P). Udało mi sie ustalić większość jego pinout'u (niestety tych najważniejszych pinów nie)
    Wyprowadzenia TD62C950RF wyglądają mniej więcej tak:

    pin21 - zasilanie VDF
    pin22, 23, 36, 38, 39 - podłączone do GND
    pin 26, 28, 30 - podłączone do +5V

    pin1 - siatka dolna skrajna lewa
    ...
    pin20 - siatka dolna skrajna prawa
    pin41 - siatka górna skrajna lewa
    ...
    pin 60 - siatka górna skrajna prawa

    Brakuje niestety pinów odpowiedzialnych za wprowadzanie danych

    Dane do chipów Epsona sa wyprowadzane z P500A070 (wspólny CLK na pin15, strobe - pin16, dane - piny19-24 (każdy z trzech SED2020F ma dwa wejscia szeregowe) , blank jest sterowany z układu OBVFD22 pin 5

    Co do OBVD22 to podejrzewam że to jakaś odmiana 8051, ale nie mam niczego żeby to potwierdzić:)

    Adresy do pamieci SRAM (LH5116NA) sa wyprowadzane z układu P500A070 (8 mniej znaczących bitów) oraz z OBVFD22 (trzy pozostałe bity), ośmiobitowa magistrala SRAM podpięta jest pod oba te układy. Są one także połączone przez serial. Jeśli ktoś jest zainteresowany konkretami, to mogę naszkicować i wrzucić na forum to co udało mi się do tej pory rozkminić.

    W załącznikach noty do układu Epsona i wspomnianych układów toshiby


    pozdrawiam
  • Poziom 42  
    boogdan -> widzę, że jesteś kolejnym posiadaczem tych pięknych ale "bezużutecznych" wyświetlaczy VFD

    generalnie odwaliłeś kawał dobrej roboty w rozpracowywaniu hardware tego wyświetlacza. Ja wymiękam na tym etapie - bo zbyt dużo i tak na razie niewiadomych a gdzie tu jeszcze myśleć o oprogramowaniu tego wszystkiego....

    .... jeśli jednak jakimś cudem udałoby się to opanować i doszłoby do podjęcia prób pisania własnego softu - to wtedy - na takim etapie może zapisałbym się do zespołu tworzącego oprogramowanie - jeśli będzie taka koniecznosć.

    a dzisiaj wieczorkiem postaram się prześledzić dokładnie to wszystko co namierzyłeś
  • Poziom 15  
    Jeśli uda się komuś znaleźć pełny pinout układu do sterowania siatkami, to myślę że nie będzie większych problemów z uruchomieniem tego na jakiejś ATmedze. Myślę o wylutowaniu układów OBVFD22 i P500A070 i podłączeniu sterowników wyświetlacza do jakiegoś AVR'a. Trzeba tylko ustalić jak sterowany jest ten układ Toshiby.
    No i pozostaje jeszcze pytanie czy przetwornica do żarnika lub przetwornica do wysokiego napięcia VFD nie są w włączane i wyłączane programowo przez któryś pin układów do wylutowania.
  • Poziom 42  
    wydaje mi się że na 100% przetwornica sterowana jest cyfrowo z jakiegoś układu - praktycznie wszystkie wyświetlacze VFD Futaby - mają programową co najmniej 4stopniową regulację jasności
  • Poziom 15  
    Takie sterowanie jasnością jest zwykle realizowane poprzez podanie PWM o modyfikowanym wypełnieniu na pin BLANK driverów.
    Chodziło mi o to czy nie jest programowo wyłączane któreś z napięć, ale nie widać na płytce żadnych układów, które mogłyby być przetwornicami, może napięcia są tworzone cały czas, niezależnie od procesorów.
  • Poziom 42  
    no niestety - ja właśnie w zakresie elektroniki analogowej, (rozpoznawania tych układów), przetwornic itp - to nic nie jestem w stanie pomóc
  • Poziom 15  
    Udało mi się wydębić od Futaby datasheet do układu Toshiby oraz notę aplikacyjną samego wyświetlacza VFD.

    Wychodzi na to, że tylko dwa piny sterujące są używane: CLK (pin34) TD62C950RF jest podłączony do pinu 4 '51, S_IN(pin29) podłączony do pinu 2 '51

    Znaleźliście jakąś wtyczkę pasującą do gniazda 4-pinowego na płytce?

    Fueryon -> czy udało Ci się gdzieś dalej przejść, jakieś postępy?
  • Poziom 42  
    bogdan -> no no no ;) coraz lepiej, ale żeby tak futaba dała jeszcze dokładny schemat tego całego badziewiastego wyświetlacza, żeby można było tylko wpiąć się ze swoim prockiem ;) .... żeby zobaczyć jak mniej więcej jest rozwiązane sterowanie jasnością itp

    .... tak czy inaczej trzeba by było nawet samemu rozrysować taki schemat, żeby później pisać soft do jego obsługi .... eeeh aż mnie świeżbi, z przyjemnością bym się w pisanie sofciku zaangażował ;)

    myślę, że Fueryon się poddał, jeśli nie z powodu problemów z rozgryzaniem to z czasem - bo przecież ten jest na wagę złota ... zresztą, wolałbym już chyba pisać od nowa soft jakiś na podobieństwo obsługi wyświetylaczy opartych o HDxxxx niż pracowanie z tym durnym sposobem IBM'a
  • Poziom 11  
    Hmm, nie poddałem się, niestety uczelnia, a teraz na dodatek praca mało czasu pozostawiają na takie zabawy ;)
    Aktualnie montuje układzik na '51 za pomocą którego planuje to wysterować - zegar na 12 mhz i łącze szeregowe w trybie 2 dają idealnie potrzebny bitrate i możliwość sterowania 9 bitem. Mam nadzieję, że dotychczasowe porażki były spowodowane tylko brakiem precyzji i opóźnieniami adaptera z którego korzystałem. Jeśli tak, to zostanie do rozwiązania ostatnia zagadka - przy wyświetlaniu znaków są używane 2 sumy kontrolne:
    crc dla całej ramki którą już rozgryzłem
    dodatkowa suma kontrolna dla samych wyświetlanych znaków o której nic nie jest napisane... (ale to 1 bajt więc brute forcem można rozgryźć bez problemu jak już zadziała...)
    co do wpinania się bezpośrednio w układy - trochę nie moja domena, brak narzędzi i precyzji - ostatnio jak czegoś takiego próbowałem to 5 nóżek zostało zlutowanych ze sobą ;P w każdym razie jak coś komuś wyjdzie niech da znać
    swoją drogą - na allegro nadal kwitnie sprzedaż tych wyświetlaczy :)
  • Poziom 15  
    Witam

    Udało mi się zmusić wyświetlacz do współpracy z ATmega88 :D

    jak widać na jednym ze zdjęć wyświetlacz był intensywnie używany i część segmentów świeci ciemniej.

    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?

    pinout mojego podłączenia:
    ATmega88 -> płytka
    pin5 ----> pin5 '51
    pin14 ----> pin19 5P00A070
    pin15 ----> pin20 5P00A070
    pin16 ----> pin21 5P00A070
    pin17 ----> pin22 5P00A070
    pin18 ----> pin23 5P00A070
    pin19 ----> pin24 5P00A070
    pin23 ----> pin4 '51
    pin24 ----> pin2 '51
    pin25 ----> pin15 5P00A070
    pin26 ----> pin16 5P00A070
    no i oczywiście zasilanie 5V podłączone z płytki.

    w załącznikach wrzuciłem źródła z plikiem projektu z AVR Studio4 oraz binarkę dla ATmega88. Procesor jest taktowany z zewnętrznego kwarcu 8MHz.

    do generowania czcionki posłużyłem się programem charset extractor ze strony Link.
    w załączniku jest dorzucony plik batch z parametrami wywołania extractor-a.
    Jako źródła dla czcionki posłużyłem się plikiem ze strony programu, nie jest ona najlepsza, ale na początek wystarczy :D.

    W razie jakichś pytań chętnie pomogę.

    [edit]: co do sterowania jasnością, to aktualnie nie jest zaimplementowana. trzeba jedynie uruchomić timer2 w trybie PWM i ustawić wyjście PWM na pinie OC2B (pin5). Wtedy jasność reguluje się przez zmianę zawartości rejestru OCR2B.
  • Poziom 42  
    boogdan -> Matko Boska!!!! - jesteś MISTRZEM ;) Świata

    też się za to wezmę, ale mam na początek na razie jedno pytanko odnośnie kodu, jeśli można? chodzi o procedurkę

    Code:
    void resetTD62 (void)
    
    {
        uint8 i;
        for (i=0; i<45; i++) //45 is just to be on the safe side
        {
        sbitC(TSH_CLK);
        cbitC(TSH_CLK);
        }
    }


    o co tu chodzi? dlaczego tak? (hmmm może za mało datasheta doczytałem?)

    aha i jeszcze jedno, czy dobrze rozumiem?

    całość na razie odbywa się chyba w przerwaniu Timera - gdzie przemiatasz jak rozumiem każde całe pole znaku - wyświetlając coś na nim ? tak ?

    no ale bajer - napisz - czy potrzebujesz jakichś punktów - z przyjemnością odstąpię ci za kawał taaaakiej dobrej roboty

    ----------------------------------------------------------------------------

    Fueryon napisał:
    Gość z IBM'a pisał że zaimplementowanie tego zajmie mi mniej więcej dwa osobo-lata :P zobaczymy, narazie musze przerobic konwerter.


    Możesz odpisać "cienkim bolkom" z IBM'a , że Gość w Polsce - nick bogdan - zhakował w pozytywnym oczywiście tego słowa znaczeniu ich wyświetlacz w ciągu nie wiem - no może 2 osobo-miesięcy ;) albo i jeszcze krócej - niech się Mistrz sam wypowie ile mu to zajęło

    a podejrzewam, że i kolega Fueryon - jak by miał czas to w podobnym osobo-okresie by to także programowo zhakował ;)

    (a gostki z IBM'a nie wiadomo po co tak durny standard transmisji wymyślili - tylko ich stać na takie głupoty - a potem myślą, że innym to wieki zajmie)
  • Poziom 15  
    witam

    Co do funkcji resetTD62() - po starcie mikrokontrolera czyszczę zawartość rejestru przesuwnego w driverze do siatek (TD62C950RF). Jedyna metoda żeby to zrobić, to wpisanie 40-stu '0' do rejestru, tak dla pewności dałem 45 :)
    Funkcja była mi potrzebna z tego powodu, że kilkakrotnie zdażyło mi się, że po podłączeniu zasilania w rejestrze przesuwnym były już jakieś jedynki i wyświetlało się nie to co powinno.

    Samo wyświetlanie odbywa się w przerwaniu generowanym przez przepełnienie timer'a0. Przy każdym kolejnym przerwaniu zaświecana jest kolejna siatka, najpierw dolna linia, następnie górna.

    Co do czasu jaki mi to zajęło. Szczacuję, że samej roboty to może z 8 godzin, z czego 5 to było wczoraj. Wcześniej to szukanie datasheet'ow i rozkminianie schematu tej płytki. W sumie może około tygodnia.

    Co do punktów, to dziękuję, nie potrzebuję, chciałem się jedynie podzielić wynikami :)
  • Poziom 42  
    boogdan napisał:

    Co do czasu jaki mi to zajęło. Szczacuję, że samej roboty to może z 8 godzin, z czego 5 to było wczoraj. Wcześniej to szukanie datasheet'ow i rozkminianie schematu tej płytki. W sumie może około tygodnia.


    należy ci się MEDAL ;)

    ale mam jeszcze jedno pytanko odnośnie kodu a jako, że jeszcze nie władam tak biegle językiem C to podpowiesz mi co robi ta funkcja:

    Code:
    sprintf(data, "HELLO WORLD");


    tzn wiem, że:

    Code:
    uint8 data[40] = {0}; //framebuffer


    to twój programowy bufor wyświetlacza i teraz jak domniemuję funckja sprintf wrzuca po prostu ten napis do tegoż bufora tak?

    czyli zamiast robić własnoręczną funkcję, która by mi to wrzuciła - to lepiej jak rozumiem posłużyć się tą funkcją systemową zdaje się - sprintf ? dobrze to rozumiem - czy gdzieś robię błąd w myśleniu?
  • Poziom 15  
    Sprintf wpisuje do bufora tekst, pierwszy parametr to wskaźnik na bufor, dajek składnia tak jak w printf. Użyłem jej tu z wygody. Nie było sensu kombinować i pisać swojej, jak jest już gotowa :D

    ten program to jedynie szkielet, teraz każdy może sobie robic co chce w funkcji main, wpisywać to do framebuffera i nie martwi się tym co sie dzieje dalej, ten sprintf to tylko sprawdzenie czy w przerwaniu jest wyświetlana zawartość bufora.
  • Poziom 42  
    Dzięki za info, jeśli jeszcze potwierdzisz kolejne moje przemyślenia to będę już "w domu" ;)

    otóż ta pętelka:
    Code:
        cbitC(EPS_CLK);
    
        cbitC(EPS_LE);
        for (i=0; i < 10; i++)
        {
            cbitC(EPS_CLK);
            EPS_DATA_PORT = font[i];
            sbitC(EPS_CLK);
        }


    wsuwa jak rozumiem do tych scalaków SED2020 wygląd znaku (fontu) a twoje fonty są o wysokości 10 piksexli tak? stąd ta 10 w pętli for ?

    czyli gdybym sobie zrobił font o wysokości np 12 pikseli to właśnie tu musiałbym sobie zmienić prawda?

    .... a przy okazji - skoro ten skubany wyświetlacz ma aż 12 pikseli wysokości to można byłoby się nawet pokusić (choć to może szaleństwo) o wyświetlanie tak na prawdę dwóch różnych znaków o wysokości powiedzmy 5 pikseli w polu jednego całego (12to pikselowego) znaku wyświetlacza ;) ... tylko trzeba by było "składać" fonty w locie


    .... aha i jeszcze jedno, hmm nigdzie nie użyłeś EPS_BLANK czyli wyłączenia zdaje się świecenia anod na czas przesuwania się rejestrów - i czy to właśnie czasem nie powoduje tych "duszków" ??? bo zdaje się, że na fotce gdzie wyświetlasz HELLO WORLD w miejscu spacji - widać duszka literki O - chyb, że to akurat tak tylko wyszło na zdjęciu ?
  • Poziom 25  
    Cześć. może się troszkę wtrącę w temat.

    Ja mam kilka wyświetlaczy o podobnym formacie też z kas z Lidla czy tam.... ale są łatwiejsze w sterowaniu( zwykły rs ) model wyświetlacza to samsung 20l2001da3 są też pokrewne
    Tam też jest moduł z procesorem do sterowania i komunikacji z ???? ale sterowanie tym jest prawdziwą zagadką oto fotki.

    Może ktoś się spotkał i wie jak to podłączyć.

    Posiada złącze RJ-45 i 2xUSB + 2pin zasilanie, czerwone złącze małe na płytce sterownika - wyświetlacz, to większe nie podłączone.

    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?
  • Poziom 15  
    Pętla for ma 10 iteracji dlatego, że każdy znak jest wysyłany w postaci 10-ciu kolejnych bajtów. zawartość tych bajtów jest dokładnie opisana w pliku shapes.h.
    Żeby zmienić czcionkę, wystarczy zrobić z niej obrazek (coś jak na stronie z charset extractor), przepuścić ten obrazek przez program (z odpowiednimi parametrami - podałem wcześniej w archiwum plik batch do tego) i wynik wkleić do kodu (zamienić komentarze ASM na komentarze C) i tylko tyle, będzie inny font wtedy.
    Co do umieszczenia dwóch znaków w jednym polu, to trochę ciężka sprawa, ale do zrobienia. Ja się za to raczej nie zabiorę, za dużo rzeźbienia :D

    [edit]: odnośnie BLANK, to rzeczywiście nie jest ustawiane, po pracy sprawdzę czy pomoże.
  • Poziom 42  
    nouki -> ale co masz problemy z wysterowaniem tego swojego wyświetlacza przez zwykły RS232 ???? czy chodzi ci o rozgryzanie tych modułów do sterowania?

    jest sens rozgryzać jak działają te moduły, skoro sam wyświetlacz działa na zwykłym RS232 ??? ma przecież gniazko 3 pinowe. VCC, RxD i GND - więc w czym problem?

    Dodano po 2 [godziny] 45 [minuty]:

    boogdan napisał:

    [edit]: odnośnie BLANK, to rzeczywiście nie jest ustawiane, po pracy sprawdzę czy pomoże.


    zdecydowanie pomogło użycie wygaszania w czasie przesuwania rejestrów, oto efekt po małej przeróbce procedurki wyświetlającej:

    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?

    Wyświetlacz klienta ECR - IBM 93F1090 - jak tym sterować?

    od razu zniknęły duszki, a bez tego wygaszania to nie tylko O się pojawiało jako duch na spacji ale i np widać było choć słabiutko - literkę E na literce L itp

    Dodano po 1 [minuty]:

    bogdan -> widzę, że jesteś ze Szczecina - kurdę - masz u mnie DUŻE PIWO albo dwa :D za rozgryzienie tego wyświetlacza, poważnie

    Dodano po 11 [minuty]:

    odnośnie - przyciemniania to będzie trzeba popróbować teraz za pomocą PWM chyba - sterować tym wyjściem BLANK - dzisiaj już nie dam rady - ale jeszcze to popróbuję