PIC16F884 und LCD2004 über I2C

OP #7242627
Lesenswert?

hallo;
ich komme aus der ATMEGA-Welt und bin Neuling mit PIC-Prozessoren.
Kann mir jemand ein ganz einfaches Beispielprogramm für den PIC16F884 
posten, in dem ein Zeichen über I2C auf einen LCD2004 ausgegeben wird ?
Beim Arduino bindet man eine Bibliothek ein und dann ist das ganze eine 
Sache von wenigen Programm-Zeilen.
Geht es so ähnlich einfach auch mit dem PC16F884 ?
Vielen Dank
Gast #7242712
Lesenswert?

Michael S. schrieb:
> ich komme aus der ATMEGA-Welt und bin Neuling mit PIC-Prozessoren.

Das ist keine Schande.
Allerdings kenne ich da ein Sprichwort: "Fallen is koa Sünd - aber lang 
liegen"
Vielleicht würde es helfen, sich ein wenig mehr selbst zu bemühen. Zum 
Beispiel die Doku über den betreffenden PIC zu lesen. Die Unterlagen von 
Microchip sind im Allgemeinen sehr gut.

> Kann mir jemand ein ganz einfaches Beispielprogramm für den PIC16F884
> posten, in dem ein Zeichen über I2C auf einen LCD2004 ausgegeben wird ?

Naja, ich hatte neulich ein Projekt hier mal gepostet, zwar nicht mit 
einem 'LCD2004' (was ich nicht kenne), sondern mit einem Alpha-LCD 2x8 
(von Pollin) und nicht mit einem PIC16F884, sondern mit einem PIC16F819. 
Und nicht per I2C, sondern im bekannten 4 Bit Modus. Guck einfach mal 
bei den Projekten. Vielleicht hilft's. Eventuell aber auch nicht.

W.S.
Gast #7242718
Lesenswert?

Michael S. schrieb:
> naja mit den Komödianten, die ihre Zeit damit verbringen, andere auf den
> Arm zu  nehmen, muss man halt leben...
>
> Mir gelingt es nicht, die Bibliothek in mein Projekt einzubinden.
> Bestimmt ist es ganz einfach. Kann mir jemand sagen wie es geht ?

Wie W.S. sagte:
"Finde es selbst heraus"

Wenn du nichtmal das selber hinbekommst, hast du eh' verloren. Denn das 
hat soweit ja noch nichtmal etwas mit dem Inhalt des Codes zu tun, 
sondern nur mit der Beherrschung des Werkzeugs...
Gast #7242734
Lesenswert?

Michael S. schrieb:
> wenn ich komipliere  Build  auf den Hammer klicke

Und erneut: OMG

Du bist so rotzedoof, dass du nicht mal in der Lage bist, das Werkzeug 
zu benennen, welches du verwendest (nichtmal auf auf eindeutige und 
unmißverständliche explizite Anfrage)...

Ja sogar so doof, dass dir nicht einmal klar ist, dass diese Nennung 
unverzichtbare Grundlage für jede ernsthafte Hilfe ist...
OP #7242741
Lesenswert?

ach muss das Spaß machen in einem Forum jemanden anonym zu beleidigen. 
Wenn ich dir damit eine Freude mache...

Ich hab jetzt die I2C.h in die Header-Files gebracht und die I2C.c in 
die Source-Files und den Eintrag aus den Libraries wieder rausgenommen. 
Jetzt bringt mir der Compiler nur noch Warnings:

../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:30:: warning: (520) 
function "_I2C__RepeatedStart" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:42:: warning: (520) 
function "_I2C_ACK" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:49:: warning: (520) 
function "_I2C_NACK" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:65:: warning: (520) 
function "_I2C_Read_Byte" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:159:: warning: (520) 
function "_Backlight" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:165:: warning: (520) 
function "_noBacklight" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:171:: warning: (520) 
function "_LCD_SL" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:177:: warning: (520) 
function "_LCD_SR" is never called
../../../../../c-achtkern/i2c/I2C_LCD.X/I2C.c:183:: warning: (520) 
function "_LCD_Clear" is never called
newmain.c:32:: warning: (1518) direct function call made with an 
incomplete prototype (I2C__Init)

bin ich auf dem richtigen Weg ?
OP #7242767
Lesenswert?

Der 8-Bit-Compiler, der standardmäßig in der MPLAB X IDE eingebunden 
ist.

Leider kommt auf mein Display der Output nicht, nur ein leerer Schirm. 
Datenleitung ist doch Pin 23 und Clock der Pin 18 für I2C oder ?

Die Adresse hab ich von 0x40 im Beispielprogramm auf 0x27 geändert, das 
ist die Adresse des LCD2004 die er im Arduino-Sketch hat.

pfffff........
Gast #7242777
Lesenswert?

