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

[Atmega8][Bascom/C] LCD - rklibavr...co jest nie tak?

Kromek2 30 Maj 2008 15:00 3668 4
REKLAMA
  • #1 5197505
    Kromek2
    Poziom 11  
    witam wszystkich!
    mam pewien problem z wyświetlaczem 16*2 sterowany zgodnie z HD44780

    pracuję na nim od jakiegoś czasu i wczoraj stała się bardzo dziwna rzecz, otóż przestał reagować na jakiekolwiek polecenie z mikrotkonrolera

    do tej pory korzystałem z biblioteki rklibavr - użycie jej jest bardzo proste, więc nie sądzę, żebym zrobił jakiś błąd w programie

    co ciekawe wyświetlacz działa jak wgram program napisany np w Bascomie

    sądząc, że może coś zadziało się z biblioteką, ściągnąłem ją raz jeszcze, ale i to nie pomogło


    podłączenie wyświetlacza wygląda tak:
    RS - PB1
    EN - PB2
    DB4 - PB4
    DB5 - PB5
    DB6 - PB6
    DB7 - PB7


    zamieszczam tutaj kod w C

    plik config.h

    #define    PRG_RDB(addr)   pgm_read_byte(addr)
    #define F_CPU		8000000 //częstotliwość zegara w Hz
    //----------------------
    // LCD 
    //---------------------- 
    
    #define LCD_PORT	PORTB	//port wyświetlacza
    #define LCD_RS 		1	//bit linii RS
    #define LCD_EN 		2	//bit linii EN
    
    #define LCD_X		   16	//liczba znaków w linii wyświetlacza
    #define LCD_Y		   2	//liczba wierszy wyświetlacza
    //#define LCD_BIT_SWAP		//zamiana bitów danych LCD D3<>D0, D2<>D1
    #define LCD_WRAP		//zawijanie tekstu
    #define LCD_WIN1250		//polskie znaki wg WIN1250
    
    

    wszystkie linie mam podłączone dobrze (w Bascomie identyczna działająca konfiguracja)

    plik testlcd.c
    
    #define F_CPU		8000000
    
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <avr/sleep.h>
    #include <util/delay.h>
    #include "lcd.h"
    
    
    int main(void)
    { 
    	
    	LCD_init();
    
    
    	while (1)
    	{
    		LCD_clear();
    		LCD_putstr("test LCD");
    		
    		_delay_ms(250);
          _delay_ms(250);
       }
    	
    	return 0;
    }


    a tu jest makefile
    
    # Nazwa pliku z funkcją main() - BEZ ROZSZERZENIA!
    TARGET = czujnik
    
    # Lista plików zawierających konfigurację programu i sprzętu
    # ich zmiana powoduje przebudowanie całego projektu
    CONFIG = config.h
    
    # Lista plików źródłowych w języku C
    SRC = $(TARGET).c
    
    # Lista plików źródłowych w asemblerze (rozszerzenie S - DUŻE S !)
    ASRC = 
    
    # typ mikrokontrolera
    #MCU = at90s2313
    #MCU = at90s8515
    #MCU = atmega128
    MCU = atmega8
    
    # Format pliku wyjściowego (srec, ihex)
    FORMAT = ihex
    
    # Poziom optymalizacji (0, 1, 2, 3, s) 
    # (Uwaga: 3 nie zawsze jest najlepszym wyborem)
    OPT = s
    
    # Katalog z bibliotekami użytkownika
    USRLIB	= lib
    
    # Lista plików źródłowych bibliotek w języku C
    SRCLIB =  
    #include $(USRLIB)/conv/sources
    include $(USRLIB)/lcd/sources
    #include $(USRLIB)/i2c/sources
    #include $(USRLIB)/i2c_ee/sources
    #include $(USRLIB)/kbd/sources
    include $(USRLIB)/delay/sources
    #include $(USRLIB)/pcf8583/sources
    #include $(USRLIB)/uart/sources
    #include $(USRLIB)/twi/sources
    
    # Dodatkowe biblioteki
    #
    # Minimalna wersja printf
    #LDFLAGS += -Wl,-u,vfprintf -lprintf_min
    #
    # Zmiennoprzecinkowa wersja printf (wymaga biblioteki matematycznej)
    #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
    #
    # Biblioteka matematyczna
    #LDFLAGS += -lm
    
    include $(USRLIB)/avr_make
    


    a tu działający program w Bascomie
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    $baud = 19200
    
    Cursor Off
    
    Do
    
    
    
    Cls
    
    Upperline
    Lcd "  Test LCD"
    
    Wait 1
    Lowerline
    Lcd " Test LCD"
    
    Loop
    End


    może macie jakiś pomysł na rozwikłanie tego problemu?

    z góry dziękuje i pozdrawiam wszystkich!


    Poprawiłem tytuł:
    https://www.elektroda.pl/rtvforum/topic1015361.html
    Proszę nie umieszczać linków do aukcji internetowych - Regulamin. Link skasowałem.
    [c_p]
  • REKLAMA
  • REKLAMA
  • #3 5199790
    Kromek2
    Poziom 11  
    no i problem rozwiązany....

    okazało się, że wersja biblioteki rklibavr_20050411 ma pewną niedoskonałość i czasami jak widać nie radzi sobie z LCD

    po użyciu wersji rklibavr_20060316 wszystko wróciło do normy


    info tak na przyszłość jakby ktoś miał podobny problem

    pozdrawiam!

    P.S. JmL(TM) dziękuję za zainteresowanie!:)
  • REKLAMA
  • #5 5200650
    zumek
    Poziom 39  
    JmL(TM) A wystarczyło podać link.

    Zamykam
REKLAMA