Forum: Mikrocontroller und Digitale Elektronik PIC16F884 und LCD2004 über I2C


von Michael S. (misax)


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

von H. H. (Gast)


Lesenswert?


von Michael S. (misax)


Lesenswert?

wo muss ich denn die config.h und die i2c.h hinkopieren damit das 
compilieren klappt ?

von c-hater (Gast)


Lesenswert?

Michael S. schrieb:
> wo muss ich denn die config.h und die i2c.h hinkopieren damit das
> compilieren klappt ?

OMG

von Michael S. (misax)


Lesenswert?

was bedeutet "OMG" ? gehts ein bißchen genauer bitte ?

also die config.h brauche ich ja wohl nicht, da ich meine eigene 
Configurationsbit-Definition im Programm habe. Wie bekomme ich jetzt 
aber die I2C-Bibliothek zum Laufen ?

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Michael S. schrieb:
> was bedeutet "OMG" ?

Ich zitiere hier mal aus 'Kingdom O Magic':
"Finde es selbst heraus".

W.S.

von Michael S. (misax)


Lesenswert?

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 ?

von W.S. (Gast)


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.

von c-hater (Gast)


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...

von Michael S. (misax)


Lesenswert?

habe die datei in libraries/properties eingebunden.
ich bekomme diese Fehlermeldung beim kompilieren:

::: error: (894) unknown source file type 
"..\..\..\..\..\c-achtkern\i2c\I2C_LCD.X\I2C.h"

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Michael S. schrieb:
> habe die datei in libraries/properties eingebunden.
> ich bekomme diese Fehlermeldung beim kompilieren:
>
> ::: error: (894) unknown source file type
> "..\..\..\..\..\c-achtkern\i2c\I2C_LCD.X\I2C.h"

Und von was genau wird diese Fehlermeldung erzeugt?

von Michael S. (misax)


Lesenswert?

wenn ich komipliere  Build  auf den Hammer klicke

von c-hater (Gast)


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...

von Michael S. (misax)


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 ?

von H. H. (Gast)


Lesenswert?

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

Du solltest schon den verwendeten Compiler benennen.

von Michael S. (misax)


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........

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

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 
...
Dann passt das doch, dein Kopf ist doch auch leer!

von H. H. (Gast)


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.

von Teo D. (teoderix)


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"

....

von Michael S. (misax)


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 ?

: Bearbeitet durch User
von Michael S. (misax)


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 ?

von Anton (Gast)


Lesenswert?

Der x8 ist nicht standardmässig in mplabx integriert, zuerst mplabx 
installieren, dann erst x8 installieren.

von Max M. (Gast)


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...

von H. H. (Gast)


Lesenswert?

Michael S. schrieb:
> Das I2E-Interface-Modul heißt HD44780.

Nö, das ist für HD44780.

Gängig ist z.B. der PCF8574, den es allerdings in verschiedenen 
Versionen gibt, und jede Version kann auf 8 verschiedene I2C-Adressen 
konfiguriert werden.

von Michael S. (misax)


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ß.

von Teo D. (teoderix)


Lesenswert?

Michael S. schrieb:
> und wenn ich nur dadurch angeregt werde, an welchen
> Punkten ich autodidaktisch weiterarbeiten muß.

Leider nicht. In keinster weise, ist davon auch nur das Geringste zu 
merken. Im Gegenteil, du scheinst dazu überhaupt keine Lust zu haben und 
lässt dir alles vorkauen.

von Michael S. (misax)


Lesenswert?

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 ?

von Teo D. (teoderix)


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.....

von Michael S. (misax)


Lesenswert?

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

von Teo D. (teoderix)


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!

von Michael S. (misax)


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)

: Bearbeitet durch User
von Achim H. (pluto25)


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.

: Bearbeitet durch User
von Michael S. (misax)


Lesenswert?

danke pluto25. das war mir bisher gar nicht bekannt dass es da zwei 
verschiedene Schreibweisen gibt. danke für die sachliche und präzise 
Antwort.

von W.S. (Gast)


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.

von Michael S. (misax)


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.

von Anton (Gast)


Lesenswert?

Als mein Hund noch klein war, schnappte er nach mir, nur weil ich nicht 
mit ihm spielen mochte.

von Michael S. (misax)


Lesenswert?

Ist es denn so schwer, die Finger von der Tastatur zu lassen, wenn man 
gar nicht sachlich auf das Thema eingehen möchte ?

von Anton (Gast)


Lesenswert?

Michael S. schrieb:
> Ist es denn so schwer, die Finger von der Tastatur zu lassen, wenn man
> gar nicht sachlich auf das Thema eingehen möchte ?

Ja, es ist schwer. Eine Zurechtweisung drängt sich geradezu auf, so wie 
bei Kindern, welche schreiend Süssigkeiten fordern.

von Michael S. (misax)


Lesenswert?

Größenwahn und Vater-Komplex ?

Beitrag #7243635 wurde von einem Moderator gelöscht.
von Michael S. (misax)


Lesenswert?

Bitte erspar mir dein unqualifiziertes Gelaber und antworte bitte auf 
meinen anderen Thread bezüglich der Compiler-Frage (wenn du die Antwort 
weißt) oder halt dich einfach von meinen Threads fern.

von neuer PIC Freund (Gast)


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.

von Max M. (Gast)


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

von Michael S. (misax)


Lesenswert?

"Der artgerechte Umgang mit PICs will halt gelernt sein.
Da kann nicht jeder mit uemm.

Beim Vorliegen einer "imbecillitas intellectus" werden
auch schon mal nur Hexfiles angeboten."


wenn das mal kein Gelaber ist

von Max M. (Gast)


Lesenswert?

Michael S. schrieb:
> imbecillitas intellectus
= Blödheit.

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.