- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Atmega 16x2 LCD Ansteuerung über TWI

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Anzeige

    E-Bike
    Hast du dich schon einmal über die Grundlagen des I2C informiert? Bei I2C wird immer byteweise übertragen. Du kannst deshalb nicht einfach schreiben twdr='hallo';.

    Was du bis jetzt noch nicht geschrieben hast ist was das für ein LCD ist. Ein normales LCD Display hat kein I2C sondern eine 4 bzw 8bit paralellschnittstelle.

    Im Datenblatt steht alles drinnen was du benötigst.

    MfG Hannes

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    19.03.2015
    Beiträge
    31
    Entschuldigung hab beibdem ganzen code die hardware vergessen hab ein lcd 1602 mit einem pcf85741 dran. Wie gesagt das ist das LCD von einem Funduinoset am LCD ist eine platine dran mit allem drauf man muss dann nur Vcc Masse SDA und SCL anschließen das Datasheet hat mich leider nicht weitergebracht. Natürlich hast du recht,dass man nicht einfach so einen string senden kann. Ich hab aber sehr lange die Headerdatein durchsucht wie man die Daten überträgt und da man dort nur einen string eingibt und die funktion in der cpp datei das automatisch macht hatte ich da einen kleinen Denkfehler

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Über das Display findet man nicht besonders viel. Ich habe aber eine Header Datei gefunden (die du vermutlich auch gefunden hast). Ich würde am Anfang einmal versuche die Hintergrundbeleuchtung einzuschalten. Wenn ich das Richtig aus der Dateien herausgelesen habe sollte es so funktionieren:
    Code:
    TWBR = 0b00000010;
    TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
    while (!(TWCR & (1<<TWINT)));
    TWDR = 0x26;
    while (!(TWCR & (1<<TWINT)));
    TWDR = 0x00;
    while (!(TWCR & (1<<TWINT)));
    TWDR = 0xff;
    while (!(TWCR & (1<<TWINT)));
    TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
    Das erste TWDR ist die Slave Adresse für schreiben, das zweite ist das Register für Kommandos und das dritte ist das Kommando selbst (hier Hintergrundbeleuchtung ein).

    Hast du eine Anleitung zu dem Display?

    Ich bin mir nicht sicher ob ich die Headerdatei richtig verstanden habe, könnte aber so hinkommen. Hast du noch andere Bauteile für I2C oder nur das Display?

    Der Programmteil kommt dort hin wo du die I2C Verbindung hast (zwischen int main{ und while(1); )

    MfG Hannes
    Geändert von 021aet04 (06.08.2015 um 22:18 Uhr)

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    19.03.2015
    Beiträge
    31
    Danke für die Antwort. Ist das erste TWDR ein Schreibfehler oder ist die richtige Adresse 0x26? Dieses Kommando war etwas ungünstig gewählt, weil die Hintergrundbeleuchtung dauerhaft an ist. Ich versuche mal andere Kommandos. Hab leider keine Anleitung zum Display und ist auch leider das einzige Bauteil für I2C. Wenn du mir allerdings etwas einfacheres empfehlen kannst solls dann auch nicht am Geld liegen. Falls du die Headerdatei LiquidCrystal_I2C.h und .cpp hast und vielleicht etwas Zeit und Lust hättest könntest du vielleicht nach dem Kommando suchen um einfach ein A ans Display zu senden so, dass es angezeigt wird?
    Außerdem wollt ich nochmal danke sagen. Hat mich bis jetzt schon einiges vom Verständis her weitergebracht.

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Die 0x26 ist schon richtig. Hier steht z.B. das das LSB (niederwertigstes Bit => ganz rechtes Bit) für Schreibe bzw Lesezugriff steht. Bei Schreibzugriff ist das Bit 0 und bei Lesezugriff ist das Bit 1. Somit hast du bei Schreibzugriff 0x26 und bei Lesezugriff 0x27.

    Wenn du die Lib von hier hast, dann haben wir die gleiche. Du hast gesagt das du ein 16x2 LCD hast, somit musst du die LCD Lib nehmen. Ich schaue morgen noch genauer, aber im "docs" Ordner sollten Anleitungen zu finden sein.

    Ich würde, wenn ich mit I2C anfange, mit einfachen Bauteilen anfangen (z.B. Porterweiterung PCF8574). Dort kannst du an den Ausgängen direkt Leds (mit Vorwiderstand) anschließen. Somit sieht man sofort ob es funktioniert hat oder nicht. Beim LCD Modul kann es sein das es am Programm, I2C Verbindung oder am LCD liegt.

    MfG Hannes

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    19.03.2015
    Beiträge
    31
    Alles klar vielen Dank. Ich werde dann in der Datei nachschauen und auch nach dem ic schauen. Möchte aber trotzdem noch das LCD zum laufen bringen. Die Porterweiterung werd ich mir dann wahrscheinlich nächste Woche anschauen, da der ic diese Woche wohl nicht gesendet werden kann.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. 16x2 LCD mit Bascom
    Von Dunuin im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 20.09.2010, 16:11
  2. 16x2 LCD anschließen
    Von .:Robin:. im Forum Robby RP6
    Antworten: 9
    Letzter Beitrag: 27.03.2009, 23:27
  3. Problem mit EA DOG 16x2
    Von m_herr im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 25.07.2007, 22:31
  4. Ansteuerung eines Motors mit ATmega µC (totaler Noob)
    Von Athlonxp2000 im Forum Motoren
    Antworten: 3
    Letzter Beitrag: 24.12.2006, 17:04
  5. Antworten: 10
    Letzter Beitrag: 16.08.2006, 13:23

Berechtigungen

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

LiFePO4 Speicher Test