Witam, jako początkujący w dziedzinie programowania mikrokontrolerów AVR w Bascomnie proszę o podpowiedzi w pewnej kwestii o której za chwilę napiszę.
Zacznę jednak od układu który posiadam, jest to złożony zestaw do samodzielnego montażu pełniący rolę zegara oraz termometru gdzie wszystko prezentowane jest na standardowym wyświetlaczy LCD 16x2. Do tego zestawu posiadam także plik ze skompilowanym programem w formacie hex. W każdym razie cały zestaw działa bez zarzutu.
Postanowiłem wykorzystać ten zestaw jako układ treningowy do bascoma i pobawić się na Atmedze.
Problem jednak pojawił się na starcie dzie przy banalnym programie do wypisania dosłownie jednej linijki nie mogę zainicjować poprawnie LCD /Pojawia się na nim tradycyjnie górny zapełniony rząd/. Znalazłem na forum sporo informacji na ten temat i wielokrotnie sprawdzałem połączenia mikrokontrolera z wyświetlaczem i znalazłem przyczynę problemu. Jest jak się w większości przypadków okazuje problem z pinem wyświetlacza RW, który winien być podpięty do masy.
U mnie niestety pin ten jest podpięty do portu PC1 atmegi.
W programie wymyśliłem, że po prostu wprowadzę ten pin w niski stan i będzie po temacie. Niestety nie działa mi to w ten sposób i dopiero fizyczna masa na pinie RW daje rezultat.
Poniżej zamieszczam moje źródło tego złożonego programu
Proszę zauważyć że zasilanie podświetlania także podłączono do procka i tutaj nie ma najmniejszego problemu z jego włączeniem.
Zastanawia mnie tylko fakt w jaki sposób w oryginalnym programie, którego niestety źródła nie posiadam prawidłowo inicjuje się wyświetlacz LCD.
Zacznę jednak od układu który posiadam, jest to złożony zestaw do samodzielnego montażu pełniący rolę zegara oraz termometru gdzie wszystko prezentowane jest na standardowym wyświetlaczy LCD 16x2. Do tego zestawu posiadam także plik ze skompilowanym programem w formacie hex. W każdym razie cały zestaw działa bez zarzutu.
Postanowiłem wykorzystać ten zestaw jako układ treningowy do bascoma i pobawić się na Atmedze.
Problem jednak pojawił się na starcie dzie przy banalnym programie do wypisania dosłownie jednej linijki nie mogę zainicjować poprawnie LCD /Pojawia się na nim tradycyjnie górny zapełniony rząd/. Znalazłem na forum sporo informacji na ten temat i wielokrotnie sprawdzałem połączenia mikrokontrolera z wyświetlaczem i znalazłem przyczynę problemu. Jest jak się w większości przypadków okazuje problem z pinem wyświetlacza RW, który winien być podpięty do masy.
U mnie niestety pin ten jest podpięty do portu PC1 atmegi.
W programie wymyśliłem, że po prostu wprowadzę ten pin w niski stan i będzie po temacie. Niestety nie działa mi to w ten sposób i dopiero fizyczna masa na pinie RW daje rezultat.
Poniżej zamieszczam moje źródło tego złożonego programu
$regfile = "m8def.DAT"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.0 , Rs = Portc.2
Config Lcd = 16 * 2
Config Portc.1 = Output 'LCD (RW)
Config Portb.1 = Output 'LCD BackLight VCC
Reset Portc.1 '<--proba ustawienia stanu niskiego na koncowce RW wyświetlacza LCD
Set Portb.1
Cls
Lcd "Witaj swiecie"
EndZastanawia mnie tylko fakt w jaki sposób w oryginalnym programie, którego niestety źródła nie posiadam prawidłowo inicjuje się wyświetlacz LCD.
