-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: LCD Am ATmega8

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2004
    Beiträge
    19

    LCD Am ATmega8

    Anzeige

    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
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.11.2004
    Beiträge
    19

    LCD

    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

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2004
    Beiträge
    121
    probiers mal hiermit mit dem mega 16 fukts an allen ports
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Sorry, hab was verwechselt

    Gruß Sebastian

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    28.09.2005
    Ort
    Kiel
    Alter
    36
    Beiträge
    16

    Initialsierungsproblem

    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:

    Code:
    #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!

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Willst du nun 8-bit Modus oder 4-bit Modus?
    Da ist irgendwas zu viel.
    Disclaimer: none. Sue me.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    28.09.2005
    Ort
    Kiel
    Alter
    36
    Beiträge
    16
    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.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    allerdings mit PORTC statt PORTD
    hast du auch das JTAG-Interface deaktiviert?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •