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.

[Bascom] [Biblioteka]-Kompilowanie biblioteki w Bascom-lcd4e2.lib dla port A

maximus22_kr 14 Maj 2013 22:56 4314 18
  • #1 14 Maj 2013 22:56
    maximus22_kr
    Poziom 18  

    Witam
    Mam problem zapewne prosty. Jako, że posiadam pełną wersję Bascom chciałem zmienić i skompilować bibliotekę do obsługi dwóch LCD lcd4e2.lib

    Chciałem zmienić na port A poniższe linie ( czy dobrze to się okaże )

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    problem mam raczej z samym skompilowaniem.

    Zmieniłem w pliku lcd4e2.lib dwie linie w edytorze ( notatniku )
    Otworzyłem Lib Manager w Bascom
    Wybrałem lcd4e2.lib
    Nacisnąłem Compile, później OK
    Okno menadżera bibliotek się zamknęło, ale plik lcd4e2.lbx nie zmienił daty zapisu, a jego zawartość jest taka sama jeśli chodzi o ustawienie portów czyli:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 18
  • #2 15 Maj 2013 08:14
    Mundi1970
    Poziom 24  

    Masz tylko jedną wersje Bascom'a zainstalowaną? Jeżeli więcej to pewnie pomyliłeś katalog Lib, każda wersja Bascom'a korzysta ze swojego katalogu. Sprawdź też czy w tym katalogu nie został utworzony plik lcd4e2.err, plik zawiera błędy jakie wystąpiły podczas kompilacji.

    0
  • #3 15 Maj 2013 23:13
    maximus22_kr
    Poziom 18  

    To nie to, o czym Kolega pisze. Mam tylko jedną wersję zakupioną w lutym.

    Zastanawiałem się, czy nie jest to kwestia instalacji kompilatora na dysku C. Wiadomo jak system Windows 7 często zachowuje się przy uruchamianiu programów.
    Już samo wyedytowanie pliku LIB zmusiło mnie najpierw do zapisania jego wyedytowanej wersji na dysku D i dopiero później skopiowanie do katalogu LIB na C, gdzie jest zainstalowany kompilator.

    Ech, myślałem, że zakup pełnej wersji za 89 Euro to będzie koniec wszystkich ograniczeń i problemów

    Dodano po 4 [godziny] 34 [minuty]:

    Okazało się, że wystarczyło zainstalować Bascom na dysku D i problem zniknął.

    Czy ktoś mógłby pomóc w sprawie tych dwóch linii konfiguracyjnych w bibliotece lcd4e2.lib ?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    wszytko mam podpięte w kolejności według helpa, tylko do portu A.

    0
  • #4 17 Maj 2013 11:50
    Mundi1970
    Poziom 24  

    Cytat:
    Czy ktoś mógłby pomóc w sprawie tych dwóch linii konfiguracyjnych w bibliotece lcd4e2.lib ?

    Dla jakiego mikrokontrolera ma być ta modyfikacja?

    0
  • #5 17 Maj 2013 12:05
    maximus22_kr
    Poziom 18  

    Obecnie testuje na Atmega644P oraz Atmega1284P dla kwarcu 16 MHz.

    0
  • Pomocny post
    #6 17 Maj 2013 18:52
    Mundi1970
    Poziom 24  

    Dla obydwu mikrokontrolerów powinno być:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #7 17 Maj 2013 22:25
    maximus22_kr
    Poziom 18  

    Dziękuję, działa. Co prawda, czasem występuje dziwne zjawisko, że wyświetlacz wyświetla to czego nie powinien, tzn. kopie innych linii, ale też jest coś takiego, że jakby nie czyścił poszczególnych linii.
    Jeśli wyświetlam przykładowe teksty we wszystkich liniach każdego wyświetlacza, tak jak w programie poniżej, to po wyłączeniu np. linii trzeciej obydwu wyświetlaczy, skompilowaniu i wgraniu programu wyświetlacz pierwszy dalej wyświetla zawartość trzeciej linii - dzieje się tak tylko w przypadku pierwszego wyświetlacza podłączonego do E1. Dopiero wyłączenie i włączenie zasilania powoduje, że znika. Drugi jest w porządku. Jeszcze posprawdzam połączenia, czy dobrze polutowane.

    I mimo użycia Cursor Off przed startem programu, należy przed zmianą wyświetlacza również zrobić Cursor Off , inaczej będzie go widać na końcu ostatniej wyświetlanej linii każdego wyświetlacza.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 28 Maj 2013 00:06
    maximus22_kr
    Poziom 18  

    Witam ponownie
    Czy Kolega wie może dlaczego znaki specjalne, określane przez Deflcdchar, nie wyświetlają się wcale ? Zamiast nich jest coś zupełnie innego, jakieś "krzaczki"

    0
  • #9 28 Maj 2013 09:39
    Mundi1970
    Poziom 24  

    A przed Deflcdchar, ustawiasz odpowiednią linie E? Czcionki musisz załadować do dwóch wyświetlaczy.

    0
  • #10 28 Maj 2013 12:27
    maximus22_kr
    Poziom 18  

    Czyli przed uruchomieniem programu deklaruje dla konkretnego wyświetlacza.
    A w programie wywołując dany wyświetlacz muszę korzystać z zdefiniowanych dla niego znaków, chyba, że dla obydwu zdefiniuję takie same.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Czy trzeba inicjować wyświetlacz przez Lcdinit ?
    Używam jeszcze RFM12 i zaraz przed zainicjowaniem RFM robiłem Lcdinit.

    0
  • #11 28 Maj 2013 19:38
    Mundi1970
    Poziom 24  

    Cytat:
    Czyli przed uruchomieniem programu deklaruje dla konkretnego wyświetlacza.
    A w programie wywołując dany wyświetlacz muszę korzystać z zdefiniowanych dla niego znaków, chyba, że dla obydwu zdefiniuję takie same.

    Raczej tak.
    Cytat:
    Czy trzeba inicjować wyświetlacz przez Lcdinit ?

    Możesz, ale nie musisz sama konfiguracja LCD wywoła InitLCD. Funkcja InitLCD z biblioteki lcd4e2.lib wykonuje inicjalizacje dwóch wyświetlaczy, wystarczy ją wywołać jeden raz.

    0
  • #12 02 Cze 2013 15:06
    maximus22_kr
    Poziom 18  

    Czy Kolega ma jakieś pozytywne doświadczenia z tą biblioteką ?

    Bo walczę od kilku dni i mam taki problem:
    Wyświetlacz określony jako EN1 nie zawsze się poprawnie inicjuje, a jeśli się zainicjuje to nie wyświetla poprawnie zdefiniowanych znaków Deflcdchar .

    Mam kilka podprogramów ( menu włączane z pilota RC5 ) i kilkukrotne wejście/wyjście z menu też powoduje, że na wyświetlaczu zaczynają być wyświetlane śmieci.

    i co ciekawe, problem dotyczy wyświetlacza określonego jako EN1, niezależnie od tego, jak ustawię w konfiguracji

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    zawsze ten, który jest sterowany pinem En1 ma problemy, drugi En2, działa bez problemu, wyświetla także znaki zdefiniowane.
    Nawet w akcie desperacji dołożyłem ponowną definicję znaków LCD.
    Zauważyłem też, że ten En1 zamiast właściwego tekstu wyświetla w losowym położeniu wszystkie zdefiniowane znaki Deflcdchar.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #13 02 Cze 2013 16:24
    Mundi1970
    Poziom 24  

    Czy w obsłudze przerwań używasz jakiś instrukcji do obsługi LCD?
    Jeżeli masz możliwość zamień wyświetlacze i sprawdź czy tak samo się zachowują.

    0
  • #14 02 Cze 2013 21:35
    maximus22_kr
    Poziom 18  

    Zamiana wyświetlaczy nic nie daje, zamieniałem nawet same kabelki łączące je z płytką i też nic.

    Jeśli chodzi o przerwania to mam odbiór danych z RFM12 oraz obsługę klawiatury na PCF8574.
    Może faktycznie coś na rzeczy z tymi przerwaniami.
    Wyświetlacz, który nie działa jak trzeba oprócz wyświetlania daty, godziny oraz części odebranych danych wyświetlać ma okresowo znaki ( symbole ) zdefiniowane dla każdego wyświetlacza. Są to symbole związane z działaniem: odbiór RFM12 ( symbol antenki ), odczyt temperatury z DS18B20 ( symbol termometru ), odczyt z DHT11 oraz zapis na kartę SD ( symbol karty ). Wszystkie te funkcje wyzwalane są przez flagi od Timer0. Oraz są dodatkowe flagi kasujące wyświetlanie symbolu.

    Również czas odczytywany jest flagą od Timer0, co około sekundę.

    Dodatkowo w pętli głównej mam warunek zabezpieczający przed zablokowaniem całego układu przez RFM12 - poniżej kod tego oraz obsługa flagi kasującej wyświetlanie symbolu odbioru danych

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Podobnie jest z obsługą karty SD
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Tak wygląda przykładowe menu uruchamiane z pilota RC5
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Czy oprócz zmiany portów w bibliotece nie ma konieczności innych zmian ? Jeden z Kolegów ( chyba autor polskiego helpa do Bascoma ) w jednej z nielicznych dyskusji na temat użycia dwóch wyświetlaczy, napisał, że ta biblioteka oprócz tego, ze jest pod porty B, to jeszcze pod kwarc 4 MHz i trzeba dostosować kod do innej częstotliwości.

    0
  • #15 03 Cze 2013 15:33
    Mundi1970
    Poziom 24  

    Cytat:
    Czy oprócz zmiany portów w bibliotece nie ma konieczności innych zmian ? Jeden z Kolegów ( chyba autor polskiego helpa do Bascoma ) w jednej z nielicznych dyskusji na temat użycia dwóch wyświetlaczy, napisał, że ta biblioteka oprócz tego, ze jest pod porty B, to jeszcze pod kwarc 4 MHz i trzeba dostosować kod do innej częstotliwości.

    Nic takiego nie widzę jest tylko parę Wait'ów, ale z tym podczas kompilacji nie powinno być problemu.

    Pokarz procedury wszystkich przerwań.

    0
  • #16 03 Cze 2013 23:42
    maximus22_kr
    Poziom 18  

    Przerwanie od RFM12

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Przerwanie od PCF8574
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Timer0
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Jeszcze zauważyłem coś takiego - obydwa wyświetlacze działają w porządku, przychodzą dane z RFM12 ( czyli przerwanie ) i ten na linii E1 znowu się rozsypuje.

    0
  • #17 01 Kwi 2016 22:52
    Mariuszek15
    Poziom 24  

    Mundi1970 napisał:
    Dla obydwu mikrokontrolerów powinno być:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Witam!

    Jakie są wartości portu A dla ATMEGA32?
    Jak odczytywać te wartości?

    Pozdrawiam!

    0
  • #18 02 Kwi 2016 01:07
    373522
    Użytkownik usunął konto  
  • #19 02 Kwi 2016 09:46
    Mariuszek15
    Poziom 24  

    Dzięki!

    [_Init_LCD]
    .EQU LCDDDR=$1A
    .EQU LCDPORT=$1B

    0