- Labornetzteil AliExpress         
Ergebnis 1 bis 7 von 7

Thema: programmiere I²C-LCD, funktioniert aber nicht immer

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    16.10.2006
    Beiträge
    222

    programmiere I²C-LCD, funktioniert aber nicht immer

    Anzeige

    Praxistest und DIY Projekte
    Ich habe es endlich geschaft das LCD von Conrad für die C-Control 1 M2.0 mit Basic++ zu programmieren. Aber nur mit geteilter freude

    Wenn ich das programm übertragen habe (schalte Betriebsspannung ab) stecke das LCD an den controler (schalte Spannung wieder an) und betätige den Start-Eingang. Aber nur manchmal (zufall) zeigt das LCD was an.

    Ausserdem kann ich keine vernümpftige Anwendung programmieren.
    (Wie zubeispiel mit IF)
    Kann es sein dass die C-contol jenach dem wie schnell sie wieder eingeschalten wird das LCD falsch initialiesiert.

    Ich habe halt von programmieren nicht viel ahnung, von elektronik schon. Oder ich werde den LCD umbauen und direkt an den controller anschliessen, aber somit muss ich 8 PORTs einbüssen.

    Hier ein Beispiel:

    define SDA port[9]
    define SCL port[10]

    import "....\LIB\ASCII_TABLE.BAS"
    import "....\LIB\IIC_LCD_DRIVE.BAS"

    SDA=on
    SCL=on

    pause 2

    LCD_INIT()

    pause 2

    LINE1(4)
    LCD_WRITE(20h,U)
    LCD_WRITE(20h,N)
    LCD_WRITE(20h,I)
    LCD_WRITE(20h,T)

    LCD_WRITE(20h,BLANK)
    LCD_WRITE(20h,M)
    END

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2006
    Beiträge
    22

    GUT DAS DU DAS ANGESPROCHEN HAST

    HI ich habe auch so ein änliches Problem.
    ist es von der Programierung eigentlich anders wenn man LC Dyspla über I2C bus anschließt????
    sorry das das ich dein Frage nicht antworten kann.





    Danke

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    69
    Beiträge
    370
    Hallo,
    das Problem hatte ich auch...
    habe am IIC-Bus ein ext. Terminal angeschlossen ( Eigenbau mit LP von CC-Tools ) und ebenfalls mal gehts, mal nicht...
    Ich denke, das Prob liegt am IIC-Bus, denn seit ich mein Terminal über den Buspuffer P82B715 angeschlossen habe, ist dieser Fehler nicht mehr aufgetreten.
    Zur Fehlersuche ( zugegeben, aufwendig ):
    PCF 8574 mit adr 10 mit Leds bestückt statt LCD anschliessen, und versuchen den Datenverkehr nachzuvollziehen, dazu pausenbefehle in die lib einfügen damit man auch was sieht
    Vlt. hilft auch, einfach externe Pullups an SDA und SCL anzuschliessen ( etwa um 4K7 oder bis min. 1k ) - mal probieren
    MfG Lutz

    @221: Das Betriebssystem unterstützt ein LCD am BytePort2 direkt, damit lassen sich Text und Zahlen easy ausgeben, über IIC-Bus muss man sich das selbst zusammenfrickeln, siehe Prog-Auszug von Skynet. -umständlicher, und ziemlich speicherfressend ( zumindest bei mir, bin noch am basteln, tabellen in ein ext. EEPROM abzulegen und auszulesen ).
    Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Vlt. hilft auch, einfach externe Pullups an SDA und SCL anzuschliessen ( etwa um 4K7 oder bis min. 1k ) - mal probieren
    Ohne Pullups sollte der I2C-Bus garnicht funktionieren.

    Unter http://www.c-control-support.net/ gibt es fertige Programmdemos.

    mfg

    Stefan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.09.2004
    Ort
    Schwabenland
    Beiträge
    156
    Ja, Du brauchst unbedingt Pullup-Widerstände an SCL und SDA (Port 9 und Port 10)
    Du kannst aber auch die integrierte Pullups für den byteport2 aktivieren.
    Siehe Config-Objekt: http://www.csslabs.de/ccontrol/help/config.html

    Code:
    FUNCTION PULLUP2_ENABLE()
      define TEMPVAL as byte
      CONFIG.INIT
      CONFIG.GET TEMPVAL                     'den aktuellen Wert lesen
      CONFIG.PUT (TEMPVAL or 00010000b)      'Bit setzten und zurück schreiben
      CONFIG.OFF                             
    END FUNCTION
    Das müsste ebenfalls funktionieren, wenn die Kabelverbindung nicht zu lange ist.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2006
    Ort
    Dresden
    Alter
    69
    Beiträge
    370
    Hi,
    Intere Pullups aktiviert hatte ich stillschweigend vorausgesetzt...
    LG Lutz
    Wir haben so viel mit so wenig solange versucht, das wir jetzt qualifiziert sind, fast alles mit fast nichts zu bewerkstelligen.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.09.2005
    Ort
    Dachau
    Alter
    40
    Beiträge
    210
    naja die internen pullups reichen oft nicht.
    ich benutze eigentlich immer externe.
    mach mal die wartezeit größer nach dem I²C bus initialisieren,
    dann eine wartezeit einfügen nach LCD.init

    wenns nicht funkt bau dir das programm mit manueller ansteuerung mal um (einfach statt das die ausgänge auf ein Byteport verweisen auf einen PCF verweisen.
    das programm findest du unter https://www.roboternetz.de/wissen/in...ntrol_M-Unit_2

    gruß Michi
    http://amiwerewolf.am.funpic.de
    Lieber ne Schwester im Puff als nen Bruder mit nem Opel!

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress