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



Teraz jest 29 gru 2024, o 14:13


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
Avatar użytkownika

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

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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: 27320
Lokalizacja: Szczecin
Pomógł: 1041

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 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO