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

Wyświetlacz graficzny RG12864B Raystar + Bascom AVR

fuse 05 Mar 2011 14:42 4985 20
  • #1 9238012
    fuse
    Poziom 15  
    Witam,
    To mój pierwszy post, w razie jakiejś wpadki proszę o wybaczenie.

    Układ składa się z:
    1. wyświetlacz Raystar RG12864B (wg. dokumentacji kontroler KS0108 lub kompatybilny) - http://www.raystar-optronics.com/UserFiles/RG12864B-BIW-V.pdf

    2. procesor atmega128

    3. kompilator BASCOM AVR 1.11.9.8 + biblioteka glcdKS108.LBX w wersji 1.11.9.1

    Problem jest następujący:
    mogę bez problemu używać komend typu LINE, CIRCLE, BOX itp natomiast podczas próby wyświetlenia grafiki lub czcionki wyświetlacz pokazuje jakieś śmieci i zawiesza się


    
    $regfile = "m128def.DAT"
    $crystal = 16000000
    $baud = 19200
    $hwstack = 100
    $swstack = 120
    $framesize = 100
    $lib "glcdKS108.lbx"
    
    '============ LCD =============
    Initlcd
    Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portf , Enable = 0 , Cd = 1 , Rd = 2 , Reset = 4 , Ce2 = 3 , Ce = 6
    Cls
    '------------------------------
    
    '=========== MAIN =============
    Setfont Font8x8
    
    Box(0 , 0) -(127 , 63) , 255
    Lcdat 1 , 1 , "1234"
    Showpic 2 , 2 , Test
    End
    '------------------------------
    
    '=== Fonts & Buttons images ===
    $include "font8x8.font"
    
    Test:
    $bgf "test.bgf"
    '------------------------------
    


    siedzę nad tym problemem od dwóch dni i nie wiem czy problem jest w wyświetlaczy czy ja coś źle robię, bardzo proszę o pomoc

    Pozdrawiam
    Maciek
  • #2 9238062
    elektro155
    Poziom 26  
    sprawdź połaczenia, czy właściwie połączyłeś, czy czy nie pomyliłes sie w liniach lcd np. zamieniłes D0 z D3
  • #3 9238146
    fuse
    Poziom 15  
    elektro155 napisał:
    sprawdź połaczenia, czy właściwie połączyłeś, czy czy nie pomyliłes sie w liniach lcd np. zamieniłes D0 z D3


    dzięki za szybką reakcję :)

    sprawdzałem, a dodatkowo wszystkie polecenia związane z rysowaniem działają prawidłowo - w sytuacji pomyłki raczej powinno się wszystko "krzaczyć" ?

    W przypadku próby wyświetlenia grafiki pojawia się tylko prostokąt o wymiarach zbliżonych do grafiki, którą chcę wyświetlić, wyświetlacz działa nadal i można dalej rysować.

    W przypadku próby wyświetlenia czcionki wyświetlacz "głupieje" i przestaje reagować
  • #4 9238179
    Konto nie istnieje
    Poziom 1  
  • #5 9238180
    elektro155
    Poziom 26  
    może coś z prockiem, żeby upewnic sie co do sprawnosci lcd, spróbuj tego na innym procku
  • #6 9238233
    fuse
    Poziom 15  
    @atom1477 do szerokości 8, próbowałem wyświetlać stworzone przez siebie, ale też gotowe z różnych przykładów i efekt był identyczny, ale i tak największe problemy są z tekstem, a czcionkę używam załączoną do kompilatora.

    @elektro155 spróbuję zmienić procek, ale obawiam się czy to przypadkiem nie brak kompatybilności wyświetlacza z biblioteką, nie mogę znaleźć nigdzie innej wersji.

    Miałbym gorącą prośbę, o kompilację mojego przykładu, wystarczy tylko z wyświetleniem tekstu, bez grafiki - może mam jakieś problemy z kompilatorem (eksperymentuje na świeżo ściągniętej wersji demo ze strony mcselec.com).
  • #7 9238348
    Konto nie istnieje
    Poziom 1  
  • #8 9238376
    fuse
    Poziom 15  
    atom1477 napisał:
    fuse napisał:
    @atom1477 do szerokości 8

    No to źle bo powinieneś przystosować do 6.


    dzięki - sprawdzę i dam znać jakie są rezultaty

    Dodano po 3 [godziny] 2 [minuty]:

    Sprawdziłem różne konfiguracje zapisu plików graficznych i nic to nie zmieniło, natomiast umieszczenie plików w eeprom'ie umożliwiło prawidłowe wyświetlenie grafik - co nasuwa mi przypuszczenie, że problemem jest odczyt fontów i grafik z flasha tzn dane odczytywane są z niewłaściwych pozycji co powoduje wysyłanie do wyświetlacza bezsensownych danych.

    Niestety nie mam kompletnie pomysłu czemu tak się dzieje i co mam zmienić ?
  • #9 9240944
    mufti227
    Poziom 11  
    Witam.

    Podepnę się również pod temat. Mam ten sam problem z wyświetlaczem graficznym 6963C (obsługuję go procesorem ATEMGA640). Wyświetla wszystko, ale zamiast grafiki np. z pliku "*.bgf" robi wypełniony kwadrat.
    Przestawiania z 8 na 6, zmiany wymiarów grafiki itp... nic nie dają.
  • #10 9241121
    piotrva
    VIP Zasłużony dla elektroda
    a czy grafika poprawnie dołączona?
    pokaż kod, bo na t6963c nigdy nie miałem w bascom takich problemów
    ps. jaka wersja bascom, polecam 1.11.9.8 lub 1.11.9.5
  • #11 9241212
    mufti227
    Poziom 11  
    BASCOM 1.11.9.5

    Grafika podłączona na portach: dane Port L (D7:D0), sterowanie Port H (D7:D2) plus Port J (D7:D6) - te ostatnie dwa piny są jako RD i WR. Zmodyfikowałem bibliotekę. W porcie H dwa pierwsze piny mają UART, które potrzebuję, stąd modyfikacja.
    Z punktu funkcjonowania transmisji jest chyba prawidłowo, bo wyświetlacz działa. Są znaki, rysują się figury geometryczne. Na oscyloskopie widzę sygnały na bitach RD, RW, CE, C/D oraz wszystkich 8 bitach danych. Podłączone jest także MD i FS, ale tego nie sprawdzałem (?)

    Nie wiem tylko dlaczego ta grafika się nie ładuje jak należy, tylko robi się kwadrat.

    Dodatkowa upierdliwość, to to, że co któryś reset urządzenia, grafika wariuje i wskakują śmieci, słowa są poprzestawiane. Co więcej, nie ma dostępnej funkcji INITLCD (nie wiem, może w bibliotece nie ma ?), nie mogę więc odświeżyć LCD.



    
    $nocompile
    'Module Declarations
    
    'LCD Graphic
    $lib "glcd.lbx"
    Config Pinj.6 = Output
    Config Pinj.7 = Output
    Config Graphlcd = 240 * 128 , Dataport = Portl , Controlport = Porth , Ce = 3 , Cd = 2 , Wr = 7 , Rd = 6 , Reset = 4 , Fs = 7 , Mode = 6
    


    i dalej potem wykorzystanie LCD:

    
    
    cls
    
    do
      gosub get_pic
      wait 5
    loop
    end
    
    get_pic:
       Box(50 , 35) -(110 , 55) , 1
       Locate 6 , 10 : Lcd "BIOS"
       Showpic 50 , 50 , Pic_bios
    return
    
    Pic_bios:
    $bgf "bios.bgf"
    
    
  • #13 9241418
    mufti227
    Poziom 11  
    Zmieniłem na 48 , 48. Nie pomogło. Spróbuję władować grafiki do EEPROMa jak kolega wcześniej radzi. Może pomoże.

    Przy okazji, czy kolega ma dostępną funkcję INITLCD? Jak ewentualnie odświeżyć tego 6963C ?
    Ręce opadają. Po resecie software'owym jest ok, ale po godzinie lubią wskoczyć krzaczki... (zakłócenia itp...)
  • #14 9241950
    fuse
    Poziom 15  
    W moim przypadku jak na razie pomaga tylko ładowanie grafiki do eepromu, ale z czcionką nie mogłem sobie w żaden sposób poradzić (ładowanie do eepromu też nic nie dawało, ale może źle to robiłem).

    Ostatecznie problem czcionki rozwiązałem za pomocą kodu umieszczonego na tej stronie: http://evertdekker.com/Joomla/index.php?option=com_content&task=view&id=49&Itemid=86 (był już ten link podawany na forum), co prawda nie działa mi rotacja, ale nie jest mi potrzebna, za to tekst można umieszczać w dowolnym miejscu z dokładnością 1 piksela.

    Grafikę, a w zasadzie ikony (16x16) postanowiłem przerobić na dodatkowy zestaw fontów i w ten sposób ładować razem z innymi fontami do flasha.

    Takie rozwiązanie pozwoli mi umieszczać grafikę w dowolnym miejscu a nie co 8 pikseli w pionie, zresztą użycie innego parametru niż wielokrotności 8 nie powodowało u mnie żadnych problemów, grafika nie zmieniała pozycji dopóki parametr nie osiągnął odpowiedniej wielkości (w osi X grafikę mogłem wyświetlać co piksel).

    Biblioteka, której używam do sterowania wyświetlaczem posiada zaimplementowane INITLCD, ale ja używam przynajmniej w teorii wyświetlacza kompatybilnego z KS108.
  • #15 9245516
    mufti227
    Poziom 11  
    Dzięki za pomysły i gościnę w topicu :)

    Doszedłem do przyczyny powstawania krzaczków. Błacha sprawa - podałem za duży zegar zewnętrzny do procka - 16MHz. Po włączeniu wewnętrznego 8MHz na próbę problemy ustąpiły. Zatem LCD nie wydala powyżej 8MHz.

    Znalazłem na stronie MCS opis modyfikacji biblioteki glcd.lbx, do której ręcznie wkleja się obsługę ładowania plików *.grf bezpośrednio z EEPROM oraz listing kodu ładującego te grafiki do EEPROM. Nie przetestowałem jeszcze tego. Na razie władowałem parę grafik jako bitmapy 0/1 po konwersji bmp na tekst (ale to inna bajka)...
  • #16 9245898
    piotrva
    VIP Zasłużony dla elektroda
    a nie lepiej przesiąść się na C?
    tam wszystkie biblioteki można modyfikować i nie ma z takimi sprawami problemu...
  • #17 9245960
    Konto nie istnieje
    Poziom 1  
  • #18 9246169
    piotrva
    VIP Zasłużony dla elektroda
    Owszem, ale biblioteki są pisane w ASM, a nie każdy początkujący zna ten język. Ja osobiście preferuję C, bo tam biblioteki są zwykle także w C, więc znajomość jednego języka wystarczy praktycznie do wszystkiego.

    Co do tematu, to procedura wyświetlania grafiki jest częścią jakiegoś większego programu, więc może polecę co następuje - napisać najprostszy program w jednym pliku i sprawdzić co się dzieje.
    
    $regfile= ".dat" 'wpisz
    $crystal = 'wpisz
    
    Config Pinj.6 = Output
    Config Pinj.7 = Output
    Config Graphlcd = 240 * 128 , Dataport = Portl , Controlport = Porth , Ce = 3 , Cd = 2 , Wr = 7 , Rd = 6 , Reset = 4 , Fs = 7 , Mode = 6 
    
    Cls
    Showpic 50 , 50 , Pic_bios
    
    End
    
    Pic_bios:
    $bgf "bios.bgf" 
    

    daj znać co się stanie jak wgrasz taki program
  • #19 9246355
    fuse
    Poziom 15  
    Przy okazji "walki" z wyświetlaczem zmodyfikowałem czcionkę 6x8 - nie lubię jak w inwersji literki nie są w całości otoczone tłem.

    Plik fontów w załączniku (może się komuś przyda).

    Pozdrawiam
  • #21 11394547
    jacynka84
    Poziom 26  
    Rozwiązałeś już problem fuse, mufti227, ze literami na KS108? Bo u mnie działa niezależnie od częstotliwości BOX LINE, ale nie znaki, niezależnie od kombinacji z Mhz czy fontami!
REKLAMA