LCD per I2C an AtTiny13 anbinden?

Gast #5588968
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.
Moderator Persönliche Seite #5588983
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.
Gast #5590907
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
#5590919
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.
#5590921
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?
#5591044
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
#5591146
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
Angehängte Dateien:
Gast #6536150
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren