Forum: Mikrocontroller und Digitale Elektronik I2C und LCD mit der Pollin.Lib in Bascom


von Martin (Gast)


Lesenswert?

Hallo,

ich versuche vergeblich ein älteres LCD-Modul über den dafür gedachten 
I2C-Adapter von Pollin mit einem ATMega48 zu beleben. Leider finde ich 
im Netz nichts passendes dazu oder eine Beschreibung der 
Pollin_Lcd_i2c.lib!
Wäre für ein einfaches Beispiel dankbar.

Schönen Sonntag noch und Gruß vom
Martin

von Paul Neumüller (Gast)


Angehängte Dateien:

Lesenswert?

Martin schrieb:
> Pollin_Lcd_i2c.lib!
> Wäre für ein einfaches Beispiel dankbar.

Von Pollin gab es eine lib?

Für Bascom gibt es verschiedene libs, siehe auch in der Hilfe.
Es gab auch verschiedene Beschaltungen Display - PCF8574.

Kann es sein, das Pollin die Schaltung verwendet die im Franzis Buch mal 
drin war.
Schau mal ob das vom Datei Anhang mit deiner Hardware funktioniert.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Danke erst mal Paul!
Die LIB heißt so, wird aber nicht von Pollin sein. Warum sollte sie 
auch!
Die Hardware müßte funktionieren, da ich zur zeit über den I2C-Bus 
(softwaremäßig) die Hintergrundbeleuchtung am Pin7 des PCFs blinken 
lasse!
Hier mal die LIB im Anhang

von D. J. (basteldag)


Lesenswert?

Martin schrieb:
> in älteres LCD-Modul

Welches bitte ? Ist es mit den Neueren Pin-Kompatibel ?

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Guten Morgen,

das Pollin-Modul hat eine andere Belegung. Meine Hoffnung war ja auch, 
dass es mit der Lib funktioniert. Ein anderes Mudul aus Chinesien mit 
einem fest verlöteten blauen LCD habe ich mit der YwRobot_Lcd_I2C am 
laufen. Ist auch in der Hilfe von MSC ... gut beschrieben.

von Wilhelm S. (wilhelmdk4tj)


Lesenswert?

Martin schrieb:
> das Pollin-Modul hat eine andere Belegung.

Dieses Problem habe ich auch gehabt. Habe dann noch mal in meinen alten 
Unterlagen gewühlt und meine damalige Lösung wiedergefunden.
Zur Info: die I2C_Lib von Pollin ist die von MCS-Bascom. Geschrieben von 
Ken Anderson MCS_AN118.
Nach vielen Mühen habe ich damals herausgefunden, dass  LCD_Enable bei 
Pollin an einem andern Pin liegt.
Das LCD wird im 4Bit Modus betrieben und da gibt es eine Variable 
'_lcd_e'. Die muss '64' sein, 192 geht auch, 128 nicht. Richtig 
verstanden habe ich es auch heute noch nicht, hat aber funktioniert. 
Wenns klappt....
Ausprobieren, vielleicht war es das.
Viel Glück.

73
Wilhelm

von Paul Neumüller (Gast)


Angehängte Dateien:

Lesenswert?

Martin schrieb:
> das Pollin-Modul hat eine andere Belegung. Meine Hoffnung war ja auch,
> dass es mit der Lib funktioniert.

Hallo Martin,

im Anhang die Beschaltung wie sie mal verwendet wurde.
Die lib wo ich dir geschickt habe funktioniert mit der Beschaltung.
Pollin hat zusätzlich noch die Abschaltung der Beleuchtung.

Für meine Anwendungen verwende ich das nicht mehr.
Die in der Bascom Hilfe gezeigte Schaltung ist die Schaltung wie Sie auf 
den Arduino Adaptern verwendet wird.

Der Adapter alleine ist recht billig zu bekommen.
Auch die Sets Display + I2C Interface sind auch nicht teuer.

von Martin (Gast)


Lesenswert?

Nein Paul,
beim meinem Pollin Modul geht der Pin 11 auf den Anschluß 6 der LCD und 
nicht der Pin 12. Deshalb ist wohl der Hinweis vom Wilhelm schon sehr 
gut.
In den Libs wird auch gleich ganz oben Ken Anderson MCS_AN118 als Autor 
erwähnt.
Demnächst will ich mir ein kleines Modul auf Basis einer 
UART-Kommunikation bauen mit einem ATTiny2313. Da ist dann nur eine 
Verbindung und Masse nötig.

von Wilhelm S. (wilhelmdk4tj)


Lesenswert?

Hallo zusammen.

Paul Neumüller schrieb:
> Für Bascom gibt es verschiedene libs, siehe auch in der Hilfe.
> Es gab auch verschiedene Beschaltungen Display - PCF8574.

Das, was du da im Anhang hast, ist die Lib von Kent Anderson.
Kann man sich mit einem Editor ansehen. Da steht ziemlich am Anfang, das 
es eine '_LCD_e' Variable gibt, die auf '64' oder '192' gesetzt werden 
muss. Du hast in deinem Quelltext '128'

Das hier....

;define a constant named PCF8574_LCD pointing to the i2c address
;dimension _lcd_e as byte to control the E-lines (4 lines LCD:s)
;_lcd_e should have one of the following values
;128 to enable E1, 64 to enable E2, 192 to enable both E1 and E2 (cls, 
deflcdchar)

....habe ich aus deiner Lib kopiert.
Habe gerade nachgesehen, das steht auch in der Original Lib von MCS.

@ Martin
Wenn schon die Beleuchtung klappt, kannst du das Teil ja schon 
ansprechen. Der Rest kann dann auch kein Problem mehr sein.

