PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Am ATmega8



Frank5
01.10.2005, 17:04
Hallo
Bín noch Newbie in SAachen C. Ich habe versucht mit dem Code mein LCD an zu steuern. Der Code stammt von Ulrich Radig. Nur wenn ich ihn
compiliere bekomme ich folgende Fehlermeldung.


Compiling: main.c
avr-gcc -c -mmcu=atmega8 -I. -g -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.lst -std=gnu99 main.c -o main.o
In file included from main.c:16:
./lcd.c: In function `Write_LCD':
./lcd.c:56: warning: implicit declaration of function `cbi'
./lcd.c:60: warning: implicit declaration of function `sbi'
./lcd.c:73: error: invalid lvalue in unary `&'
make.exe: *** [main.o] Error 1

> Process Exit Code: 2

Geht der Code nicht am Atmega8????
Gruss Frank

izaseba
01.10.2005, 17:12
Wie kommst Du darauf daß es was mit Mega8 zu tun hat ?

Hast Du Dir die Fehlermeldungen durchgelesen?



./lcd.c:56: warning: implicit declaration of function `cbi'
./lcd.c:60: warning: implicit declaration of function `sbi'


Soweit ich weiß sind die Befehle cbi,sbi aus dem avr-gcc rausgeflogen,
man soll die Pins etwa so schalten:

PORTD |= (1<<PD1);
PORTD &= ~(1<<PD1);


Gruß Sebastian

Frank5
01.10.2005, 17:15
Hallo
Danke für die schnelle Antwort. Das cbi und sbi warnt er ja nur an?!
Der Fehler ist ja anscheinend ein anderer? Wie müßte man die Zeilen denn umschreiben???
Frank

Pascal
01.10.2005, 18:10
Das cbi und sbi warnt er ja nur an?!

naja, er sagt, dass du die Funktionen durch den Aufruf deklariert, also bekannt gemacht hast
wenn die Fehlermeldung kommt, heißt das, dass die Funktionen nicht oder nicht richtig deklariert wurden
in dem Fall liegt es aber einfach daran, dass die Funktionen (wie schon gesagt) aus der avrlibc rausgeflogen sind

umden Fehler zu beheben, könntest du mal schauen, ob es den Code vielleicht in einer neueren Version gibt

slaud
09.10.2005, 22:42
probiers mal hiermit mit dem mega 16 fukts an allen ports