Michael S. schrieb:
> Der 8-Bit-Compiler, der standardmäßig in der MPLAB X IDE
> eingebunden
> ist.

Den kenne ich nicht.


> Leider kommt auf mein Display der Output nicht, nur ein leerer Schirm.
> Datenleitung ist doch Pin 23 und Clock der Pin 18 für I2C oder ?

Ja.


> Die Adresse hab ich von 0x40 im Beispielprogramm auf 0x27 geändert, das
> ist die Adresse des LCD2004 die er im Arduino-Sketch hat.

Die richtet sich nach dem Interfacebaustein, dem der I2C nach parallel 
übersetzt.
#7242791
Lesenswert?

Apollo M. schrieb:
> Michael S. schrieb:
>> Leider kommt auf mein Display der Output nicht, nur ein leerer Schirm
>
> Wenn ich mir den Mist anschaue, den du hier orientierungslos schreibst

Beitrag "PIC16F884 seltsamer Effekt"
Beitrag "PIC16F884 interner Oszillator"
Beitrag "PIC16F884 Anfängerfragen"
Beitrag "PIC16F84A - could not detect target voltage VDD"
Beitrag "PIC16F84A Programm läuft nicht"
Beitrag "PIC-Prozessor programmieren"

....
OP #7242797
Lesenswert?

Der Compiler heisst XC8 von Microchip.

Ich hab jetzt mal eine blinkende LED eingebaut, um zu sehen, ob das 
Programm überhaupt etwas macht.

Effekte:

1. allein das Einbinden von #include "I2C.h" bewirkt, dass die 
Blinkfrequenz dreimal so lang wird, also die LED blinkt wesentlich 
langsamer.

2. Einbinden von I2C__Init() läßt das Verhalten unverändert.

3. Einbinden von LCD_Init(0x27) bewirkt, dass die LED gar nicht mehr 
blinkt, sondern permanent leuchtet.

Auf dem Display zeigt sich keinerlei Effekt.

Das I2E-Interface-Modul heißt HD44780.

Kann sich das jemand erklären ?
OP #7242858
Lesenswert?

Ich hab jetzt mal eine blinkende LED eingebaut, um zu sehen, ob das
Programm überhaupt etwas macht.

Effekte:

1. allein das Einbinden von #include "I2C.h" bewirkt, dass die
Blinkfrequenz dreimal so lang wird, also die LED blinkt wesentlich
langsamer.

2. Einbinden von I2C__Init() läßt das Verhalten unverändert.

3. Einbinden von LCD_Init(0x27) bewirkt, dass die LED gar nicht mehr
blinkt, sondern permanent leuchtet.

Auf dem Display zeigt sich keinerlei Effekt.

Das I2E-Interface-Modul heißt HD44780.

Kann sich das jemand erklären ?
Gast #7242870
Lesenswert?

Michael S. schrieb:
> Kann sich das jemand erklären ?
Ich sehe hier sehr großes Potential bei Dir beim Arduino zu bleiben.

DAS Programm - aber wir wissen nicht welches
EINE led eingebaut, wir wissen aber nicht wo
Und das schlimme ist das Du über Dein Projekt kaum mehr zu wissen 
scheinst als wir.

Also das Programm tut nun an irgendeinem Pin irgendwas anderes in 
irgendeinem Testaufbau wenn Du irgendwas änderst.
JA, das wird ganz sicher irgendeinen Grund haben.

Ah, DIE I2C__Init() ....
Klar, den Code kennt ja jeder, weil es nur diese eine gibt...
OP #7243207
Lesenswert?

Die I2C-Adresse ist doch im Chip des Bausteins verankert und immer 
gleich, egal ob ich den Baustein dann an einen Atmel oder einen PIC 
anschließe, oder ?

Auch wenn meine Fragen vielleicht extrem anfängermäßig sind und einige 
sich dann provoziert fühlen, mit Beleidigungen zu reagieren (anstatt 
einfach die Finger ruhig zu halten) bringen mich viele Antworten doch 
prima weiter, und wenn ich nur dadurch angeregt werde, an welchen 
Punkten ich autodidaktisch weiterarbeiten muß.
#7243223
Lesenswert?

Michael S. schrieb:
> hallo Teo D,.
> wieso macht es dir eigentlich Spaß auf mir rumzuhacken anstatt meine
> Frage zu beantworten ? Hast du so viel Zeit und nichts Besseres zu tun ?
> Oder hast du Minderwertigkeitskomplexe ?

Du hast gefragt, ich hab geantwortet.
Das Andere sind nur hinweise für deine Helfer, dass sie sich hier auf 
eine Sisyphos Arbeit einlassen.....
#7243226
Lesenswert?

Michael S. schrieb:
> Du hast nicht geantwortet. Die Antwort lautet "ja, ist gleich" oder
> "nein, ist nicht gleich". Soll ich dir einen guten Therapeuten empfehlen
> ?