73
Wilhelm

von Karl B. (gustav)


Lesenswert?

Martin schrieb:
> Demnächst will ich mir ein kleines Modul auf Basis einer
> UART-Kommunikation bauen mit einem ATTiny2313.

Hi,
ist jetzt noch I2C-Ansteuerung gefragt oder nicht?:
Der 2313-er hat nämlich kein TWI aka I2C.
Trotzdem geht das über Umweg USI.

ciao
gustav

von Wilhelm S. (wilhelmdk4tj)


Lesenswert?

Karl B. schrieb:
> Trotzdem geht das über Umweg USI

Da wäre ich nicht drauf gekommen....
Ob Martin den Tipp braucht, weiss ich nicht. Wer sich aber schon mal mit 
AVR und I2C beschäftigt hat, braucht diesen Tip nicht!

73
Wilhelm

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

So! Hier das funktionierende Programm! Danke euch nochmals!
Mit Add 192 geht es auch. Ist schließlich 64 und 128 dabei!

'*******************************************************************
'Compiler            : BASCOM-AVR (Vers. 2.0.7.7)
'Hardware            : Versuchsplatine LCD 8x2 u. I2C_LCD von Pollin
'Chip type           : ATMega48V (8%)
'Programm            : I2C_LCD_2
'*******************************************************************
$regfile = "m48def.dat"
$crystal = 4000000            'Quarz (111101) DivideClock = disabled
$lib "Pollin_Lcd_i2c.lib"

Config SDA = PortD.2          'PortD.2 = serial data (SDA) gelb
Config SCL = PortD.3          'PortD.3 = serial data (SCL) grün
I2Cinit                       'Ini the I2C SCL and SDA pins

'******************* Deklarationen ************************
Const Pcf8574_lcd = &H40      'Adresse des I2C-LCDs
Dim Lcd_backlight As Byte     '1 = an; 0 = aus. Wird erst nach einen
                              'LCD-Befehl umgesetzt!
Dim I As Byte
Dim _lcd_e As Byte
_lcd_e = 64                   'LCD im 4-Bit Mode betreiben

'****************** Initialisierung ***********************
Config Lcd = 16 * 2           'nicht unbedingt nötig
Config I2cdelay = 1
Waitms 300                    'warte bis LCD-Initialisiert ist!

'******************** Hauptprogramm ***********************
Cls
Lcd " Hallo Dresden! "
Wait 1
Lcd_backlight = 0
Locate 2 , 1
Lcd "-- 16 Zeichen --"
Wait 2
Lcd_backlight = 1
Locate 1 , 1                  'Backlight-Zustand an LCD übermitteln

Do                            'Sinnlose Schleife!
nop
Loop
End

von Karl B. (gustav)


Lesenswert?

Martin schrieb:
> Demnächst will ich mir ein kleines Modul auf Basis einer
> UART-Kommunikation bauen mit einem ATTiny2313. Da ist dann nur eine
> Verbindung und Masse nötig.

Vielleicht klärt uns der TO einmal auf, welche AVRs er wo einsetzen 
möchte.

In der Lib sehe ich keine 2313-er. Oder übersehe ich da was?

Martin schrieb:
> 'Chip type           : ATMega48V (8%)

ciao
gustav

von Pichler (Gast)


Lesenswert?

Karl B. schrieb:
> In der Lib sehe ich keine 2313-er. Oder übersehe ich da was?

Ja du übersiehst etwas oder dir ist die Funktion der lib nicht bekannt.
Diese LCD_I2C Lib wird vom Compiler dafür verwendet um das LCD per I2C 
anzusteuern. Alternativ gibt es eine lib. um das LC Display per 4Bit 
Verbindung zu verwenden.

Diese lib kannst mit dem ATTiny 2313 verwenden, aber auch mit einem 
ATMEGA 32 oder ATMEGA 328 usw.

Wobei es mit dem ATTINY 2313 nicht mehr viele Möglichkeiten gibt was der 
Controller erledigen kann.
Der Speicher wird hier schnell mal knapp.
Es muss neben der LCD lib auch noch eine lib für den I2C Bus eingebunden 
werden.
Es kommt noch dazu, dass der ATTINY 2313 kein Hardware TWI hat.
Der I2C Bus muss per Software realisiert werden.
Hier hat ein ATMEGA 8, 168, 328 usw. den Vorteil ein Hardware TWI zu 
haben.

von Karl B. (gustav)


Lesenswert?

Pichler schrieb:
> Es kommt noch dazu, dass der ATTINY 2313 kein Hardware TWI hat.
> Der I2C Bus muss per Software realisiert werden.

Nichts anderes hatte ich oben behauptet und wurde dafür abgebasht.
Karl B. schrieb:
> Der 2313-er hat nämlich kein TWI aka I2C.
> Trotzdem geht das über Umweg USI.

Wilhelm S. schrieb:
> Wer sich aber schon mal mit
> AVR und I2C beschäftigt hat, braucht diesen Tip nicht!

ciao
gustav

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Ganz einfach Karl Gustav,

Mann nehme einen ATTiny2313 und nutze seine Hardware UART. Nicht TWI!
Da ist dann noch Platz für einen Max232. Hänge mal den "Vorläufer" dafür 
als Eagle-File an, den ich damit sogar im 8Bit-Modus ansteuere. Da hat 
damals sogar noch ein Spannungsregler drauf gepasst! Ich hatte diese an 
unserer FH fräsen lassen. Jetzt schicke ich so etwas nach JLCPCB. 5 Stk. 
für unter 10 Euronen. Und wenn der Speicher nicht reicht, was ich 
bezweifele, wird eben ein ATTiny4313 verwendet.

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.