Hallo,
ich bin Anfaänger mit AVR und versuche seit ner Woche ein EA DOGM163E -
LCD-Display (5V) an nem ATTiny2313 im 4Bit-Modus laufen zu lassen.
(SPI habe ich auch versucht, ohne Erfolg)
Den Code habe ich im Netz gefunden ( nur Port C auf Port D geändert)
* PD4 = RS
* PD5 = Enable
* PD0-PD3 = D4-D7
* R/W ist n.c.
Allerdings bekomme ich keine Anzeige auf dem Display ?
Gibt es einen Trick, wie man sehen kann, ob das Teil überhaupt geht ?
Habe die PINS (PD0 bis PD5) mit ner LED geprüft, es flackert auch was.
Die F_CPU ist angepasst...
Ich weiß echt nicht weiter...
lcd_write mit seinen 2 Nibbles kann bei der Initialisierung erst
verwendet werden, wenn der 4bit Modus fertig ausgehandelt ist. Davor
wird das zweite Nibble logischerweise missverstanden.
Doku zum Display-Controller ST7036 lesen, da steht die korrekte
Initialisierung für 4-Bit Modus drin.
NB etwas Kosmetik:
PORTD = PORTD | ( 1<<DDD5 ) ;
DDD5 gehört zu DDRD. Also:
PORTD |= ( 1<<PD5 ) ;
Apropos EA DOG: Die Dinger ähneln zwar der gängigen HD44780-Displays,
anschlusstechnisch gibt es aber Unterschiede. In der Initialisierung
auch. Hast du ein Schaltbild von deiner Verschaltung?
Such lieber Code speziell für solche EA DOG Displays, keinen
Standardcode für die HD44780-Displays.
Was ist mit CSB passiert?
Das Teil kann man auch seriell ansprechen. Das zu passt Peters Code. Zu
deinem 4-Bit Interface passt er nicht.
Könnte aber, da Steckbrett, für dich einfacher sein, den Anschluss auf
SPI zu ändern und seinen Code zu verwenden.
CSB int auf GND.
Den SPI-Code würde ich auch testen, muß ihn aber erstmal zum laufen
bringen...
Der Takt sollte stimmen, sonst würde die LED an PB0 nicht mit 1Hz
blinken...
bei Peters Code kommen noch die Fehler...
Main.o: In function `main':
X:\AVR-Programme\LCD-Display_2\default/../Main.c:7: undefined reference
to `lcd_init'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:9: undefined reference
to `lcd_pos'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:10: undefined reference
to `lcd_text_'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:11: undefined reference
to `lcd_pos'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:12: undefined reference
to `lcd_text_'
make: *** [LCD-Display_2.elf] Error 1
Build failed with 5 errors and 1 warnings...
Weiß noch nicht warum
Weil Peter möglicherweise eine etwas urtümliche Umgebung verwendet.
Anbei aktualisiert. Wirst aber trotzdem nicht drum herum kommen, beide
.c Files zusammen zu übersetzen.
OK, der Code läuft.
Mußte noch
#include "lcd_drv.c"
in MAIN.c hinzufügen...
Ich werde mal das Steckbrett umbauen.
Danke aber erstmal für eure schnelle Hilfe
Aber ich muß dann doch in der MAIN.H die Ports zuordnen.
(oder das Steckbrett danach anschließen)
1
#define LCD_DI SBIT( PORTB, 3 )
2
#define LCD_DDR_DI SBIT( DDRB, 3 )
3
4
#define LCD_RS SBIT( PORTB, 2 )
5
#define LCD_DDR_RS SBIT( DDRB, 2 )
6
7
#define LCD_SCK SBIT( PORTB, 0 )
8
#define LCD_DDR_SCK SBIT( DDRB, 0 )
9
10
#define LCD_CS SBIT( PORTB, 1 )
11
#define LCD_DDR_CS SBIT( DDRB, 1 )
Ich habe laut Schaltplan
SI, CLK, RS & CSB
Ich nehme mal an SI=DI, RS=RS, CLK SCK & CSB=CS, bin ich da richtig ?
Marco Beyer schrieb:
> #include "lcd_drv.c"> in MAIN.c hinzufügen...
Geht auch ist aber trotzdem ein falscher Weg. Womit arbeitest Du, dem
Studio? Dann einfach das zweite .c File zum Projekt hinzufügen.
> Ich nehme mal an SI=DI, RS=RS, CLK SCK & CSB=CS, bin ich da richtig ?
Ja.
Das zweite .c-File ist hinzugefügt.
Aber wenn ich #include "lcd_drv.c" rausnehme geht es manchmal und nach
dem Neustart von AVR-Studio gehts dann mal wieder nicht...
Hey, viele Dank für die Hilfe,
mit SPI kann ich endlich mal was sehen.
Es steht schon mal "Hallo" in der ersten Zeile.
Laut Code sollte noch "Peter" darunter stehen, aber ich denke mal das
liegt an den Einstellungen in der MAIN.h, da es für EA_DOGM162 ausgelegt
ist.
In der LCD_DRV.c kann man das ja änder, aber wie ???