Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 10 kwi 2025, o 07:15


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
    Autor Wiadomość
    PostNapisane: 22 sie 2012, o 20:29 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Witam
    Testuję program LCD (pobrany z DVD Mirka) i jest problem odnośnie napisów z pamięci EEPROM - nie wyświetla.
    Z innych pamięci wyświetla. Kombinowałem najkrótsze teksty oraz zmieniałem położenie kursora- nic.
    linię "#define EEMEM __attribute__((section(".eeprom")))" nam aktywną

    Modyfikacje to zmiana pinów i wybór attiny2313 oraz wyswietlacz 1x16 - wiem wiem, że nie ma drugiego wiersza ;P, ale tak wszystko ustawiłem, żę z pamięci powinno iść.., nawet litera 'ó' nie działa(jak wiemy zapisana w eeprom):

    " // wyświetlenie własnych znaków na LCD
    lcd_locate(0,2);
    lcd_str("\0x81");//'ó
    "

    Ps do czego są linie w "main":
    DDRD |= (1<<PD0);
    PORTD |= (1<<PD0);

    volatile uint8_t pwm1, pwm2, pwm3;
    Nie widzę, żeby były przydatne do wyświetlania..
    Chyba je usunąć.. ;P
    Z góry dzięki ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 20:57 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2011
    Posty: 582
    Lokalizacja: okolice Wrocławia :)
    Pomógł: 24

    Znając życie pewnie nie wgrywasz zawartości pamięci EEPROM do procka przy jego programowaniu.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 21:33 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    ba 100% że *epp brakuje :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 21:41 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    Dokładnie! W Eclipse trzeba zaznaczyć opcję w zakładce avrdude żeby wgrywało eeprom podczas programowania procka

    a te linie o które pytasz to ja zwykle ustawiałem sobie tak na sztywno włączenie podświetlenia LCD. Więc jeśli z tego nie korzystasz to możesz skasować.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 22:22 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    ;/ No tak, zapomniałem o tym.. a tyle razy programowałem eeprom ;/

    Panowie dzięki..
    Zauważyłem, że mam problem z wyświetleniem z pamięci RAM....
    Kod:
       lcd_locate(0,1);
       lcd_str("..");            // napis z pamięci RAM

    I nic... - tylko całe czarne kwadraty...
    Ramu jest na tyle:

    Kod:
    Device: attiny2313

    Program:    1306 bytes (63.8% Full)
    (.text + .data + .bootloader)

    Data:         13 bytes (10.2% Full)
    (.data + .bss + .noinit)

    EEPROM:       11 bytes (8.6% Full)
    (.eeprom)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 22:35 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    No a co to za napis?

    lcd_str("..");

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 22:45 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    kropki, których nie ma w bibliotece ;)
    lol.. ;P

    ------------------------ [ Dodano po: 4 minutach ]

    Wcześniej dawałem litery i też nic... ;/
    Wow - mój wyświetlacz działa tylko w połowie- to jest powód... ;/
    To przesuwanie chyba nie działa ;/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 22:53 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    20rafalo napisał(a):
    kropki, których nie ma w bibliotece ;)
    lol.. ;P

    ------------------------ [ Dodano po: 4 minutach ]

    Wcześniej dawałem litery i też nic... ;/
    Wow - mój wyświetlacz działa tylko w połowie- to jest powód... ;/
    To przesuwanie chyba nie działa ;/


    Nic nie rozumiem - zaczynasz wątek od opisu problemu że nie wyświetla się napis z EEPROM co jednoznacznie sugeruje że pozostałe się wyświetlają .... dyskutujemy jak to naprawić a ty teraz piszesz że napisy z RAM się nie wyświetlają ????

    a ten z EEPROM się pojawił czy nie ????

    czy teraz się okazuje że NIC ci nie działa?

    Nie dasz rady jakoś bardziej przejrzyście opisać swojego problemu i po kolei ?

    ------------------------ [ Dodano po: 1 minucie ]

    jakie znowu przesuwanie ??? ;) czy my mamy odgadywać co ty tam sobie w głowie myślisz i robisz na stole ze swoim układem ??? ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 22:57 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Zaszła taka sprawa.. kombinowałem z e wszystkimi pamięciami zmieniając ich wierszę, żeby był ład...
    Pierwszym razem wyświetlły się tylko znaki jednej pamięci, to zacząłem kombinować i zmieniłem jej wiersz, w związku z tym inne zniknęły.
    Teraz zauważyłem, że działa tylko 8 znaków wyświetlacza- i stąd te nagłe znikanie....
    Wnioskuję, że na moim wyświetlaczu nie działa kod od Ciebie w takiej konfiguracji, być może trzeba coś przestawiać w nim....
    Bo z tego co czytałem, to kod był w takiej formie, że najpierw zapisywano na pierwsze 8 bitów potem na drugie- wykorzystując 4 linie adresowe..

    Oj Mirku już nie wiem jak Ci wytłumaczyć- Ty wiesz jaki pisałeś kod. ;P

    Normalnie jest 8 linii adresowych- my wykorzystujemy 4 linie- a układ się tak zachowuje jak by program był napisany aby wykorzystywać 8 linii adresowych, nie 4 i wyświetla 8 znaków od lewej - przy podłączeniu fizycznym 4 linii ;P
    Mój wyświetlacz to BSC1A16DRY
    Już rozumiesz?

    ------------------------ [ Dodano po: 8 minutach ]

    Domyślam się, że trzeba przestawić jakieś adresy...



    Ostatnio edytowano 22 sie 2012, o 23:17 przez 20rafalo, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:09 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    Tzn ty musisz zrozumieć i to jest opisane w książce, że kod jest przystosowany do typowego wyświetlacza 2x16 na sterowniku HD44780

    więc ja na twoim miejscu bym po pierwsze sam się zastanowił że jeśli używam innego wyświetlacza (i to jakiego - działa TYLKo 8 linii to boże ile on ma wszystkich linii ??? 10? 12? a może 16 ???? i na pewno zgodny jest z HD44780 ???)

    a zatem przede wszystkim od tego bym zaczął wątek - że robię testy na innym wyświetlaczu niż użyty w przykładzie .... Przecież już samo to może być powodem różnych dziwnych zachowań ....

    a nawet jeśli nie ma 8 linii - tylko znowu ci się coś pomyliło - i ma np 4 wiersze - ale kolumn np 24 - to może mieć całkiem inne mapowanie znaków w swojej pamięci DDRAM - i to też opisuję w książce i w pliku #.h masz przykład jak do tego podejść i sobie kombinować ....

    więc zastanów się na przyszłość jak w końcu zadawać poprawnie pytania. Bo połowy rzeczy nie napiszesz , inne przekażesz nie tak .... a na końcu chodzisz i się denerwujesz że ci coś nie działa i żadne podpowiedzi z forum nie pomagają.

    ------------------------ [ Dodano po: 1 minucie ]

    20rafalo napisał(a):
    Domyślam się, że trzeba przestawić jakieś adresy...


    Widzisz - nie trzeba się domyślać - bo jak pisałem wyżej opisałem to w książce i podpowiedziałem jak można to sobie zbadać .... ale znowu kolega nie doczytał - bo pewnie się śpieszy ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:15 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    mirekk36 napisał(a):

    ....a nawet jeśli nie ma 8 linii - tylko znowu ci się coś pomyliło - i ma np 4 wiersze - ale kolumn np 24

    ...więc zastanów się na przyszłość jak w końcu zadawać poprawnie pytania.

    Oj Mirku Mirku...
    Gdybym od razu ogarnął, że problem jest z przesyłem do wyświetlacza to bym inaczej zadał pytanie, ale wstępnie zacząłem od kodu-bo trochę zmieniałem...

    Wyświetlacz nie ma 4x20 - to już złośliwość z Twojej strony ;P

    Na samym początku napisałem, że 1x16(fachowo - 1 wiersz 16 kolumn). Widać to gołym okiem Mirku i Ty o tym dobrze wiesz..
    Poza tym podałem nr katalogowy- mam przed sobą pdf-a i nic o adresach nie ma...
    No...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    panie kochany bo mimo ze to jest LCD 16x1 to trzeba go traktowac jak wyswietlacz 8x2 czyli ma inne adresy pamieci



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:25 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Malutki_27 napisał(a):
    panie kochany bo mimo ze to jest LCD 16x1 to trzeba go traktowac jak wyswietlacz 8x2 czyli ma inne adresy pamieci

    Czytam księgę - może coś pomoże ;P
    Czyli normalnie w LCD.h zmieniać definicje na y2, x8..
    Hmm.. zobaczymy ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:26 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    Jeśli uważasz że moja prośba o dokładniejsze precyzowanie pytań to złośliwość - to na prawdę ja mógłby potraktować tak zadawane pytania jako złośliwość. Zrozum, że staram się tobie pomóc - ale żeby dostać szybciej jakąś pomoc trzeba też się nauczyć zadawać pytania.

    Ja bardzo dobrze rozumiem że nie ogarniasz jeszcze wszystkiego ale tym bardziej dokładnie ja wtedy opisuję to co mam .... podałeś symbol i weź sobie człowieku szukaj w necie teraz PDF'a do twojego wyświetlacza. Przed chwilą coś znalazłem ale wyszło mi że to 1x16.

    Więc zrozum, że na forum jak masz coś tak nietypowego to warto spakować notę PDF do ZIP'a i wrzucić jako załącznik, żeby osoby, które mają ci pomóc nie musiały tracić dodatkowo czasu na szukanie PDF'a i jeszcze zgadywanie czy znalazły dobry.

    Czy tak trudno ci zrozumieć takie podstawowe zasady formułowania pytań ????

    Z tymi liniami to przyznaję - mi się już pomyliło - teraz zajrzałem wyżej - więc przepraszam ...

    nie mniej jednak wykorzystywanie 8-bitowego trybu czy 4-bitowego trybu (jak ty to nazwałeś 8linii adresowych czy 4) nie ma nic wspólnego czy on coś wyświetla po lewej czy po prawej stronie ...

    A jak masz 4x20 - to spróbuj w pliku lcd44780.h wybrać właśnie ten drugi zestaw adresów. Jeszcze raz przypomnę w książce masz to opisane - zajrzyj proszę - i sprawdź ok ?

    ale jeśli ma 1x16 to będzie jeszcze inaczej :(

    ------------------------ [ Dodano po: 3 minutach ]

    Dobra przyznaję się do kolejnego błędu co do zarzutu nierzetelnego opisu z twojej strony - rzeczywiście w pierwszym poście jest napisane przez ciebie

    1x16

    więc jeszcze raz przepraszam

    ------------------------ [ Dodano po: 5 minutach ]

    ale OK - jak można zbadać adresy w swoim wyświetlaczu

    napisz program który będzie w pętli wrzucał kolejno co sekundę po jednym znaku do LCD i zliczaj sobie

    1, 2, 3 ,4 itd.... w pewnym momencie pewnie znaki przestaną się pojawiać ale zliczaj dalej co sekundę sobie albo wysyłaj gdzieś licznik przez RS232 na terminal..... i jak się zaczną znowu pojawiać to zapamiętaj tą liczbę - będziesz miał gotowe przesunięcie w adresach o konkretną liczbę

    ja tak testowałem sobie niektóre wyświetlacze jeśli w PDF'ie nie było adresów - a przeważnie nie ma ;)

    ------------------------ [ Dodano po: 6 minutach ]

    I oczywiście Malutki_27 ma rację że wyświetlacz 1x16 zwykle zachowuje się tak jak 2x8

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:37 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Str 8. Zbyt dużo tam nie ma ;/

    wysłałem plik, ale go nie widzę..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:43 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27372
    Lokalizacja: Szczecin
    Pomógł: 1043

    przeczytaj jeszcze raz wyżej moje porady po kolei no i pokajanie się moje - za to że nie zauważyłem "1x16" w pierwszym poście

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sie 2012, o 23:45 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Kod:
    #define LCD_Y 2      // ilość wierszy wyświetlacza LCD
    #define LCD_X 8   // ilość kolumn wyświetlacza LCD

    Tu dawałem 1x16 i to samo ;P

    Kod:
    #define LCD_LINE1 0x00      // adres 1 znaku 1 wiersza
    #define LCD_LINE2 0x28      // adres 1 znaku 2 wiersza

    Chodzi o modyfikację tych linii (resztę '#define' usunąć- linie3,4)
    jeśli działa i połowa to domyślam się, że adres 0x00 jest ok.
    Tylko ten drugi zmieniać...

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    Dzięks ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sie 2012, o 00:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    20rafalo napisał(a):
    Str 8. Zbyt dużo tam nie ma ;/

    wysłałem plik, ale go nie widzę..


    Oooo kochanieńki tam jest bardzo dużo, a najważniejszy wpis z tej strony brzmi :
    CONTROLLER NT3881 OR EQUIVALENT
    co nas prowadzi chociażby do tej noty ;)
    A wniej już jest deczko więcej ;)

    ------------------------ [ Dodano po: 6 minutach ]

    A z niej wynika ( str 16 i 17 ) że ten wyświetlacz może pracować w trzech trybach
    1. 5 X 7 dots + Cursor (or 5x8 dots)
    1. 5 X 10 dots + Cursor
    2. 5 X 7 dots + Cursor (or 5x8 dots)
    Cyferka z kropką oznacza ilość linii



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sie 2012, o 00:19 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Chyba ściągnąłem innego pdf-a. U mnie na 16 str jest opis dużego wyświetlacza ;P

    ------------------------ [ Dodano po: 27 minutach ]

    Kombinuję z tym: "#define LCDC_FUNC4B 0x15//" i wyświetliło mi się na całym wyświetlaczu, jednak "głupoty"



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sie 2012, o 00:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Ojj albo mnie tu robisz w avatara albo ja już powinienem isc spać :roll:

    Ty masz tą notę

    a jeżeli tak to do twojego LCD który ma kontroler NT coś tam jest ta nota



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sie 2012, o 12:50 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Dzięki...
    Zastosowałem pomysł Mirka i po części się sprawdził.
    Mianowicie:
    plik:lcd.h wygląda tak:
    Kod:
    else
    #define LCD_LINE1 0x00      // adres 1 znaku 1 wiersza
    #define LCD_LINE2 0x10      // adres 1 znaku 2 wiersza
    #define LCD_LINE3 0x70     // adres 1 znaku 3 wiersza
    #define LCD_LINE4 0x80     // adres 1 znaku 4 wiersza
    #endif
    Jeśli zmienię na [code]#define LCD_LINE2 0x36      // adres 1 znaku 2 wiersza[/code]

    Nie daje to żadnego efektu.
    Ale gdy w main.c zrobię tak:
    Kod:
     wyświetlenie własnych znaków na LCD
       lcd_locate(2,55);
       lcd_str("123456789");

    jest ok,
    Kod:
     wyświetlenie własnych znaków na LCD
       lcd_locate(0,55);                               //zmiana
       lcd_str("123456789");

    też ok ;P

    Dlatego stwierdziłem, że wyświetlacz jest zaprogramowany jako 1x16, nie 2x8
    Gdzie zmienić przesuwanie się kolumn i wstawić to przesunięcie '55'
    Co zmienić aby móc tak ustawić "lcd_locate(0,8);" i jechać do końca wyświetlacza..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sie 2012, o 19:31 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Ogarnąłem jakoś po swojemu... i nawet działa..
    Powoli kończę projekt lol... nie ma to jak bliżej finiszu po wielu dniach pracy... ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO