Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

HD44780 + 74HC595 + ATMEGA - Po pewnym czasie wyświetla śmieci

08 Gru 2014 21:53 1800 9
  • Poziom 6  
    Witam,
    próbuję od kilku dni użyć wyświetlacza na sterowniku HD44780 w moim projekcie. Na razie w celach testowych stworzyłem sobie program, który wyświetla mi jakiś napis na wyświetlaczu tzn w pętli głównej mam tylko:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zaraz po włączeniu mikrokontrolera wszystko jest w porządku, niestety po pewnym czasie (2-3 minuty), na wyświetlaczu zaczynają się pojawiać smieci, a po kolejnych 2-3 minutach wszystko wraca do normy, i tak w kółko.
    Używam biblioteki do obsługi hd44780 którą znalazłem na pewnej polskiej stronie, niestety nie jestem w stanie wkleić linka.
    Zmieniłem w niej tylko funkcję LCD_LOCATE(); tak aby obsługiwała mój wyświetlacz (20x4). Atmega pracuje z częstotliwością 16MHz.W czym może być problem?
  • Moderator Mikrokontrolery Projektowanie
    Pokaż schemat i pełny kod.
  • Poziom 6  
    HD44780 + 74HC595 + ATMEGA - Po pewnym czasie wyświetla śmieci Schemat tutaj - korzystam z gotowca póki co.
    DS podpięty pod PD0
    STCP pod PD1 i
    SHCP pod PD2

    main.c:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    hd44780.c
    Kod: c
    Zaloguj się, aby zobaczyć kod


    hd44780.h
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 11  
    Nie podoba mi sie ta biblioteka, stan wszystkich pinow siedzi w jednej zmiennej, nie jest obliczana tylko modyfikowana bit po bicie.

    char napis[20] = "asdasd";
    zmniejsz rozmiar tablicy do 8 np, chociaż to nie powinno miec znaczenia...

    kondensatory przy 74 i LCD 100nF masz?

    W czym kompilujesz? Może w kompilatorze masz FCPU inne ustawione, sprawdź.

    Krzaki zawsze są takie same ?

    Możesz dać w szereg oporniki 120ohm między uC - 74HC
  • Poziom 6  
    Ta biblioteka to tak naprawdę pierwsza, którą znalazłem.
    Zmiana rozmiaru tablicy na 8 nie pomogła.
    Tak, mam kondensatory.
    Kompiluje w WinAVR(w Programmer's Notepad klikam MakeAll i się kompiluje).
    Czy mam tam inne FCPU ustawione? Nie wiem, jak mogę to sprawdzić?

    Krzaki są zawsze takie same dodatkowo przesuwają się po ekranie w lewo. W wolnej chwili spróbuję dodać oporniki i w razie czego dam znać co i jak.
  • Moderator Mikrokontrolery Projektowanie
    Kapslokk napisał:
    Kompiluje w WinAVR(w Programmer's Notepad klikam MakeAll i się kompiluje).
    Czy mam tam inne FCPU ustawione? Nie wiem, jak mogę to sprawdzić?

    Zmień środowisko z archaicznego na co najmniej AVR Studio, a najlepiej na Atmel Studio: http://mikrokontrolery.blogspot.com/2011/04/kompilator-i-srodowisko-programistyczne.html

    Wtedy zniknie wiele problemów w tym ten dot. F_CPU i makefile: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html
  • Poziom 6  
    Zamówiłem dzisiaj programator zgodny z Atmel Studio - wiem, że można też korzystać w nim z mojego usbASP, ale stwierdziłem, że nie ma sensu się męczyć :) Jak uda mi się zaprogramować układ przez atmel studio to dam znać czy coś się polepszyło w sprawie mojego wyświetlacza.
  • Poziom 9  
    Witam,
    Odnośnie ostatniego postu - jeżeli zamówiłeś klon USB ISP MKII oparty na LUFA, to nie instaluj najnowszego Atmel Studio 6.2 SP1 - program będzie go widział, ale nie da się zaprogramować mikrokontrolera. Sam się na to naciąłem - rozwiązaniem okazało się zainstalowanie nieco starszej wersji Atmel Studio 6.2.1153

    PS jakbyś znalazł inne rozwiązanie to daj znać ;]
  • Poziom 6  
    Niestety, przesiadka na Atmel Studio nie pomogła mi w tym przypadku - ale nie ma tego złego :) Samo środowisko dużo przyjemniejsze od WinAvr. A co do samego problemu - być może znacie jakąś bibliotekę, którą mógłbym zastąpić aktualnie używaną? Mam na myśli oczywiście bibliotekę do obsługi HD44780 poprzez rejestr przesuwny.

    @wilkoquak - faktycznie, najnowsze Atmel Studio miało problem z moim programatorem, ale zainstalowanie starszej wersji pomogło :)
  • Poziom 11  
    sprawdź F_CPU jakie jest ustawione w projekcie