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
wszystkie linie mam podłączone dobrze (w Bascomie identyczna działająca konfiguracja)
plik testlcd.c
a tu jest makefile
a tu działający program w Bascomie
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]
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
Endmoż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]