avr problem z lcd
avr problem z lcd
witam jest późno i byc moze nie myslę ale mam problem z lcd na płytce testowej, mianowicie po podłączeniu wyświetlacza (w zasadzie nie wazne czy podłaczony do uP czy tylko wsadzony w podstawkę) swieci sie na nim na czarno gorna linijka
zastanawim sie gdzie jest błąd, płytka troche stała nieuzywana ale kidys wszystko bylo ok, dzisiaj mialem zamiar wziac sie za nowy projekt , łączówki sprawdzalem po 20 razy, różne konfiguracje portow i caly czas nic
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portb.5 , E = Portd.1 , Rs = Portd.0
jakies pomysły moze ktos ma dlaczego tak sie dzieje
pozdrawiam piotrek
zastanawim sie gdzie jest błąd, płytka troche stała nieuzywana ale kidys wszystko bylo ok, dzisiaj mialem zamiar wziac sie za nowy projekt , łączówki sprawdzalem po 20 razy, różne konfiguracje portow i caly czas nic
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portb.5 , E = Portd.1 , Rs = Portd.0
jakies pomysły moze ktos ma dlaczego tak sie dzieje
pozdrawiam piotrek
Po podłączeniu zasilania(i ustawienai kontrastu) w wyświetlaczach zgodnych z HD44780 wyświetla się górna linijka. Dopiero po zainicjowaniu wyświetlacza gaśnie ten pasek, i można wysyłac mu rozkazy. Właściwie to ja mam taki sam problem tylko że na Atmedze16.
Gdy podłącze wyświetlacz do innego proca (AT90s2313) to wszystko jest cacy. Jestem w 99,9% pweny że wszysko jest dobrze podłączone (R/W do masy). Dlaczego tak się dzieje?
Gdy podłącze wyświetlacz do innego proca (AT90s2313) to wszystko jest cacy. Jestem w 99,9% pweny że wszysko jest dobrze podłączone (R/W do masy). Dlaczego tak się dzieje?
Nie korzystasz przypadkiem z JTAG'a? Jeśli dobrze pamiętam - domyślnie jest włączony i blokuje część wyprowadzeń. Jeśli z nich korzystasz - układ nie będzie działał prawidłowo. Ustaw na "niezaprogramowane" bity JTAGEN oraz OCDEN. Nie wszystkie procesory mają ten interfejs i w tych w których go nie ma - nie ma też "pułapki".
A sam procek chodzi na pewno? Masz możliwość zrobienia nim czegoś prostego? Pomigania jakąś diodą? Jeśli tak - sprawdź czy na pewno działa. Jeśli masz możliwość "migania" postaraj się skonfigurować ją tak aby miganie odbywało się na przykład co sekundę. Jeśli zauważysz, że odbywa się za szybko - będzie to oznaczało, że coś nie tak w ustawieniach generatora zegarowego (wtedy opóźnienia są za krótkie i sterownik LCD gubi część komend). Jeśli w ogóle nie zauważysz migania - oznaczałoby to, że procek nie działa.
No więc jest tak: Dioda gdy jest ustawiony $crystal = 8000000 (takie mam kwarc), prawie wogóle nie miga. Gdy jest ustawiony $crystal = 1000000 to miga tak jak trzeba co 1s(LCD dalej nic). Przypuszczam że jest włączony wewnętrzny generator. Wiec jak ustawić (w PonyProg bo w bascomie nie odczytuje mi fusów) aby działał na rezonatorze kwarcowym?
Prawdopodobnie jest tak jak piszesz. Nie znam ustawień bezpieczników na pamięć. Zajrzyj do manuala ATmega16 na stronie ATMEL. Jest tam rozdział o programowaniu oraz nastawy wszystkich bezpieczników.
Tylko, że jeśli skonfigurowałeś już rezonator na taki jaki masz w rzeczywistości - LCD powinien ruszyć. Spróbuj może (tylko to wymaga nieco cierpliwości) odłączyć LCD i program przełączający wyprowadzenie połączone z D0, następnie D1... i tak dalej aż sprawdzisz wszystkie. Podepnij w tym miejscu diodę. Ja zwykle takie pomiary przeprowadzałem miernikiem (ustawienie na pomiar częstotliwości) - możesz spróbować i tak. Wykluczysz w ten sposób ewentualność, że:
a/. Coś zostało źle podłączone
b/. Któreś z wyprowadzeń jest skonfigurowane w nietypowy sposób.
Tylko, że jeśli skonfigurowałeś już rezonator na taki jaki masz w rzeczywistości - LCD powinien ruszyć. Spróbuj może (tylko to wymaga nieco cierpliwości) odłączyć LCD i program przełączający wyprowadzenie połączone z D0, następnie D1... i tak dalej aż sprawdzisz wszystkie. Podepnij w tym miejscu diodę. Ja zwykle takie pomiary przeprowadzałem miernikiem (ustawienie na pomiar częstotliwości) - możesz spróbować i tak. Wykluczysz w ten sposób ewentualność, że:
a/. Coś zostało źle podłączone
b/. Któreś z wyprowadzeń jest skonfigurowane w nietypowy sposób.
Możesz troche jaśniej wytłumaczyć? Bo nie bardzo rozumiem. I nie mam miernika z pomiarem częstotliwościKoppel pisze:Spróbuj może (tylko to wymaga nieco cierpliwości) odłączyć LCD i program przełączający wyprowadzenie połączone z D0, następnie D1... i tak dalej aż sprawdzisz wszystkie. Podepnij w tym miejscu diodę. Ja zwykle takie pomiary przeprowadzałem miernikiem (ustawienie na pomiar częstotliwości) - możesz spróbować i tak. Wykluczysz w ten sposób ewentualność, że:
a/. Coś zostało źle podłączone
b/. Któreś z wyprowadzeń jest skonfigurowane w nietypowy sposób.
Więc dokładniej. Masz wyprowadzenie do którego podłączasz wejście RS wyświetlacza (nie wiem które to będzie w Twoim przypadku, ale mam nadzieję, że sprawa jest jasna). Wybierasz to wyprowadzenie i piszesz prosty programik który ma migać dołączoną do niego diodą. W jego miejscu podłącz diodę i zobacz czy prawidłowo miga (nie musisz jej lutować, przy odrobinie zręczoności wystarczy ją docisnąć; jeśli wyświetlacz jest na gniazdku, będzie jeszcze prościej - usówasz wyświetlacz i wkładasz diodę). Gdy to działa prawidłowo, przechodzisz do wyprowadzenia podłączonego pod wejście E, później kolejno wejścia danych. Wiem, że to nie wygląda zachęcająco, ale ja kiedyś w ten sposób właśnie odkryłem problem z wejściami JTAG'a (no - nie dokładnie tak, ponieważ generowałem szybszy sygnał i badałem go miernikiem częstotliwości a nie diodą, ale zasada jest ta sama). Jeśli natrafisz na wyprowadzenie które nie działa - wtedy trzeba sprawdzić jego alternatywne funkcje.
W ogóle - jakie masz przyporządkowanie wyprowadzeń - napisz który pin za co odpowiada. Może coś poradzimy po samej takiej informacji
W ogóle - jakie masz przyporządkowanie wyprowadzeń - napisz który pin za co odpowiada. Może coś poradzimy po samej takiej informacji
To moje idee się wyczerpały - nie widzę na tych portach jakiś sygnałów które mogą być domyślnie nadpisane. Jeśli nie korzystasz z innych układów (SPI, TIMER0) a próbujesz tylko coś wypisać na wyświetlaczu - nie mam ideii dla czego to się nie udaje. Może ktoś inny miał podobny problem.
Rozumiem, że piszesz w BASCOMie? Tam procedury wyświetlacza są napisane raczej dość "bezpiecznie" - opóźnienia są dużo większe niż to jest potrzebne.
Rozumiem, że piszesz w BASCOMie? Tam procedury wyświetlacza są napisane raczej dość "bezpiecznie" - opóźnienia są dużo większe niż to jest potrzebne.
Kolega zobaczył układ i zauważył że jeden pin LCD był połączony z Restem
Dlatego jak coś nie działa warto dzć komuś do zobaczenia czy wszystko jest dobrze połączone. Jeszcze nie sprawdzałem czy zadziała bo jestem w szkole, ale to jest pewne.
Wielkie dzięki za pomoc
EDIT:
Wyświetlacz już działa!
Wielke dzięki za pomoc (Gdybym nie wyłączył JTAG napewno by dalej nie działał). Zawsze trzeba sprawdzać połączenia! Najlepiej dać komuś do sprawdzenia!
Dlatego jak coś nie działa warto dzć komuś do zobaczenia czy wszystko jest dobrze połączone. Jeszcze nie sprawdzałem czy zadziała bo jestem w szkole, ale to jest pewne.
Wielkie dzięki za pomoc
EDIT:
Wyświetlacz już działa!