- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: Wenn LCD aktiv, geht nix mehr

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485

    Wenn LCD aktiv, geht nix mehr

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi,
    ich hab folgendes Problem. Ich hab an PD7 einen Summer angeschlossen und möchte nun am Port C (Pin1-7, Pin0 ist noch nicht belegt) ein 16x2 Zeichen LCD im 4 Bit Modus betreiben. Ich habe nun folgenden Code (nur der wichtige Ausschnitt):

    Code:
     
     #include "lcd.c"
    
     /* weiterer code ...... */
    
     DDRD |= (1 << PD7);
    
     lcd_init(LCD_DISP_ON);
    
     while(1) {
     
     lcd_clrscr();
     lcd_puts("hallo");
     summer(1,30); 
     /* weiterer code ..... */
    }
    Summer ist eine von mir erstellte Funktion und bringt den Summer zum summen.
    Wenn ich nun das Programm übertrage, passiert erst einmal nichts. Schließe ich jedoch an PC7 GND an, fängt der Summer an zu summen wie er soll. Lasse ich alle LCD Funktionen weg, sprich:
    Code:
     while(1) {
     summer(1,30); 
     /* weiterer code ..... */
     }
    funktioniert alles wie es soll.

    Was noch komisch ist, dass genau das selbe Programm auf dem Steckbrett ohne Probleme lief.
    Ich kann mir dieses "Phänomen" nicht erklären. Ach ja, und es liegt nich an PC7, wenn ich in der lcd.h für LCD_DATA3_PIN einfach 0 statt 7 eintrage, dann funktioniert der Summer auch nur wenn ich GND an PC0 anschließe. Ebenso kann ich den LCD_PORT beliebig ändern, es kommt immer dasselbe Phänomen vor...
    Ich würde deshalb annehmen, dass das Problem irgendwo bei LCD_DATA3_PIN und der lcd.h zu suchen ist, aber ich kann mir nicht erklären wie das Programm vor ner Woche auf dem Steckbrett funktionierte und jetzt nimmer.

    Ich komm echt nimmer weiter, würde mich über Hilfe freuen

    MfG

    ps: hab das mal ins GCC Forum gepostet, weil ich mal davon ausgehe, dass an der Software etwas net stimmt...[shadow=red:752d97e97b][/shadow:752d97e97b]

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Also habe etwas neues festgestellt. Sobald ich das LCD initialisiere funktioniert gar nichts mehr, erst wenn ich an LCD_DATA3_PIN GND anlege. Hatte denn noch nie jemand dieses Problem?

    Muss ja irgendwie an einer Endlosschleife oder so liegen...

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    kann es sein, daß der Busy Flag vom LCD abgefragt wird ?
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Kein Ahnung
    Ich benutze die LCD Funktionen ohne wirklich zu wissen wie sie das machen was sie machen. Glaube das nennt man Blackbox-Verfahren

    Also ich hab für den RW Pin einen Schalter installiert, damit ich umschalten kann zwischen GND und PC2. Es geht weder wenn ich den Pin mit GND verbinde noch mit PC2.

    In der Software (lcd.h) muss ich nichts umstellen, außer die uC Pins anpassen, so wie im Wiki beschrieben. Früher hat das ganze eigentlich so auch funktioniert-.-

    MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Und was lernt man daraus ?

    LCD Ansteuerung ist ganz einfach, da braucht man kaum fremde Software.

    Versuch mal rauszufinden, was in lcd_init() , lcd_clrscr(); und lcd_puts();
    passiert.

    Wenn Du in den Funktionen hängst, müssen sie wohl auf irgendwas warten,
    und das ist ja bei Busyabfrage ein LOW auf Bit 7 .

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Hast du das Interface auf 4 Bit eingestellt?
    Disclaimer: none. Sue me.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Hmm ich hab außer den Ports in der lcd.h nichts weiter eingestellt.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Ich habe jetzt mal die Befehle aus der Funktion lcd_waitbusy() als Kommentare definiert und jetzt klappts auch. Alles läuft obwohl ich das LCD initialisiert habe

    Was jetzt noch net geht ist das LCD. Es erscheint nur in der ersten Zeile ein schwarzer Balken...
    Das war aber bevor ich die lcd_waitbusy() umgeschrieben hab auch so...

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Meinst Du, jemand hat lcd_waitbusy() aus Spaß geschrieben ?
    Wenn Du Busyflag nicht abfragen willst, mußt Du für ausreichende Wartezeiten sorgen, Dattenblatt zu Deinem LCD lässt grüssen.

    Das hab ich aber schon mal gesagt.
    Software is like s e x: its better when its free.
    Linus Torvald

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    34
    Beiträge
    485
    Ja ich werd mal schauen, aber mit lcd_waitbusy gings ja auch net -.-

    Und früher wo ich das noch auf Lochraster aufgebaut hatte, hat auch alles super geklappt...

Berechtigungen

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

Labornetzteil AliExpress