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

[atmega32][bascom] Zapis bitmapy do eeprom.

inspector_electro 30 Wrz 2015 17:37 2781 29
  • #1 15032674
    inspector_electro
    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.
  • #2 15032743
    jnk0le
    Poziom 18  
    24c32 czy wyświetlacz ?
  • #7 15032989
    inspector_electro
    Poziom 22  
    Widziałem tą stronę Mirleja wiele razy. Wszystko świetnie, tylko jak zamienić BGC lub BMP na dane możliwe do zapisania do pamięci EEprom.
    Kombinuję od rana i powoli mnie ***** trafia.
    Dziwne jest to czarne migające tło które miałem na tym przykładzie:

    http://www.mcselec.com/index.php?option=com_content&task=view&id=96&Itemid=57
  • #10 15033141
    ASMnauka_
    Poziom 15  
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Ta pętla z linku, który podałem http://www.mcselec.com/index.php?option=com_content&task=view&id=85&Itemid=57
    Odczytuje i wypluwa na port B grafikę.
    Jeśli zamiast czcionki zastosujesz BGF to odczyta Ci obrazek.
    W zmiennej Gl_byte są kolory pikseli.
    Oczywiście nie zapomnij o RESTORE
  • #11 15033196
    inspector_electro
    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.
  • #14 15034189
    ASMnauka_
    Poziom 15  
    Oto zapis i odczyt pamięci 24C32.
    Kod: VB.net
    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: VB.net
    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ć.
  • #15 15034393
    inspector_electro
    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.
  • #16 15034982
    ASMnauka_
    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
  • #18 15035313
    uzi18
    Poziom 24  
    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.
  • #19 15035434
    inspector_electro
    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.
  • Pomocny post
    #22 15036368
    Konto nie istnieje
    Konto nie istnieje  
  • #23 15036578
    pawlik118
    Poziom 32  
    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)
  • #24 15036749
    ASMnauka_
    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
    #25 15037806
    pawlik118
    Poziom 32  
    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.
  • #26 15038525
    inspector_electro
    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: VB.net
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #29 15040852
    ASMnauka_
    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: VB.net
    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 ?
  • #30 15040867
    inspector_electro
    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Ł.
REKLAMA