Forum: Mikrocontroller und Digitale Elektronik LCD per I2C an AtTiny13 anbinden?


von Franz W. (Gast)


Lesenswert?

Hallo,

ich wollte ein LCD-Display an meinen AtTiny13 anbinden und dort aktuelle 
Leistung (Watt) und gesamt-Leistung anzeigen.

Ich bin dabei noch ganz am anfang. Spannung und Strom zu messen haut 
hin.

Nun meine Frage: funktioniert das mit einen AtTiny13 mit nur 1KB und 
braucht dieses Modul hier wirklich per I2C nur zwei Ports an meinen 
AtTiny?
https://www.ebay.de/itm/LCD-1602-Blau-HD44780-I2C-Interface-Display-Anzeige-Bildschirm-Arduino-Raspberry/162452854154?hash=item25d2f1d58a:m:mnh8EKdwXPYKo4bXblGeWAQ:rk:1:pf:0

Mit vielen lieben Grüßen
Franz W.

von Christian M. (Gast)


Lesenswert?

Sogar nur 2 Leitungen von einem Port!
Have fun!

Gruss Chregu

von Täglich Grüssendes Murmeltier (Gast)


Lesenswert?

Da ist es wieder, das unsägliche Liquid Crystal Display Display.

von Guld (Gast)


Lesenswert?

Täglich Grüssendes Murmeltier schrieb:

> Da ist er wieder, der unsägliche Schwätzer.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Franz W. schrieb:

> ich wollte ein LCD-Display an meinen AtTiny13 anbinden und dort aktuelle
> Leistung (Watt) und gesamt-Leistung anzeigen.

Je nach Messwerten ist das schon sehr sportlich. Schließlich hat der 
ATtiny13 keinen Multiplikationsbefehl, du musst du Multiplikation also 
in Software vornehmen. Für die Multiplikation zweier 16-bit-Zahlen 
braucht der GCC 50 Byte an Code, das sind 5 % deines Flashs.

Schlimmer noch: du willst ja deine Zahlen auch formatiert ausgeben, 
dafür braucht es eine Division durch 10, kostet auch nochmal Code.

Von Gleitkommawerten reden wir gleich gar nicht …

> Nun meine Frage: funktioniert das mit einen AtTiny13 mit nur 1KB und

"Im Prinzip ja, aber …"

> braucht dieses Modul hier wirklich per I2C nur zwei Ports an meinen
> AtTiny?

Sie haben einen I²C-Portexpander vorgeschaltet. Damit braucht es in der 
Tat nur zwei Pins, aber die gängigen HD44780-Bibliotheken funktionieren 
dann natürlich nicht mehr, denn die gehen normalerweise von einem direkt 
angeschlossenen Display aus.

Warum der sportliche Ehrgeiz, das mit einem ATtiny13 zu erschlagen? 
Willst du eine Million davon verkaufen, dass du Kosten sparen musst? 
Wenn nicht, dann würde ich an deiner Stelle einen ATmega88 nehmen, das 
Display parallel mit 6 oder 7 Leitungen anschließen (wie es praktisch 
alle machen), die Rechnung als Gleitkomma vornehmen (dann brauchst du 
dir keine Gedanken um Wertebereiche groß machen) und die Ausgabe ein 
printf() erledigen lassen, mit allem Komfort, den man dabei hat. Dafür 
bezahlt man halt 99 Cent statt nur 51 für den Controller … (aktuelle 
Reichelt-Preise, jeweils der billigste des Typs), aber die Software 
dafür ist in einem Tag fertig.

: Bearbeitet durch Moderator
von Thomas W. (diddl)


Lesenswert?

Das Display gibt es auch mit 6 Taster.
Und mit RGB Hintergrund Beleuchtung.


Die Taster werden auch über I2C abgefragt.

von Peter D. (peda)


Lesenswert?

Franz W. schrieb:
> funktioniert das mit einen AtTiny13 mit nur 1KB

Nein.
Muß was gerechnet werden, geht Dir bei 1kB schnell die Puste aus.
Mit float und printf solltest Du besser einen ATtiny85 nehmen.

von Franz W. (Gast)


Lesenswert?

Hallo Jörg,

Jörg W. schrieb:
> Warum der sportliche Ehrgeiz, das mit einem ATtiny13 zu erschlagen?
> Willst du eine Million davon verkaufen, dass du Kosten sparen musst?
> Wenn nicht, dann würde ich an deiner Stelle einen ATmega88 nehmen, das
> Display parallel mit 6 oder 7 Leitungen anschließen (wie es praktisch
> alle machen), die Rechnung als Gleitkomma vornehmen (dann brauchst du
> dir keine Gedanken um Wertebereiche groß machen) und die Ausgabe ein
> printf() erledigen lassen, mit allem Komfort, den man dabei hat. Dafür
> bezahlt man halt 99 Cent statt nur 51 für den Controller … (aktuelle
> Reichelt-Preise, jeweils der billigste des Typs), aber die Software
> dafür ist in einem Tag fertig.

Es geht ja nicht um die kosten des Chips sondern darum das ich nur zwei 
Chips habe den AtTiny13 den ich bereits einige mal verwendet hate und 
den den AtTiny2313.
Also dann sollte ich es nicht per I2C anbinden sondern per direkt 
anschluss?

Dann werd ich es mal mit dem AtTiny2313 versuchen oder?

Mit vielen Grüßen
Franz

von Peter D. (peda)


Lesenswert?

Franz W. schrieb:
> Also dann sollte ich es nicht per I2C anbinden sondern per direkt
> anschluss?

