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

[atmega32][bascom] Zapis bitmapy do eeprom.

30 Wrz 2015 17:37 2235 29
  • Poziom 22  
    Witam wszystkich

    Chcę wysyłać i odczytywać obrazki BGF do/z eepromu.
    Procesor Atmega 32, eeprom at24c32. Wyświetlacz DMF5005N. T6963C.
    Ewentualnie skorzystałbym z EEpromu atmegi 644p.

    Czy posiada ktoś sprawdzoną procedurę zapisu i odczytu grafiki.?
    Próbowałem na przykładzie gotowca z helpa BASCOMA, ale miałem tylko czarne tło.

    Pozdrawiam i proszę o pomoc.
  • Poziom 22  
    Podałem tylko na jakim LCD pracuję.
    Chciałbym zapisywać grafiki na zewętrznym 24c32/64 lub wewnętrznym na M644p.
  • Poziom 22  
    Bascom. Tylko w tym umiem cokolwiek.
  • Poziom 22  
    Wyświetlacz jest ok. Text i grafika wyświetlana z flash jest ok.
    Strona którą podałeś odwołuje do czcionek.
  • Poziom 22  
    Czarna magia. Wyświetlacz mam czarno biały. Nie dam rady z tym co mi pokazałeś. Napisałeś że port b wypluwa grafiki. Tu potrzebna jest komunikacja z AT24c32 linie SCL SDA i adresy. To wszystko znam. Nie wiem tylko jak zamienić grafikę, aby wrzucić do eeprom.
  • Poziom 22  
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    To tylko próby i kombinowanie. Nie mam już pomysłu.
  • Poziom 15  
    Oto zapis i odczyt pamięci 24C32.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Oraz pliki BD i B.
    W pętli Odczyt_eeprom zmienna B to kolor piksela i tą zmienna wysyłasz na port DATA w Twoim programie właśnie w tej pętli.
    Inaczej wygląda zapis tekstu.
    A jest to tak:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Trzeba zapisywać bajty a nie litery (STR)
    Celowo rozmiar zmiennej wynosi 32, gdyż w jednej stronie pamięci 21C32 mieści 32 bajty.
    Tak więc zapisując stronę zapisujemy całą zmienną (nie stracimy niczego)
    Oczywiście można zapisywać i odczytywać również stronami, ale nie chce mi się teraz myśleć.
  • Poziom 22  
    Nie wiem co jest nie tak. Ustawiłem w Twoim programie adresy pamięci, takie jak pokazał mi "automat". Program się kompiluje, ale na ekranie pusto.
    Wgrywam inny programik-text i grafikę bezpośrednio do proca i jest ok.
    Ten od Ciebie nie idzie za cholerę. Podmieniłem już 3 pamięci i nadal to samo.

    Zauważyłem jeszcze jedną rzecz:
    W programie od Ciebie, ADRES COUNT = 4095. Natomiast w datasheecie:
    Description
    The AT24C32/64 provides 32,768/65,536 bits of serial electrically erasable and programmable
    read only memory (EEPROM) organized as 4096/8192 words of 8 bits
    each.

    Zmieniłem na 4096, ale to tez nic nie daje.
  • Poziom 15  
    inspector_electro napisał:
    Nie wiem co jest nie tak. Ustawiłem w Twoim programie adresy pamięci, takie jak pokazał mi "automat". Program się kompiluje, ale na ekranie pusto.
    Wgrywam inny programik-text i grafikę bezpośrednio do proca i jest ok.
    Ten od Ciebie nie idzie za cholerę. Podmieniłem już 3 pamięci i nadal to samo.

    Nie będzie działał sam jako taki, napisałem, że W pętli Odczyt_eeprom zmienna B to kolor piksela i tą zmienna wysyłasz na port DATA w Twoim programie właśnie w tej pętli.
    Kurcze wklej cały Twój program, wszystko, nie tylko to co jest tutaj Link

    inspector_electro napisał:
    Zauważyłem jeszcze jedną rzecz:
    W programie od Ciebie, ADRES COUNT = 4095. Natomiast w datasheecie:
    Description
    The AT24C32/64 provides 32,768/65,536 bits of serial electrically erasable and programmable
    read only memory (EEPROM) organized as 4096/8192 words of 8 bits
    each.

    Oj tam o jeden się pomyliłem.
    Fakt, powinienem bynajmniej przy zapisie sprawdzać, czy maksymalny numer adresu nie został przekroczony.
    Lecz niestety już nie używam tego typu pamięci od około dwóch lat.
    Jak napisałem wcześniej, nie nadaje się ona do współpracy z TFT z powodu mułowatości.
    A tak po za tym zauważyłem, że ten wyświetlacz można wysterować podobnie, jak ja to robię z SSD1963.
    To znaczy z ośmiobitową szyną danych.
    Jednak jest to mnóstwo zabawy, począwszy od datasheeta aż po pisanie wielu makr. t6963c.pdf
  • Poziom 22  
    Powiedz mi jak w końcu mam wyświetlać tą zmienną, bo zgłupiałem teraz. Cały czas mam tylko białe tło.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    Zacznijmy od poczatku.
    Wyswietlacz Ci działa, tylko nie mozesz pokazac tej grafiki?
    Najpierw zrob sobie blok DB z grafika i wrzuc na wyswietlacz.
    Jesli Ci zadziala to dodaj odczyt z eeprom-u.
    Pamietaj wczesniej zapisac te dane do eeprom.
  • Poziom 22  
    Nie rozumiem " blok DB z grafika ". Nie wiem też jakim konkretnie poleceniem.
    Czy napiszę SHOWPIC, czy LCD "cośtam" , to albo nie ma nic na LCD, albo kompilator wywala błędy.
    Wyświetlacz działa z prostymi komendami SHOWPIC i plikami BGF.
    Wyświetlacz jest MONO.
  • Poziom 22  
    Wyświetlacz działał, działa cały czas. Nie wiem tylko jak wyświetlić to co wyciągnie program z EEPROMU. Jakiej komendy użyć:
    showpic nie działa.

    img][/url] [atmega32][bascom] Zapis bitmapy do eeprom.

    [atmega32][bascom] Zapis bitmapy do eeprom. [atmega32][bascom] Zapis bitmapy do eeprom.
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 26  
    Do wyświetlania grafiki bespośrednio z eeprom jest gotowa bascomowa procedura SHOWPICE

    http://avrhelp.mcselec.com/ tutaj jest dokładny opis (trzeba wyszukać SHOWPICE)
  • Poziom 15  
    niveasoft napisał:

    Obrazek BGF jest skompresowany - nie ma dużo danych do czytania dla monochromatycznych LCD...

    I właśnie to jest ból !!!
    O wiele szybciej wyświetli jakąkolwiek grafikę, gdy w pamięci EEPROM lub Flash będzie miał ją zapisaną jako binarną.
    To prawda, że zajmie więcej miejsca, ale coś za coś.
    I nie uwierzę, że taka animację uzyskałeś za pomocą procedur bascomowych.
    Zapewne sam napisałeś obłsugę sterownika T6963C.
  • Pomocny post
    Poziom 26  
    Wątpie czy szybciej. Szybciej będzie ją rozkodować (tam kodowanie jest banalnie proste, zamiast powtarzać te same ciągi wartości w bitmapie, jest tylko raz wartość do wyświetlenia oraz ilość powtórzeń wyświetlenia tej wartości), niż przesyłać relatywnie dużą bitmapę po i2c lub z eeprom. z Flash będzie pewnie szybciej. kompresowanie do BGF jest kompresją bezstratną.

    co do obsługi T6963C to w bascomie jest to zrobione z poziomu asm, więc akurat tutaj bascom niewiele ustępuje asm.
  • Poziom 22  
    Poddaję się. Pamięć jest nowa, wykrywana. Nie sprawdzałem zapisu i odczytu bajtów. Biblioteka zmodyfikowana wg:
    http://www.mcselec.com/index.php?option=com_content&task=view&id=96&Itemid=57

    Chociaż przy kompilacji biblioteki kompilator komunikuje o 3 błędach.
    Kombinowałem z różnymi ustawieniami kwarcu i CONFIG TWI.
    Dodałem biblioteki do programu. Na wyświetlaczu nie ma nawet śmieci.

    CZY ŻEBY WYŚWIETLIĆ ZAWARTOŚĆ NA LCD, TRZEBA DODAĆ DO PROGRAMU COŚ JESZCZE?


    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 15  
    Coś mi się tu nie podoba.
    Na początek skompiluj ten przykład, wgraj do megi, następnie uruchom i zrób zdjęcie.
    Pokaż je nam.
    Na wyświetlaczu o współrzędnych od X 1,Y 1 do X 32 Y 32 powinieneś otrzymać taką grafikę.
    [atmega32][bascom] Zapis bitmapy do eeprom.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 22  
    Przez bezpośrednie wgranie na procesor bina, coś jest, ale nie czytelne.
    Próbowałem z biblioteką glcd i bez niej. Biblioteka jest przerobiona tak jak pisałem.

    [atmega32][bascom] Zapis bitmapy do eeprom.
  • Pomocny post
    Poziom 15  
    Kurde, masz zle skonfigurowany wyświetlacz !!!
    To samo co w poprzednim moim poście zrób z tym przykładem, następnie zdjęcie i wiadomo co dalej.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Czy ten tekst (większy) to grafika ?
    Link
    A tak w ogóle to może wreszcie zapodasz swój kod, bym mógł szybciej pomóc ?
  • Poziom 22  
    Posiadam jeszcze kod zegara na DS1307 z dużą czcionką, który miał być dołożony do grafiki. Teraz chciałem właśnie ogarnąć grafikę z EEPROMU. Niestety dziś o 9:00
    wyjeżdżam ponownie z granicę, i nie będę kontynuował tego tematu z EEPROMEM.
    Po prostu odpuszczam. Mam megę 644p. 64kb. Myślę że może wystarczy dla grafik
    w formacie BGF. Co do ostatniego Twojego kodu ASMnauka_, obrazek taki sam nie czytelny, powielony 3 razy na LCD.

    Dziękuję wszystkim za pomoc. Każdy dostanie POMÓGŁ.