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

[ATMEGA32A][BASCOM 2.0.7.3] Graficzny wyświetlacz i zapis do SD

FireIsland 07 Lip 2017 12:42 930 3
REKLAMA
  • #1 16573553
    FireIsland
    Poziom 2  
    Dzień dobry,

    Jestem w trakcie tworzenia programu, w którym wyniki wyświetlane na wyświetlaczu graficznym 128x64 chcę zapisać potem na kartę SD. Problem w tym, że polecenia obsługi wyświetlacza graficznego (Boxfill, Line, Circle) "gryzą się" z poleceniem OPEN wykorzystywanym w podprogramie dokonującym zapisu do karty SD.
    Do programu dołączyłem bibliotekę do obsługi kart pamięci AVR-DOS.bas.
    Program testowy:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Przy próbie kompilacji pojawia się błąd:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Linia 221 jest całkiem poza programem. Z ksiązki M. Wziązani dowiedziałem się tylko, że chodzi o skod do tyłu poza dozwolonym zakresem.
    W przedstawionym wyżej programie wystarczy usunąć linijkę w podprogramie ZAPIS zaczynającą się od OPEN, lub linię w pętli DO zaczynającą się od LINE i program kompiluje się bez żadnego błędu.
    Dodam, że przy stworzeniu programu wykorzystującego tylko wyświetlacz lub tylko zapis do karty SD wszystko działa dobrze. Próba połączenia ich w jednym programie skutkuje błędem.
    W HELPIE Bascoma (po polsku) znalazłem, że
    Cytat:
    Domyślnym urządzeniem transmisyjnym jest wbudowany w mikroprocesor układ transmisji
    szeregowej, nazywany COM1. Jest on automatycznie otwierany, tak więc może być używany przez
    instrukcje INPUT oraz PRINT, bez potrzeby używania instrukcji OPEN.

    Skoro PRINT używa UART, więc domyślam się, że Lcdat również. Stąd wyświetlanie tekstu na wyświetlaczu nie gryzie się z zapisem do SD.
    Czy instrukcje takie jak Circle, Line, Boxfill używają innego kanału transmisji co skutkuje błędem?

    W załączniku przesyłam treść biblioteki do obsługi kart pamięci, której używam.

    Pozdrawiam Piotr,
  • REKLAMA
  • #2 16573562
    piotrva
    VIP Zasłużony dla elektroda
    Problemu rozwiązać nie pomogę, pewnie koledzy piszący nadal w Bascom pomogą za niedługo, ale chciałbym Cię zachęcić do przesiadki na język C, w którym łatwiej takie rzeczy uporządkować.
  • REKLAMA
  • Pomocny post
    #3 16573667
    Konto nie istnieje
    Konto nie istnieje  
  • #4 16575089
    FireIsland
    Poziom 2  
    piotrva - Zgadzam się, od jakiegoś czasu zamierzam się do przesiadki na C. Ten program chcę jedynie dokończyć w Bascomie.
    niveasoft - Dziękuje za odpowiedź. Faktycznie, zainstalowanie nowszej (2.0.7.8) wersji Bascoma pomogło. Program z poleceniami Line oraz Boxfill się kompiluje i działa. Błąd pojawia się jedynie przy próbie kompilacji kodu z poleceniem Circle. Niemniej jednak obejdę się już bez tego polecenia. Czy mógłbyś sprawdzić czy kod zawierający dodatkowo taką linię:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    skompiluje się poprawnie w wersji 2.0.8.0 ?
REKLAMA