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

Atmega8 i HD44780 przestają działać?

xerxes931 31 Mar 2012 22:27 1311 8
  • #1 31 Mar 2012 22:27
    xerxes931
    Poziom 10  

    Witam. Wczoraj zbudowałem sobie płytkę z układem Atmega8, wyświetlaczem 2x16 na HD44780 i paroma innymi bajerami. Zasilam to wszystko z zasilacza ATX. I problem jest taki - przerobiłem bibliotekę stąd: http://radzio.dxp.pl/hd44780/hd44780_avr_8-bit_rw_c.htm,, przerobiłem ją na używanie PORTD oraz pinów 0-2 z PORTC. I wczoraj wieczorem wszystko ładnie śmigało. Dziś natomiast włączyłem płytkę, i jedyne co się ukazało, to czysty ekran. Wygląda to wszystko tak, że działa komenda LCD_Initalize(), wiem, bo ją sprawdzałem, natomiast LCD_WriteText("tekst") już nie. Co może być tego przyczyną? Połączenia się trzymają, zresztą wczoraj wszystko działało, a dziś jedynie wywierciłem w płytce otwory i przykręciłem nóżki z dystansów, ale one nie mają znaczenia, bo nie mają styku ze ścieżkami. Czy możliwe jest to, że upaliłem PORTD zasilaczem ATX? Jeśli tak, wymiana µC na nowy załatwi sprawę? Jest to dziwne, bo komenda LCD_Initalize() działa, natomiast ta do wysyłania tekstu do wyświetlacza już nie... Proszę o pomoc, to pilne.

    Fragment biblioteki HD44780.h, jest ona wzięta stąd: radzio.dxp.pl/hd44780/hd44780_8bit_rw.zip
    Zarówno HD44780.c jak i HD44780.h znajdują się w tym samym folderze, co main.c

    Cytat:
    #define LCD_RS_DIR DDRC
    #define LCD_RS_PORT PORTC
    #define LCD_RS (1 << PC0)

    #define LCD_RW_DIR DDRC
    #define LCD_RW_PORT PORTC
    #define LCD_RW (1 << PC1)

    #define LCD_E_DIR DDRC
    #define LCD_E_PORT PORTC
    #define LCD_E (1 << PC2)

    #define LCD_DATA_DIR DDRD
    #define LCD_DATA_PORT PORTD
    #define LCD_DATA_PIN PIND


    Mój kawałek programu:
    Cytat:
    #include<avr/io.h>
    #include<util/delay.h>
    #include "HD44780.h"
    #include "HD44780.c"


    int main(void)
    {
    _delay_ms(1000); // przerwa żeby sprawdzić czy LCD_Initalize działa
    LCD_Initalize();
    LCD_GoTo(0,0);
    LCD_WriteText("abcdefghijklmnop");
    LCD_GoTo(0,1);
    LCD_WriteText("qrstuwvxyz");

    }

    0 8
  • #3 31 Mar 2012 23:16
    xerxes931
    Poziom 10  

    Poprawione, tylko mówię, że nic nie jest podłączone źle, bo przedtem działało a nic w ścieżkach nie zmieniałem, natomiast program był cały czas ten sam wgrany, nic nie było zmieniane, a i tak przestało działać.

    0
  • #5 31 Mar 2012 23:20
    dondu
    Moderator Mikrokontrolery Projektowanie

    Dodałeś program - to już coś, ale z opisu wynika, że istota problemu może leżeć poza programem, tym bardziej gdy go nie zmieniałeś. Dlatego niezbędne są inne pomoce, które wyczytałeś w załączonym przeze mnie linku.

    Pomijam brak pętli głównej w Twoim - programie to mniej istotny problem.

    0
  • #6 01 Kwi 2012 11:14
    xerxes931
    Poziom 10  

    Chyba już mam istotę problemu, i najpewniej jest to sam wyświetlacz. Komenda LCD_Initalize() działa, natomiast LCD_WriteText("test") już nie. Sprawdziłem najprościej na płytce stykowej Atmegę i działa, cały PORTD prawidłowo sterował podłączonymi ledami według zapisanego programu. Połączenia między stykami płytki wyświetlacza też są i nie ma zwarć. Więc albo wyświetlacz się zepsuł, chociaż gdy podłączę go pod samo zasilanie pojawia się górna linijka pikseli, a po LCD_Initalize() się czyści, natomiast nie reaguje już na komendy wypisywania tekstu. Spróbuję jeszcze raz przylutować połączenia do wyświetlacza, a jak to nie zadziała, będę musiał zakupić nowy. Bo nic w pliku HD44780.c nie zmieniałem, a wcześniej działało. Chyba, że widzicie inne rozwiązanie problemu, ale z tego co sprawdzałem to wyświetlacz się zepsuł, ewentualnie część połączeń do płytki.

    0
  • #8 01 Kwi 2012 12:37
    michalko12
    Specjalista - Mikrokontrolery

    xerxes931 napisał:
    Komenda LCD_Initalize() działa, natomiast LCD_WriteText("test") już nie


    Pewnie wina świstaka!
    Radzę ci kup od razu 10 takich LCD. Może ze dwa ruszą.

    F_CPU masz zdefiniowane?

    0
  • #9 01 Kwi 2012 14:24
    xerxes931
    Poziom 10  

    Problem rozwiązany, było nim rozlutowanie się jednego punktu... Wybaczcie za zawracanie głowy głupotami, i dziękuję. Do wywalenia.

    0