logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR] [AVR][gcc] LCD 1x16 HD44780 z Atmega16 i kwarcem 14.7456MHz nie działa

netsecurite.pl 05 Mar 2012 19:20 2480 23
  • #1 10638048
    netsecurite.pl
    Poziom 13  
    Witam
    ma kod do obsługi LCD 1x16 z strony :

    http://radzio.dxp.pl/hd44780/hd44780_avr_4-bit_norw_c.htm

    Kod użyty razem z Atmega16 z kwarcem 14.745600Mhz

    konfiguracja LCD :

    #define LCD_RS_DIR		DDRD
    #define LCD_RS_PORT 	PORTD
    #define LCD_RS			(1 << PD7)
    
    #define LCD_E_DIR		DDRC
    #define LCD_E_PORT		PORTC
    #define LCD_E			(1 << PC2)
    
    #define LCD_DB4_DIR		DDRD
    #define LCD_DB4_PORT	PORTD
    #define LCD_DB4			(1 << PD2)
    
    #define LCD_DB5_DIR		DDRD
    #define LCD_DB5_PORT	PORTD
    #define LCD_DB5			(1 << PD3)
    
    #define LCD_DB6_DIR		DDRD
    #define LCD_DB6_PORT	PORTD
    #define LCD_DB6			(1 << PD4)
    
    #define LCD_DB7_DIR		DDRD
    #define LCD_DB7_PORT	PORTD
    #define LCD_DB7			(1 << PD6)


    Dla powyższej konfiguracji, program kompilowany w środowisku bascom działa bez zarzutu :

    Kod: text
    Zaloguj się, aby zobaczyć kod


    W przypadku GCC na LCD pojawia się 8 kwardacików

    Co może być nie tak ?
  • #2 10638107
    skalsky5000
    Poziom 21  
    Z samej konfiguracji nic nie wynika pokaz resztę kodu.
  • #3 10638188
    netsecurite.pl
    Poziom 13  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 10638250
    kuba1im
    Poziom 19  
    Może na początek <util/delay.h> od nowej linii bo teraz zdaje się, że jest zakomentowane.
  • #5 10638569
    netsecurite.pl
    Poziom 13  
    na samym początku kodu mam załączoną bibliotekę delay.h
  • #6 10638612
    gaskoin
    Poziom 38  
    netsecurite.pl napisał:

    W przypadku GCC na LCD pojawia się 8 kwardacików

    Co może być nie tak ?


    Inicjalizacja jest zła. Masz włączoną optymalizację ?
  • #8 10638687
    netsecurite.pl
    Poziom 13  
    w postaci :

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    efekt identyczny
  • #11 10638731
    gaskoin
    Poziom 38  
    dondu napisał:
    Zastanów się, co zrobi Twój główny program napotykając na Return 1:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    A potem pomyśl czego brakuje/


    dondu, po tym returnie jest nieskończona pętla ;) tyle, że przerwania nie działają
  • #12 10638732
    netsecurite.pl
    Poziom 13  
    wstawienie kodu przed pętlą daje również taki sam rezultat
    Nie mam pod ręką schematu
    ale wyświetlacz jest podłączony prawidłowo ponieważ kod w bascom uruchamia się w prawidłowo,nie mogę go tylko uruchomić za pomocą GCC
  • #13 10638735
    gaskoin
    Poziom 38  
    A masz jakieś komunikaty kompilatora ?
  • #15 10638742
    netsecurite.pl
    Poziom 13  
    żadnych , kompiluje prawidłowo , 0 warnings , 0 errors
  • #16 10638780
    kuba1im
    Poziom 19  
    Może trochę to zbyt oczywiste, ale nie kręciłeś przypadkiem potencjometrem od kontrastu?
  • #18 10638786
    netsecurite.pl
    Poziom 13  
    Tak ,jest ustawiony prawidłowo
    Nie mam już pomysłów ...
  • #19 10638791
    gaskoin
    Poziom 38  
    Ustawiłeś poprawnie F_CPU i fjuzbity?
  • #20 10638808
    netsecurite.pl
    Poziom 13  
    Tak

    [AVR] [AVR][gcc] LCD 1x16 HD44780 z Atmega16 i kwarcem 14.7456MHz nie działa

    zmiana optymalizacji programu daje zawsze ten sam efekt
  • #21 10638825
    skalsky5000
    Poziom 21  
    Enable masz na porcie C jtag wyłączony ?
  • #22 10638830
    netsecurite.pl
    Poziom 13  
    Tak, JTAG jest wyłączony
  • #24 10640200
    gothye
    Poziom 33  
    Nikt nie zauważył że brakuje ustawienia kierunku LCD_DB5 w LCD_Initalize() :

    LCD_DB5_DIR |= LCD_DB5

    ?
    popraw zakomentowaną linie i powinno ruszyć
REKLAMA