Häää

Dein Frage war:
Michael S. schrieb:
> hallo Teo D,.
> wieso macht es dir eigentlich Spaß auf mir rumzuhacken anstatt meine
> Frage zu beantworten ? Hast du so viel Zeit und nichts Besseres zu tun ?
> Oder hast du Minderwertigkeitskomplexe ?

Hopfen und Malz!
OP #7243227
Lesenswert?

Die I2C-Adresse ist doch im Chip des Bausteins verankert und immer
gleich, egal ob ich den Baustein dann an einen Atmel oder einen PIC
anschließe, oder ?

oder anders gefragt: wenn mein Display in der Arduino IDE mit der 
I2C-Adresse "0x27" läuft, muss ich dann im C-Programm für den PIC auch 
"0x27" eintragen, oder kann es sein, dass es dort z.B. "0x40" heißen muß 
?

(Bitte keine Spitzfindigkeiten oder Beleidigungen mehr, das ermüdet. 
Bitte bitte doch einfach nur diese einfache Frage beantworten)
#7243237
Lesenswert?

Ja , aber auch abhängig von den 3 Adressleitungen wodurch 8 verschiedene 
Adressen möglich sind, bei zwei Typen (mit oder ohne "A") sogar 16.
Wenn es mit 27 funktioniert bleibt die natürlich bestehen solange nichts 
üngelötet wird. Es liegt jedoch am Code ob der die in der 7bit 
Scheibweise (0x27) oder sie in 8 bit (0x4E) benötigt.
Gast #7243329
Lesenswert?

Michael S. schrieb:
> Du hast nicht geantwortet. Die Antwort lautet "ja, ist gleich" oder
> "nein, ist nicht gleich". Soll ich dir einen guten Therapeuten empfehlen

Also mal ein Wort der Erklärung: Dieses Forum ist kein Cola-Automat, wo 
man ne Münze reinsteckt und die gewünschte Flasche Cola unten heraus 
kommt.

Abgesehen davon scheint mir das obige Zitat weitaus wichtiger zu sein, 
als es anfangs schien. Also: finde es SELBST heraus. Und dazu ist es 
durchaus hilfreich, sich Sachkenntnisse anzueignen, z.B. durch das 
verstehende Lesen von Dokumenten zu dem Zeug, was du da zu verbauen 
trachtest. Bislang hast du nur sowas von dir gegeben:

Michael S. schrieb:
> 2. Einbinden von ...
> 3. Einbinden von ...
usw.

Stattdessen wäre es sinnvoller, etwas zu den Inhalten zu lernen. Also 
wie man etwas wo anschließt, wie der Signalfluß geht, was für Kommandos 
in welcher Reihenfolge wohin zu schicken sind usw.

Tja, etwas zu können bedeutet zumeist, selbigs zuvor erlernt zu haben 
und nicht bloß zu schreien "man mache mir das!"

W.S.
OP #7243532
Lesenswert?

hallo Anonymer W.S. (Gast);
du brauchst mir nicht vorschreiben, wie ich dieses Forum zu nutzen habe. 
Wenn du eine meiner Fragen nicht beantworten willst, lass doch einfach 
die Finger von der Tastatur. Wenn du den Wunsch hast anderen anonym 
etwas vorzuschreiben oder Minderwertigkeitskomplexe hast, gilt für dich 
mein gleiches Angebot wie an Teo D., dir einen guten Therapeuten zu 
vermitteln.
Beitrag #7243635 wurde von einem Moderator gelöscht.
Gast #7243647
Lesenswert?

>das war mir bisher gar nicht bekannt dass es da zwei verschiedene Schreibweisen 
gibt

Gibt es auch nicht. Die Spezifikation definiert eine 7-bit Adresse und 
das R/W-Bit. Solange die "Kreativen" mit ihren 8-bit Adressen dies nicht 
kennzeichnen, führt das manchmal zum Rätseln und Nachrecherchieren.
Gast #7243701
Lesenswert?

Michael S. schrieb:
> unqualifiziertes Gelaber

So, ich denke Du hast jetzt alle beleidigt die Dir hätten helfen können 
und wollen.
Deine Performance in diesem Thread war ja nun absolut unterirdisch und 
das hat sich ja auch von Anfang bis Ende konsequent so durchgezogen.

Du hast ein dutzend Hinweise bekommen was DU erstmal tun must damit man 
Dir helfen kann und auch DU DIR SELBER helfen kannst.

Nichts davon hat Deine Großhirnrinde erreicht und ich hör nur 
Dauergenöle von Dir das Mutti Dir nicht unter die Arme greift. Deswegen 
hat auch niemand mehr Lust auf Dein
> unqualifiziertes Gelaber

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