Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo André > > ich fürchte, da ist in pcflcd.c2 doch was nicht ganz ok. > Und zwar in der Initialisierung für das Display fast am Ende der Funktion. > > Wenn Du die Website http://www.sprut.de/electronic/lcd/ (hatte Link gepostet) > anschaust, gibt es dort unten die Tabelle zum initialisieren eines 4-Bit-Displays. > Schon dort in dieser Tabelle hat sich ein Fehler eingeschlichen, der anscheinend nie > gefixt und von vielen Leuten ohne Prüfung einfach kopiert wurde. Ich hab erst geglaubt, ich könne > selbst nicht mehr zählen aber ich komme immer auf den Fehler.... > > Vergleichst Du Deine Befehlssequenz nicht mit der fehlerhaften Tabelle sondern mit den richtigen > Befehlen aus der Tabelle weiter oben oder den Datenblättern, merkst Du, das sich da jemand beim > Zählen von Bits bei der Nibleaufteilung für den Entry-Mode verzählt hat. > > Einfach und nachvollziehbar, weiter oben gehst Du das Register zum Einschalten vom Display > und Cursor mit: 00 C0 an. > > i2c.write(0x04 or light); // Display Control > i2c.write(0x00 or light); // Set highnibble > i2c.write(0xC4 or light); // Cursor Off, display On > i2c.write(0xC0 or light); // Set lownibble > > an, dann kann aber folgendes nicht stimmen. 00 60 > > i2c.write(0x04 or light); // Entry-Mode > i2c.write(0x00 or light); > i2c.write(0x64 or light); // inkrement, Cursor-shift > i2c.write(0x60 or light); > > So ist's richtig: 10 C0 > > i2c.write(0x14 or light); // Entry-Mode > i2c.write(0x10 or light); > i2c.write(0xC4 or light); // inkrement, Cursor-shift > i2c.write(0xC0 or light); > > Ein wirklich interssanter Fehler da er nicht nur bei Dir auftaucht.... :-) :-) :-) > > Dann wollte ich noch wissen, warum Du am Anfang mehrmals die gleichen Bytefolgen in das > PCF schreibst... das mit dem Low-Nibble 4 hab ich verstanden, Datenübergabe bei fallendem E... > > i2c.write(0x30 or light); //??? > i2c.write(0x30 or light); //??? > i2c.write(0x34 or light); // Function Set 8 Bit > i2c.write(0x30 or light); > sleep 2; > > i2c.write(0x30 or light); //??? > i2c.write(0x34 or light); // Function Set 8 Bit > i2c.write(0x30 or light); //??? > i2c.write(0x30 or light); > > Mein Display macht immer noch nicht was es soll, ich bin mir aber jetzt sicher, das ich es nicht falsch rum > (also SEIKO-Zählweise) angeschlossen hab.... wenn dem so wäre, lägen auf D6 und D7 Masse und + 5V an... > ich glaube nicht, das sich das Display dann ausser mit einer Qualmwolke gemeldet hätte ;-) > Anscheinend ist der Controller aber doch etwas anders / empfindlicher als der übliche 44780 > > Dann möchte ich noch eine Änderung des Funktionskopes von init anregen. > Man muß vor jedem init ein setpcf machen da byte PCF; nicht initialisiert ist. > Bei mehreren Displays entsprechend jedesmal vor dem init und dann pro LCD ein init... > mit: > > function init (byte pcfnr) //!!! > { > if pcfnr > 7 PCF=((pcfnr+16) shl 1)or 64; else PCF=(pcfnr shl 1) or 64; //!!! > light=light and 8; > i2c.start(PCF); > > könnte man sich das sparen und es kommt keiner auf die Idee, das setpcf vor dem init zu vergessen... > denn dann muß ja pcflcd.init(displaynr); aufgerufen werden und byte PCF; bekommt damit zwangsweise > ein Wert. Die Funktion setpcf muß aber bleiben damit im Betrieb die Displays umgeschaltet werden können. > Das sehe ich nicht als Fehler sondern eher als "Verbesserungsvorschlag". > > Gruß Rolf
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB