logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
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 3024 29
REKLAMA
  • #1 15032674
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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.
  • REKLAMA
  • #2 15032743
    jnk0le
    Poziom 18  
    Posty: 172
    Pomógł: 33
    Ocena: 32
    24c32 czy wyświetlacz ?
  • REKLAMA
  • REKLAMA
  • #7 15032989
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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.
  • REKLAMA
  • #14 15034189
    ASMnauka_
    Poziom 15  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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ć.
    Załączniki:
    • D.bin (2 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • BD.bin (2 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 15034393
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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  
    Posty: 751
    Pomógł: 37
    Ocena: 82
    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  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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 34  
    Posty: 2432
    Pomógł: 202
    Ocena: 611
    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  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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 34  
    Posty: 2432
    Pomógł: 202
    Ocena: 611
    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  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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
  • #27 15039018
    ASMnauka_
    Poziom 15  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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: VB.net
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #29 15040852
    ASMnauka_
    Poziom 15  
    Posty: 187
    Pomógł: 20
    Ocena: 7
    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  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    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Ł.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje pomocy w zakresie zapisu i odczytu bitmap BGF do/z pamięci EEPROM (AT24C32) przy użyciu mikrokontrolera ATmega32 oraz wyświetlacza DMF5005N (T6963C). W trakcie dyskusji poruszono kwestie związane z czasem zapisu EEPROM, konfiguracją wyświetlacza oraz problemami z wyświetlaniem grafiki. Użytkownicy dzielili się przykładami kodu w BASCOM oraz wskazówkami dotyczącymi poprawnej komunikacji z pamięcią EEPROM. Zwrócono uwagę na konieczność przetwarzania obrazów do formatu odpowiedniego do zapisu w EEPROM oraz na ograniczenia związane z prędkością odczytu z pamięci I2C. Użytkownik ostatecznie zrezygnował z dalszej pracy nad projektem.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA