Forum: Mikrocontroller und Digitale Elektronik LCD ueber i2c mit ATMega88PA


von Maxim B. (max182)


Lesenswert?

Guten Tag!
Da heute ATMEGA88PA-AU schon für 1,35 € zu haben ist, habe ich eine 
Versuchung: LCD 2004 mit ATMEGA88PA als i2c-Modul zu machen.
D.h. Haupt-AVR schreibt LCD, indem per i2c Befehl an 88PA geschickt 
wird. Zeitverzögerungen für LCD etc. wird dann 88PA machen, ohne 
Hauptsystem irgendwie zu stören... Da man für i2c nicht einmal Quarz 
braucht, sollte das eine sehr billige Lösung sein, auch platz- und 
stromsparende.

Aber vor dem ich das selber von Null aus beginne, möchte ich gerne 
wissen: vielleicht hat das jemand schon realisiert? Um kein Fahrrad zu 
erfinden...
Vor allem interessiert mich Programmieren von i2c als Slave.

i2c als Master habe ich als Soft- und auch als Hardware-Variante 
ausprobiert, alles geht wunderschön. Aber als Slave habe ich i2c noch 
nie programmiert...

Wenn darüber hinaus in diesem Modul auch ein paar Tasten zu machen 
möglich wäre, so wäre das auch nicht schlecht...

Vielen Dank und viele Grüße,
Maxim.

von Thomas M. (langhaarrocker)


Lesenswert?

Suche mal auf ebay o.ä. nach "PCF8574". Das ist ein Portexpander mit I2C 
ansteuerbar. Der übernimmt genau die Aufgabe, die Du (wenn ich es 
richtig interpretiere) mit Deinem ATMEGA88PA-AU machen willst.
Du wirst zahllose billige ferige Modülchen finden, die genau auf solche 
2004 (oder 1602) LCD Module passen. Fertige Bibliotheken via 
Portexpander das LCD per I2C anzubinden gibt es auch.
Wenn es darum geht das Pferd nicht neu zu erfinden, wäre das die 
geschickte Lösung.
Wenn es Dir jedoch um den Lerneffekt geht I2C Slave selbst zu 
implementieren, dann solltest Du es einfach angehen und nicht die 
"selbst auferlegte Hausaufgabe" irgendwo abschreiben.

P.s.: Ach ja: von dem PCF8574 gibt es zwei Varianten, die sich in ihrem 
Basisadressraum unterscheiden. Der Portexpander hat drei Leitungen, über 
die man die I2C Adresse konfigurieren kann. Pro Portexpandervariante 
kann man somit bis zu 8 Displays mit dem selben I2C Bus füttern. Weiß 
nicht mehr, ich glaube die Varianten unterschieden sich im Suffix "T", 
oder so. Bin gerade zu faul das rauszusuchen.

: Bearbeitet durch User
von Georg G. (df2au)


Angehängte Dateien:

Lesenswert?

Quick and dirty, funktioniert aber.

von Maxim B. (max182)


Lesenswert?

Thomas M. schrieb:
> Suche mal auf ebay o.ä. nach "PCF8574". Das ist ein Portexpander mit I2C
> ansteuerbar. Der übernimmt genau die Aufgabe, die Du (wenn ich es
> richtig interpretiere) mit Deinem ATMEGA88PA-AU machen willst.

Hallo Thomas,
nein, du hast falsch verstanden. PCF8574 muß man wie ein Kind betreuen: 
Daten geben, danach E-Impuls geben, dann 40 us warten...
 Dann lieber gleich MCP23017 nehmen und mit 1,7 MHz arbeiten, statt 
langsamen PCF...

Ich möchte aber anders: per i2c Befehl schicken - und weiteres sollte 
88PA selber machen: richtige Code an LCD geben, E-Puls, warten usw. 88PA 
bekommt entweder einzelne Zeichen oder alle Zeichen für 2004 gleich - 
und zwar so schnell wie das für Haupt-AVR bequem ist.

Das möchte ich.

Viele Grüße!

von Maxim B. (max182)


Lesenswert?

Hallo, Georg, Vielen Dank!
Ich werde nun deine Code lernen.
Viele Grüße!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.