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

Avr[C] Konfiguracja biblioteki sterującej wyświetlaczem LCD

takilogin 14 Gru 2009 19:21 7017 19
  • #1 7389036
    takilogin
    Poziom 15  
    Witajcie,
    Ponieważ nie znalazłem tego na forum zapytam:

    Co trzeba zmienić w bibliotece Radzia :
    Układ: Link
    Biblioteka: Link

    aby wszystko działało w moim układzie:
    - mikrokontroler atmega32
    - wyświetlacz LCD 2*16 znaków
    - sterownik HD44780
    - szyna danych zajmuje cały port A
    - RS podpięty do portu D na 6 pinie PD6
    - E podpięte do ostatniego pinu portu D czyli do PD7
    - sterowanie bez odczytu flagi zajętości

    Tylko tu się coś zmienia:
    
    //-------------------------------------------------------------------------------------------------
    //
    // Konfiguracja sygnałów sterujących wyświetlaczem.
    // Można zmienić stosownie do potrzeb.
    //
    //-------------------------------------------------------------------------------------------------
    #define LCD_RS_DIR		DDRC
    #define LCD_RS_PORT 	PORTC
    #define LCD_RS			(1 << PC0)
    
    #define LCD_E_DIR		DDRC
    #define LCD_E_PORT		PORTC
    #define LCD_E			(1 << PC2)
    
    #define LCD_DATA_DIR	DDRA
    #define LCD_DATA_PORT	PORTA
    
    
    //----

    Czy jeszcze gdzieś ?
    Pozdrawiam :)
  • #2 7389986
    dawid512
    Poziom 32  
    O ile dobrze pamiętam to tylko tutaj (:
  • #3 7390294
    takilogin
    Poziom 15  
    A gdzie podaje się jakiej wielkości jest wyświetlacz czyli ile linii, ile znaków ?
  • Pomocny post
    #4 7390396
    dawid512
    Poziom 32  
    Z tego co widzę to ta biblioteka jest uniwersalna i nie określa ilości wierszy i kolumn więc umiejętne stosowanie gwarantuje kompatybilność z każdym lcd ze sterownikiem HD44780.
  • #5 7390453
    takilogin
    Poziom 15  
    Faktycznie :) Trzeba tylko ustawić odpowiednie współrzędne dla drugiej linii:



    A co do konfiguracji sygnałów sterujących to w moim przypadku wygląda to tak:
    #define LCD_RS_DIR		DDRD
    #define LCD_RS_PORT 	PORTD
    #define LCD_RS			(1 << PD6)
    
    #define LCD_E_DIR		DDRD
    #define LCD_E_PORT		PORTD
    #define LCD_E			(1 << PD7)
    
    #define LCD_DATA_DIR	DDRA
    #define LCD_DATA_PORT	PORTA
    

    Wszystko na razie działa :-)
    Pozdrawiam i dziękuję za pomoc

    Dodano po 15 [minuty]:

    aha jeszcze jedno pytanie:

    W
    LCD_WriteText("Tekst");

    Podaje tekst czyli char
    A jak to się robi gdy np chcę wyświetlić wartość zmiennej int ?
  • #6 7390616
    dawid512
    Poziom 32  
    takilogin napisał:


    LCD_WriteText("Tekst");

    Podaje tekst czyli char
    A jak to się robi gdy np chcę wyświetlić wartość zmiennej int ?


    Raczej string :) char to pojedynczy znak.

    O ile się nie mylę to ta funkcja void LCD_WriteData(unsigned char);

    czyli np.
    LCD_WriteData(20);
    ale dla pewności sprawdź sam (:
  • #7 7390663
    takilogin
    Poziom 15  
    No nie działa :-(
    Coś mi się wydaje że tą moją wartość zmiennej int będzie trzeba przekonwertować na stringa...

    Dodano po 28 [minuty]:

    :) to działa:
    int test=2727;
    char bufor [17];
    itoa (test,bufor,10);
    LCD_WriteText(bufor);


    Pozdr.
  • #8 7502457
    jaros85
    Poziom 20  
    Po pierwsze
    W trakcie inicjalizacji LCD podaje się w pliku HD44780.c ilość linii HD44780_TWO_LINE oraz rozmiar znaku HD44780_FONT5x7 a ilość znaków w jednej linii to chyba 20 tylko że 16 się wyświetla bo cały wyświetlacz może wyświetlić max 40 znaków.
    Jeżeli chcesz wyświetlić zawartość zmiennej to bez problemu można wyświetlić zawartość tablicy do której można przepisać dowolną wartość.

    A jeżeli się używa itoa należy dodać bibliotekę stdlib.h

    Ale sam jestem zainteresowany w jaki sposób można wyświetlić zawartość dowolnej zmiennej np nie znając jej zawartości.
  • #9 9002106
    mevelrik
    Poziom 12  
    Przepraszam że odkopuje, ale problem tyczy się dokładnie tej biblioteki. Mam kłopot z kompilacją a tej biblioteki. Używam AVR Studio 4 i winAVR.

    rm -rf lcd.o HD44780.o  lcd.elf dep/* lcd.hex lcd.eep lcd.lss lcd.map
    Build succeeded with 0 Warnings...
    avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d  -c  ../lcd.c
    avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT HD44780.o -MF dep/HD44780.o.d  -c  ../HD44780.c
    In file included from ../HD44780.h:13,
                     from ../HD44780.c:12:
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    ../HD44780.c: In function '_LCD_Write':
    ../HD44780.c:22: error: 'PORTA' undeclared (first use in this function)
    ../HD44780.c:22: error: (Each undeclared identifier is reported only once
    ../HD44780.c:22: error: for each function it appears in.)
    ../HD44780.c: In function 'LCD_Initalize':
    ../HD44780.c:93: error: 'DDRA' undeclared (first use in this function)
    make: *** [HD44780.o] Error 1
    Build failed with 4 errors and 1 warnings...
    


    Ktoś pomoże? Jak łatwo się domyśleć nie jestem wyjadaczem w tej dziedzinie.
  • #10 9002182
    PO.
    Poziom 20  
    Nie dołączyłeś wszystkich bibliotek albo zrobiłeś to nie po kolei.
  • #11 9002505
    mevelrik
    Poziom 12  
    Biblioteki dołączyłem chyba wszystkie, przynajmniej wszystkie które były do ściągnięcia.

    Deklaracja didliotek w programie podstawowym wygąda tak:
    #include <avr/io.h>
    #include <C:\Users\Tomek\AVR\lcd\HD44780.h>
    #include <C:\Users\Tomek\AVR\lcd\HD44780.c>
    


    nie wiem co znaczy że mogłem zrobić to nie po kolei?

    jeszcze raz zamieszczę kod błędu bo w poprzednim było trochę śmieci:
    rm -rf lcd.o HD44780.o  lcd.elf dep/* lcd.hex lcd.eep lcd.lss lcd.map
    Build succeeded with 0 Warnings...
    avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d  -c  ../lcd.c
    In file included from C:\Users\Tomek\AVR\lcd\HD44780.h:13,
                     from ../lcd.c:2:
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    In file included from ../lcd.c:3:
    C:\Users\Tomek\AVR\lcd\HD44780.c: In function '_LCD_Write':
    C:\Users\Tomek\AVR\lcd\HD44780.c:22: error: 'PORTA' undeclared (first use in this function)
    C:\Users\Tomek\AVR\lcd\HD44780.c:22: error: (Each undeclared identifier is reported only once
    C:\Users\Tomek\AVR\lcd\HD44780.c:22: error: for each function it appears in.)
    C:\Users\Tomek\AVR\lcd\HD44780.c: In function 'LCD_Initalize':
    C:\Users\Tomek\AVR\lcd\HD44780.c:93: error: 'DDRA' undeclared (first use in this function)
    make: *** [lcd.o] Error 1
    Build failed with 4 errors and 1 warnings...
    


    Pródował bym coś naprawiać ale w lini 22 nie występuje słowo PORTA tak jak w linii 93 nie ma słowa DDRA.
  • #12 9002858
    PO.
    Poziom 20  
    Przepraszam za brak przytomności :/ ...

    Ale teraz Ty mnie proszę oświeć jak w a8 podłączyłeś lcd do portu A :P ?


    PS: a co występuje? I jak zadeklarowałeś wszystkie makra konfiguracyjne lcd?
  • #13 9005615
    mevelrik
    Poziom 12  
    Haha, coś w tych słowach jest ;d Przecież to banalny błąd, zmieniłem ale nadal nie jest w 100% ok ;/ Załączę wszystkie pliki będzie długi kod ale będzie jasność.

    Błąd jaki nadaj jest przy kompilacji:

    Build started 14.1.2011 at 18:46:41
    avr-gcc -mmcu=atmega8 -Wl,-Map=lcd.map lcd.o HD44780.o     -o lcd.elf
    HD44780.o: In function `_LCD_Write':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:24: multiple definition of `_LCD_Write'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:24: first defined here
    HD44780.o: In function `LCD_WriteCommand':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:36: multiple definition of `LCD_WriteCommand'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:36: first defined here
    HD44780.o: In function `LCD_WriteData':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:46: multiple definition of `LCD_WriteData'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:46: first defined here
    HD44780.o: In function `LCD_WriteText':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:55: multiple definition of `LCD_WriteText'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:55: first defined here
    HD44780.o: In function `LCD_GoTo':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:66: multiple definition of `LCD_GoTo'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:66: first defined here
    HD44780.o: In function `LCD_Clear':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:75: multiple definition of `LCD_Clear'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:75: first defined here
    HD44780.o: In function `LCD_Home':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:85: multiple definition of `LCD_Home'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:85: first defined here
    HD44780.o: In function `LCD_Initalize':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:96: multiple definition of `LCD_Initalize'
    lcd.o:C:\Users\Tomek\AVR\lcd/HD44780.c:96: first defined here
    make: *** [lcd.elf] Error 1
    Build failed with 1 errors and 0 warnings...
    


    plik nagłówkowy:
    //-------------------------------------------------------------------------------------------------
    // Wyświetlacz alfanumeryczny ze sterownikiem HD44780
    // Sterowanie w trybie 8-bitowym bez odczytu flagi zajętości
    // Plik : HD44780.h	
    // Mikrokontroler : Atmel AVR
    // Kompilator : avr-gcc
    // Autor : Radosław Kwiecień
    // Źródło : http://radzio.dxp.pl/hd44780/
    // Data : 24.03.2007
    //-------------------------------------------------------------------------------------------------
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    //-------------------------------------------------------------------------------------------------
    //
    // Konfiguracja sygnałów sterujących wyświetlaczem.
    // Można zmienić stosownie do potrzeb.
    //
    //-------------------------------------------------------------------------------------------------
    #define LCD_RS_DIR		DDRD
    #define LCD_RS_PORT 	PORTD
    #define LCD_RS			(1 << PD0)
    
    #define LCD_E_DIR		DDRD
    #define LCD_E_PORT		PORTD
    #define LCD_E			(1 << PD2)
    
    #define LCD_DATA_DIR	DDRB
    #define LCD_DATA_PORT	PORTB
    
    
    //-------------------------------------------------------------------------------------------------
    //
    // Instrukcje kontrolera Hitachi HD44780
    //
    //-------------------------------------------------------------------------------------------------
    
    #define HD44780_CLEAR					0x01
    
    #define HD44780_HOME					0x02
    
    #define HD44780_ENTRY_MODE				0x04
    	#define HD44780_EM_SHIFT_CURSOR		0
    	#define HD44780_EM_SHIFT_DISPLAY	1
    	#define HD44780_EM_DECREMENT		0
    	#define HD44780_EM_INCREMENT		2
    
    #define HD44780_DISPLAY_ONOFF			0x08
    	#define HD44780_DISPLAY_OFF			0
    	#define HD44780_DISPLAY_ON			4
    	#define HD44780_CURSOR_OFF			0
    	#define HD44780_CURSOR_ON			2
    	#define HD44780_CURSOR_NOBLINK		0
    	#define HD44780_CURSOR_BLINK		1
    
    #define HD44780_DISPLAY_CURSOR_SHIFT	0x10
    	#define HD44780_SHIFT_CURSOR		0
    	#define HD44780_SHIFT_DISPLAY		8
    	#define HD44780_SHIFT_LEFT			0
    	#define HD44780_SHIFT_RIGHT			4
    
    #define HD44780_FUNCTION_SET			0x20
    	#define HD44780_FONT5x7				0
    	#define HD44780_FONT5x10			4
    	#define HD44780_ONE_LINE			0
    	#define HD44780_TWO_LINE			8
    	#define HD44780_4_BIT				0
    	#define HD44780_8_BIT				16
    
    #define HD44780_CGRAM_SET				0x40
    
    #define HD44780_DDRAM_SET				0x80
    
    //-------------------------------------------------------------------------------------------------
    //
    // Deklaracje funkcji
    //
    //-------------------------------------------------------------------------------------------------
    
    void LCD_WriteCommand(unsigned char);
    void LCD_WriteData(unsigned char);
    void LCD_WriteText(char *);
    void LCD_GoTo(unsigned char, unsigned char);
    void LCD_Clear(void);
    void LCD_Home(void);
    void LCD_Initalize(void);
    
    //-------------------------------------------------------------------------------------------------
    //
    // Koniec pliku HD44780.h
    //
    //-------------------------------------------------------------------------------------------------
    


    HD44780.c

    //-------------------------------------------------------------------------------------------------
    // Wyświetlacz alfanumeryczny ze sterownikiem HD44780
    // Sterowanie w trybie 8-bitowym bez odczytu flagi zajętości
    // Plik : HD44780.c	
    // Mikrokontroler : Atmel AVR
    // Kompilator : avr-gcc
    // Autor : Radosław Kwiecień
    // Źródło : http://radzio.dxp.pl/hd44780/
    // Data : 24.03.2007
    //-------------------------------------------------------------------------------------------------
    
    #include "C:\Users\Tomek\AVR\lcd\HD44780.h"
    
    
    
    
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja zapisu bajtu do wyświetacza (bez rozróżnienia instrukcja/dane).
    //
    //-------------------------------------------------------------------------------------------------
    void _LCD_Write(unsigned char dataToWrite)
    {
    LCD_E_PORT |= LCD_E;
    LCD_DATA_PORT = dataToWrite;
    LCD_E_PORT &= ~LCD_E;
    _delay_us(50);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja zapisu rozkazu do wyświetlacza
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_WriteCommand(unsigned char commandToWrite)
    {
    LCD_RS_PORT &= ~LCD_RS;
    _LCD_Write(commandToWrite);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja zapisu danych do pamięci wyświetlacza
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_WriteData(unsigned char dataToWrite)
    {
    LCD_RS_PORT |= LCD_RS;
    _LCD_Write(dataToWrite);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja wyświetlenia napisu na wyswietlaczu.
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_WriteText(char * text)
    {
    while(*text)
      LCD_WriteData(*text++);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja ustawienia współrzędnych ekranowych
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_GoTo(unsigned char x, unsigned char y)
    {
    LCD_WriteCommand(HD44780_DDRAM_SET | (x + (0x40 * y)));
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja czyszczenia ekranu wyświetlacza.
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_Clear(void)
    {
    LCD_WriteCommand(HD44780_CLEAR);
    _delay_ms(2);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Funkcja przywrócenia początkowych współrzędnych wyświetlacza.
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_Home(void)
    {
    LCD_WriteCommand(HD44780_HOME);
    _delay_ms(2);
    }
    //-------------------------------------------------------------------------------------------------
    //
    // Procedura inicjalizacji kontrolera HD44780.
    //
    //-------------------------------------------------------------------------------------------------
    void LCD_Initalize(void)
    {
    unsigned char i;
    LCD_DATA_DIR = 0xFF;
    LCD_E_DIR 	|= LCD_E;   //
    LCD_RS_DIR 	|= LCD_RS;  //
    _delay_ms(15); // oczekiwanie na ustalibizowanie się napiecia zasilajacego
    LCD_RS_PORT &= ~LCD_RS; // wyzerowanie linii RS
    LCD_E_PORT &= ~LCD_E;  // wyzerowanie linii E
    
    for(i = 0; i < 3; i++) // trzykrotne powtórzenie bloku instrukcji
      {
      _LCD_Write(0x3F);
      _delay_ms(5); // czekaj 5ms
      }
    
    _delay_ms(1); // czekaj 1ms 
    LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_8_BIT); // interfejs 4-bity, 2-linie, znak 5x7
    LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); // wyłączenie wyswietlacza
    LCD_WriteCommand(HD44780_CLEAR); // czyszczenie zawartosći pamieci DDRAM
    _delay_ms(2);
    LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT);// inkrementaja adresu i przesuwanie kursora
    LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); // włącz LCD, bez kursora i mrugania
    }
    
    //-------------------------------------------------------------------------------------------------
    //
    // Koniec pliku HD44780.c
    //
    //-------------------------------------------------------------------------------------------------
    
  • #14 9005648
    PO.
    Poziom 20  
    Niepotrzebnie w lcd.c includujesz plik nagłówkowy, stąd masz podwójne deklaracje. Ta biblioteka nie jest napisana w zgodzie ze standardem.

    Ja też stosuję protezy tylko inne, ważne żeby działało ;) . Natomiast przy cudzym kodzie musisz linijka po linijce wszystko analizować bo potem tak jest. Prościej własny napisać od zera, wiesz co się dzieje.
  • #15 9005766
    mevelrik
    Poziom 12  
    Wykasowałem deklaracje pliku nagłówkowego .h ale nadal nie jest ok ;/ Zostawiłem tylko HD44780.c bo jakoś plik główny musi chyba być połączony z biblioteką i nadal ten sam błąd.

    lcd.c
    #include <avr/io.h>
    
    #include "HD44780.c"
    
    
    int main()
    {
    
    return 0;
    }
    
    


    kod błędu:

    Build started 14.1.2011 at 19:06:07
    avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd.o -MF dep/lcd.o.d  -c  ../lcd.c
    In file included from ../HD44780.h:13,
                     from ../HD44780.c:12,
                     from ../lcd.c:3:
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    avr-gcc -mmcu=atmega8 -Wl,-Map=lcd.map lcd.o HD44780.o     -o lcd.elf
    HD44780.o: In function `_LCD_Write':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:24: multiple definition of `_LCD_Write'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:24: first defined here
    HD44780.o: In function `LCD_WriteCommand':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:36: multiple definition of `LCD_WriteCommand'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:36: first defined here
    HD44780.o: In function `LCD_WriteData':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:46: multiple definition of `LCD_WriteData'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:46: first defined here
    HD44780.o: In function `LCD_WriteText':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:55: multiple definition of `LCD_WriteText'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:55: first defined here
    HD44780.o: In function `LCD_GoTo':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:66: multiple definition of `LCD_GoTo'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:66: first defined here
    HD44780.o: In function `LCD_Clear':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:75: multiple definition of `LCD_Clear'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:75: first defined here
    HD44780.o: In function `LCD_Home':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:85: multiple definition of `LCD_Home'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:85: first defined here
    HD44780.o: In function `LCD_Initalize':
    C:\Users\Tomek\AVR\lcd\default/../HD44780.c:96: multiple definition of `LCD_Initalize'
    lcd.o:C:\Users\Tomek\AVR\lcd\default/../HD44780.c:96: first defined here
    make: *** [lcd.elf] Error 1
    Build failed with 1 errors and 1 warnings...
    


    Uwierz mi dla mnie nie było by łatwiej napisać samemu obsługi LCD. Wiem że moje pytania moze wydają się denerwujące ale jak uczyłem się chodzić to rodzice też mnie za rękę prowadzili, więc trochę wyrozumiałości dla świeżaka ;)
  • #16 9005800
    PO.
    Poziom 20  
    Uwierz mi, to była pierwsza rzecz, którą zrobiłem na avr :D . Zajęła masę czasu i bolało ale od tego momentu się rozrosła tak, że radziowa to maleństwo ubogie.

    Skąd wywaliłeś include? Miałeś z lcd.c! Biblioteki nie ruszaj.
    Poza tym jak piszesz w avrstudio to musisz gdzieś ręcznie zdefiniować F_CPU.
    Jak stoisz z angielskim? I rozumieniem tych komunikatów?

    PS: hmmm, albo coś źle widzę albo mi się źle wyświetla...

    PS2: Poczekaj, ścieżki się zgadzają? Czy to jakaś Twoja modyfikacja?
    #include "C:\Users\Tomek\AVR\lcd\HD44780.h"

    Co zmieniałeś względem oryginału?
  • #17 9005920
    mevelrik
    Poziom 12  
    OK, działa :D Szkoda że nie mogę dać pomógł, moim problemem było to że deklarowałem HD4478.c zamiast HD44780.h w pliku głównym ale już jest ok i atmega coś tam wyświetla ;]

    Dzięki wielkie.
  • #18 9006054
    PO.
    Poziom 20  
    Dziś chyba już nic nie wymyślę, zmęczenie?

    Śmieszna sprawa, bo ta biblioteka mimo błędów/niezręczności rusza od kopa, sprawdzałem kiedyś.
    Spróbuj innej wersji użyć. W ogóle czemu chcesz 8bit bez r/w? Lepiej 4bit z r/w, masz i mniej pinów i szybciej.
    Stosuj minimalne ścieżki wszędzie, prościej uniknąć błędów przy przenoszeniu potem.
  • #19 9006217
    mevelrik
    Poziom 12  
    Masz racje lepiej korzystać z biblioteki z 4-bitowym tryben pracy z odczytem flagi zajętości, zmieniłem już na nią i naniosłem poprawki jak w poprzedniej i co ciekawe działa ;] Symulacja pokazuje że jest elegancko. Jeszcze raz dzięki za czas poświęcony dla mnie, piwa Ci nie wyśle bo przesyłka za droga :)
  • #20 9006268
    PO.
    Poziom 20  
    No to super, podejrzewałem że może być jakiś drobny błąd tylko w jednej wersji.
    Odpalaj na żywca i patrz co się dzieje na lcd, dużo większa satysfakcja :) .
REKLAMA