izaseba
10.10.2005, 00:28
Sorry, hab was verwechselt :-(

Gruß Sebastian

Cvecko
12.10.2005, 12:16
Hi Displayprogrammierer!
Ich probier grad verzweifelt, ein 5x8 2-Zeilen Display an meinem atmega8 zum Laufen zu kriegen. Erst mal will ichs
ja nur initialisieren und dann einschalten, mit blinkendem Cursor.
Anschlüsse an den atmega habe ich nach Beispiel auf mikrocontroller.net vorgenommen (allerdings mit PORTC statt PORTD) und schon mehrmals kontrolliert..
Problem: Das LCD blinkt bei den einzelnen Schritten auf, am Ende, wenn eigentlich der Cursor zu sehen sein sollte, "glimmt"
die 1. Zeile nur schwach...

Hier mein Programm:



#include <avr/io.h>

void wait(uint16_t delay_time)
{ // Funktion "Warteschleife"
...
}

void write(void)
{
PORTC|=0x20; //E auf 1 setzen
PORTC&=0xdf; //E auf 0 setzen, Display übernimmt Befehl bei fallender E-Flanke
}

int main (void)
{
DDRC=0xff;
PORTC=0x00;
wait (500);

PORTC=0x03; //8-bit Modus, 3x schreiben
write();

wait (500);
write();

wait (500);
write();

wait (500);
PORTC=0x02; //4-bit Modus initialisieren
write();

wait (5000);
PORTC=0x02; //oberes Nibble zum Befehl 4bit, 2 Zeilen, 5x8 Zeichen
write();

wait (5000);
PORTC=0x08; //unteres Nibble zum Befehl 4bit, 2 Zeilen, 5x8 Zeichen
write();

wait (5000);
PORTC=0x00; //oberes Nibble, Display ein
write();

wait (5000);
PORTC=0x0f; //unteres Nibble, Display ein, Cursor ein, blink ein
write();
}



Wär sehr dankbar für einen Tipp!
MfG, Cvecko!

SprinterSB
12.10.2005, 15:33
Willst du nun 8-bit Modus oder 4-bit Modus?
Da ist irgendwas zu viel.

Cvecko
12.10.2005, 16:14
:-k Hmm, gewundert hats mich ja schon, aber auf http://www.sprut.de/electronic/lcd/index.htm#init hab ichs so verstanden, dass es auf diese Weise auf jeden Fall klappen soll - eben aus dem 4- oder auch aus dem 8bit Modus heraus. Programmieren möchte ich jedenfalls im 4-bit Modus, LCD ist entspr. angeschlossen.
Danke schon mal für die fixe Reaktion!
Cvecko.

Pascal
12.10.2005, 20:40
allerdings mit PORTC statt PORTD

hast du auch das JTAG-Interface deaktiviert?

Cvecko
14.10.2005, 09:38
So, habs hinbekommen! \:D/ Ich hab zwischendurch noch mal ein "clear" Befehl eingefügt, das hat's Display dann gefressen...
Das jtag-Interface hab ich nicht deaktiviert, ich weiß zwar was das ist, hab aber nichts entsprechendes im Datenblatt vom atmega8 gefunden (also zum Deaktivieren meine ich).
Kannst du so ausm Stehgreif sagen, wie man das deaktiviert? Falls ich das doch noch mal gebrauchen kann...
Vielen Dank für die Hilfe !Thx a lot!
mfg Cvecko

SprinterSB
14.10.2005, 11:45
Mega8 hat JTag? nö, nicht wirklich, oder?

Pascal
14.10.2005, 11:48
Mega8 hat JTag? nö, nicht wirklich, oder?

ups, natürlich hat der atmega8 kein JTAG-Interface

Hellmut
15.10.2005, 18:44
Hallo Freunde

Ich möchte mein pollin 27x4 lcd-display an das rnmega8 an den display 20-Pin Wannenstecker anschliessen. Habe allerdings Probleme mit der Verwendbarkeit der dort bereitgestellten Ports. Ich will das pollin display im 4-Bit-Modus anwenden und es braucht 2 enable Leitungen da die 1+2, sowie 3+4 Zeile des display getrennt bedient werden müssen.

Irgendwie passt es nicht, da ich I2C, ISP und RS232 gleichzeitig verwenden will und der mega8 ja den externen Quarz verwendet, die entsprechenden Ports also ebenfalls besetzt sind.

Von den Anschlüssen ist das Pollin-Display 1:1 auf die in Bascom definierten Leitungen abzubilden. Mein Problem ist die Auswahl der Ports, sowie die am Display-Wannenstecker verfügbaren Ports, irgendwie passt das nicht!

Klar kann ich mein LCD-Display auch an die externen Klemmstecker anschliessen, der Wannenstecker wäre aber mechanisch attraktiver.

Hoffentlich habe ich mein Dilema klar gemacht und jemand kann mir einen Tip geben. danke

Frank
15.10.2005, 20:42
Hallo Hellmut,

bei RN-Mega8 kannst du ruhig den 16 poligen Stecker nehmen. Du findest für das Board und dein Display sogar hier ein Testprogramm:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=3603

Der ISP kann trotzdem zum programmieren benutzt werden, da während des programmierens ja sowieso nix auf dem Display erscheinen kann.
RS232 kannst du ohnehin weiter benutzen. Und die Quarz-Ports werden dort auch nicht genutzt, haben also nix mit dem Stecker zu tun, hast du sicher verwechselt.

Gruß Frank

Tobax
16.01.2010, 19:51
Hallo....
ich verwende myavr Workpad Plus Demo und besitze Atmega8 MK1-Board.

Habe mir die LCD Dateien von Peter Fleury downgeloadet und eingebunden.
lcd.h

beim brennen bekomme ich Fehlermeldung:

Datei "globals.h" nicht gefunden...


muss man globals.h selber schreiben oder was gibt es da für
alternative???
Bin für jeden Tip Dankbar


Lieben Gruß