Das wird nicht viel einsparen. Ich schätze den I2C-Treiber auf ~100 Byte 
Code.
Die float-Lib belegt ~1kB.
Ohne float und printf muß man alles zu Fuß selber programmieren. Das 
wird bei einem Anfänger aber kaum sparsamer werden, sondern nur 
fehlerträchtiger.
Deshalb ja meine Empfehlung >=8kB Flash zu benutzen.

von Axel S. (a-za-z0-9)


Lesenswert?

Franz W. schrieb:
> Hallo Jörg,
>
> Jörg W. schrieb:
>> Warum der sportliche Ehrgeiz, das mit einem ATtiny13 zu erschlagen?
>> Willst du eine Million davon verkaufen, dass du Kosten sparen musst?
>> Wenn nicht, dann würde ich an deiner Stelle einen ATmega88 nehmen
>> bezahlt man halt 99 Cent statt nur 51 für den Controller …
>
> Es geht ja nicht um die kosten des Chips sondern darum das ich nur zwei
> Chips habe den AtTiny13 den ich bereits einige mal verwendet hate und
> den den AtTiny2313.

Und? Du hast keine 99 Cent für einen ATmega88 übrig? Ich würde sogar 
noch weiter gehen und dir einen ATmega328 empfehlen. Am besten gleich in 
Form eines Arduino Nano Moduls vom freundlichen Chinesen. Z.B. von ebay, 
Ali Express oder Amazon. Kostet unter €2,- das Stück und kann per USB 
Serial angesprochen werden. Das ist in der Entwicklungsphase enorm 
praktisch, wenn der µC einfach mal ein paar Statusmeldungen rausdumpen 
kann.

> Also dann sollte ich es nicht per I2C anbinden sondern per direkt
> anschluss?

Du sollst nicht. Mach ruhig was du willst. Aber die gebräuchlichsten 
Libraries für HD44780-basierte LCD gehen davon aus, daß du das Display 
direkt an 6 oder 7 Portpins anschließt. Wenn du das per I²C machst, mußt 
du diesen Teil des Codes auch noch selber schreiben. Und Fehlersuche mit 
I²C kann eklig werden, vor allem wenn die Werkzeuge (Logikanalysator) 
fehlen.

> Dann werd ich es mal mit dem AtTiny2313 versuchen oder?

Der hat doppelt so viel Flash (aber immer noch lächerlich wenig). Aber 
wenigstens ein paar Pins mehr. Aber du tust dir keinen Gefallen, wenn du 
von Anfang an nur auf die kleinsten µC setzt. Nimm für den Start lieber 
den größten aus einer Reihe, z.B. besagten ATmega328. Der hat 32K Flash, 
da paßt eine Menge rein. Und wenn du nachher nur 3KB brauchst, gibt es 
mit dem ATmega48 einen pinkompatiblen µC, der nur 4K Flash hat. Nicht 
daß das kostenmäßig für ein Einzelstück viel ausmachen würde.

Wie mißt du eigentlich die Leistung?

von Thomas W. (diddl)


Lesenswert?

Axel S. schrieb:
> Ich würde sogar
> noch weiter gehen und dir einen ATmega328 empfehlen. Am besten gleich in
> Form eines Arduino Nano Moduls vom freundlichen Chinesen.

Ganz genau auch meine Meinung zu dem Thema.


Man hat unvergleichlich mehr Ressourcen zu einem kaum höheren Preis.


Zudem ist, dank Arduino libs, die Anbindung des I2C LCD bereits fertig 
gelöst.

Und wenn man irgendwann ein OLED statt LCD haben will, ist die Änderung 
im Code ein Klax

: Bearbeitet durch User
von Karl B. (gustav)


Lesenswert?

Hi,
habe solch ein Display. Habe den Adapter abmontiert.
Wunderbar ohne den PICs-Portadapter mit den üblichen Libs ansteuerbar im 
Vierbit-Modus.

Suche das Pinout mal raus. Momang.

Beitrag "Re: Anfänger Will ATtiny2313 mit Display uber I2C verbinden"


USI ist nur eine Hilfslösung.
Also, würde lieber den Adapter ablöten und im Vierbit-Modus arbeiten.

ciao
gustav

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl B. schrieb:
> Also, würde lieber den Adapter ablöten und im Vierbit-Modus arbeiten.

Dann kann man doch aber gleich eins ohne I²C-Porterweiterung kaufen, 
HD44780-basierte Displays gibt's doch wie Sand am Meer.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Jörg W. schrieb:
> Dann kann man doch aber gleich eins ohne I²C-Porterweiterung kaufen,
> HD44780-basierte Displays gibt's doch wie Sand am Meer.

Hi,

Suchtip:
The most recommended Fluery libs, supports both TWI AVR's i2cmaster.c, 
as well as non-TWI AVRs i2cmaster.s via bit banging on any two pins.

Und im bereits oben angegebenen Post wurde es noch ausführlich 
ausdiskutiert.


Maxim B. schrieb:
> Hallo Thomas,
> nein, du hast falsch verstanden. PCF8574 muß man wie ein Kind betreuen:
> Daten geben, danach E-Impuls geben, dann 40 us warten...

Oben im Bild ist das Pinout des Portadapters. Hoffe, den Aufdruck kann 
man noch erkennen.

Und noch mehr:
https://www.avrfreaks.net/forum/tutc-lcd-tutorial-1001

ciao
gustav

: Bearbeitet durch User
von Ryszard (Gast)


Angehängte Dateien:

Lesenswert?

Hi, thank you for your solution as my base to create software for all 
attiny. I use higher CPU speed because my Attiny85 have to work a lot of 
instruction.
I will stedily improve may software because i fight   with space code. 
Now software consumption less than 400bytes. When I use Attiny13 i need 
more for addicional code ti implementing.
This is temporary solution, but usefull. I don't know German language 
and i write in English.

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.