Witam!
Mam pewien problem... posiadam ja sobie LCD podpięty do atmegi 8515. Wszystko byłoby pięknie, ale dziwi mnie zachowanie się tego LCD, a konkretnie rozkazu DDRAM SET. Rozkazu tego używam do przesuwania kursora w żądane miejsce na ekranie... napisałem sobie takie makro:
oraz funkcję przesyłającą rozkaz do wyświetlacza:
(kodu nie przytaczam, bo funkcja działa poprawnie)
Teraz tak... piszę sobie:
efekt: kursor skacze do 5 znaku w 1 linijce (indeksowane jak wiadomo od 0), czyli fajnie... i ogólnie działa super w 1 linijce (czyli adresy od 0 do 39)
Problem pojawia się gdy odwołuje się do 2 linijki... nieważne który z adresów z zakresu 40-79 podam, kursor i tak ląduje w 1 znaku 2 linijki wyświetlacza (czyli adres 40).
Makro na pewno działa dobrze... funkcja także (debugowane wielokrotnie)... więc podejrzewam, że mogę czegoś nie rozumieć w związku z samym wyświetlaczem. Niestety po wielogodzinnych staraniach nie udało mi się znaleźć błędu w moim rozumowaniu i dlatego też zwracam się z tym do Was szanowni forumowicze
editka: jak zaczynam coś pisać w drugiej linijce, to kursor normalnie przesuwa się dalej i działa fajnie... niby mogę w pętli wywoływać rozkaz przesunięcia w prawo/lewo, ale wolę to załatwić jednym rozkazem - stąd to pytanie
Mam pewien problem... posiadam ja sobie LCD podpięty do atmegi 8515. Wszystko byłoby pięknie, ale dziwi mnie zachowanie się tego LCD, a konkretnie rozkazu DDRAM SET. Rozkazu tego używam do przesuwania kursora w żądane miejsce na ekranie... napisałem sobie takie makro:
#define LCD_CURSOR_POSITION(ZNAK) (0x80+ZNAK)oraz funkcję przesyłającą rozkaz do wyświetlacza:
void WriteCmd( char cmd );(kodu nie przytaczam, bo funkcja działa poprawnie)
Teraz tak... piszę sobie:
WriteCmd( LCD_CURSOR_POSITION(4) )efekt: kursor skacze do 5 znaku w 1 linijce (indeksowane jak wiadomo od 0), czyli fajnie... i ogólnie działa super w 1 linijce (czyli adresy od 0 do 39)
Problem pojawia się gdy odwołuje się do 2 linijki... nieważne który z adresów z zakresu 40-79 podam, kursor i tak ląduje w 1 znaku 2 linijki wyświetlacza (czyli adres 40).
Makro na pewno działa dobrze... funkcja także (debugowane wielokrotnie)... więc podejrzewam, że mogę czegoś nie rozumieć w związku z samym wyświetlaczem. Niestety po wielogodzinnych staraniach nie udało mi się znaleźć błędu w moim rozumowaniu i dlatego też zwracam się z tym do Was szanowni forumowicze
editka: jak zaczynam coś pisać w drugiej linijce, to kursor normalnie przesuwa się dalej i działa fajnie... niby mogę w pętli wywoływać rozkaz przesunięcia w prawo/lewo, ale wolę to załatwić jednym rozkazem - stąd to pytanie