Hey, in der datenblatt von deiner LCD steht, dass die Pullups möglichst klein sein soll: 1k8...10K, vllt, wenn du z.B: 4.7k nimmst passiert es seltener....
habe jetzt die beiden widerstände r14 und r15 entfernt. jetzt passiert folgendes:Zitat von damaltor
der pcf arbeitet weiterhin einwandfrei.
wenn die flaschen jumper gesetzt werden, dann ist die led zuerst mal rot, und die an den pcf angeschlossenen leds bleiben aus. allerdings: sowie man den asuro, spezielle die jumper (bzw deren pins) berührt oder in die nähe kommt, spricht der baustein an und macht das, was er bei gesetzten jumpern auch mache sollte. die led wird grün, und der portbaustein setzt die ports entsprechend so dass die an ihn angeschlossenen leds leuchten.
wenn alle jumper entfernt wurden wird es ein wenig komplexer, dann passiert das nur noch seehr selten.
wenn ich die ganze erweiterungsplatine entferne, also NICHTS an die leitungen SDA und SCL angeschlossen ist (auch keine pullups, die sind auf der erweiterungsplatine), dann ist die led zuerst grün, und wird dan rot, gelegentlich wieder grün... wechelhaft eben =) scheint so, als wenn bei undefiniertem zustand der leitungen nix halbes und nix ganzes passiert.
meine frage: hat der atmega nicht eigene, integrierte pullups? wie werden die aktiviert (also für adc3 und adc2)? wie vertragen die sich mit den pullups die auf der erweiterungsplatine drauf sind? und vor allem: werden die evtl schon in der i2cmaster library angesprochen?
Hey, in der datenblatt von deiner LCD steht, dass die Pullups möglichst klein sein soll: 1k8...10K, vllt, wenn du z.B: 4.7k nimmst passiert es seltener....
Gruß Raid
Der ^^ Mann
problem habe nur noch einen leider
edit: ich esel habe doch 2 beim alten asuro ist noch einer drin ich werde e heute mittag versuchen
So jetzt habe ich hin bekommen das er sich nemmer ausschaltet sobald die statusLED grün wird ich glaube es hängt mit der i2cmaster.S datei zusammen ich komme immer ein stückchen näher habe ich das gefühl nur jetzt weiss ich leider nicht mehr weiter habe alles in hexdez ausgerechnet und auf ein blatt geschrieben dann habe ich von m.a.r.v.i.n den link noch mal angeschaut und es so eingetragen (alles) wie es auch da stand nur leider sehe ich immer noch kein curser und kein text
Hi probiere dies mal:
Code:#include "asuro.h" #include "i2cmaster.h" #define DEVICE 0x74 // LCD I2C Address int main(void) { Init(); i2c_init(); // LCD Init i2c_start_wait(DEVICE+I2C_WRITE); i2c_write(0x00); i2c_write(0x2C); i2c_write(0x0E); i2c_write(0x06); i2c_stop(); // Write P i2c_start_wait(DEVICE+I2C_WRITE); i2c_write(0x40); i2c_write(0x50); i2c_stop(); while(1); return 0; }
Gruß Raid
Der ^^ Mann
Hi,
ich hab mir auch noch mal das Datenblatt angeschaut und komme auf das gleiche Ergebnis wie damaltor und raid_ox.
Hier noch mal mein Beispielcode für das EA T123. Initialisierung und Textausgabe in Subroutinen. Delay auf 1ms reduziert. Status LED sollte eine halbe Sekunde gelb leuchten, wenn Init erfolgreich war, dann grün. Rot bei Fehler.
Ansonsten zur Hardware noch den Tip, am Kontrastregler drehen. Die Kontrastspannung VEE sollte ca 1V oder darunter betragen.Code:#include <avr/io.h> #include "i2cmaster.h" #include "asuro.h" #define Display 0x74 // device address of Display, see datasheet int lcd_init(void) { int ret=0; Msleep(500); ret = i2c_start(Display+I2C_WRITE); //hier wird der I2C bus gestartet und die adresse if ( ret ) //geschrieben { i2c_stop(); //sollte das nicht gehn, abbrechen return -1; } i2c_write(0x00); //controll byte (muss gesendet werden laut datenblatt) Msleep(1); i2c_write(0x2C); //die nächsten bitfolgen bzw werte sind aus dem daten- Msleep(1); //blatt kopiert. sollte eigentlich das display i2c_write(0x0E); //einschalten und den corsur nach oben Msleep(1); //links setzen. i2c_write(0x06); //einzige änderung: da nicht dual power sondern nicht //+5V und -5V) habe ich das G-bit auf 1 geändert. //single supply genutzt wird (also nur +5V und gnd und i2c_stop(); Msleep(10); return 0; } int lcd_write(char *text) { int ret=0; unsigned char i = 0; ret = i2c_start(Display+I2C_WRITE); //hier wird der I2C bus gestartet und die adresse if ( ret ) //geschrieben { i2c_stop(); //sollte das nicht gehn, abbrechen return -1; } i2c_write(0x40); //controll byte (muss gesendet werden laut datenblatt) while(text[i] != 0) { i2c_write(text[i++]); Msleep(1); } i2c_stop(); return 0; } int main(void) { int ret; Init(); i2c_init(); ret = lcd_init(); // LCD Initialisieren if (ret == 0) { StatusLED(YELLOW); ret = lcd_write("Test"); // LCD Textausgabe if (ret == 0) { Msleep(500); StatusLED(GREEN); } else StatusLED(RED); // Fehler beim LCD schreiben } else StatusLED(RED); // Fehler beim LCD init while(1); return 0; }
Jo ich komme auch immer auf das ergebniss ich glaube auch ganz erlich nicht daran das es daran ligt irgendwo irgend wie übersehe ich (wir) was ich weiss nur net was vllt ligt es wirklich an den 10k ohm was ich mir allerdings nicht vorstellen kann ich besorge mir auf der arbeit noch ein 4,7k ohm wiederstand beim asuro war der wiederstand nur noch 4 k ohm also denke ich das der kaputt ist in der zeit Suche ich was das zeug hält um den fehler zu finden werde vllt mal mit dem schreiben von m.a.r.v.i.n´s link der hat es ja offensichtlich hin bekommen
Irgendwie glaube ich das es daran hängt ob die codes richtig sind
Code:#define EAT123A-I2C 0x74 // device address of PFC 2116-C, see datasheet int main(void) { unsigned char ret; i2c_init(); // initialize I2C library // write 0x75 to EEPROM address 5 (Byte Write) i2c_start_wait(EAT123A-i2c+I2C_WRITE); // set device address and write mode i2c_write(0x05); // write address = 5 i2c_write(0x75); // write value 0x75 to EEPROM i2c_stop(); // set stop conditon = release bus // read previously written value back from PFC address 5 i2c_start_wait(EAT123A-i2c+I2C_WRITE); // set device address and write mode i2c_write(0x05); // write address = 5 i2c_rep_start(EAT123A-i2c+I2C_READ); // set device address and read mode ret = i2c_readNak(); // read one byte from EEPROM i2c_stop(); for(;;); }
Zitat von m.a.r.v.i.n
So weit kommt er nicht die LED wird grün und das wars die status LED wird nur gelb wenn ich den asuro an mache (leider)
dann scheint wirklich irgend etwas falsch angeschlossen zu sein oder das display ist wirklich defekt.
jo ich weiss ja auch net ich versuche es jetzt zuerst mal mit den 4,7k ohm wiederständen weil überall lese ich das es 4,7k ohm sein sollten und wenn das dann immer noch nichts bringt ruf ich bei connrad an und lasse mir ein neuen schicken. Ich poste dann morgen wieder was draus geworden ist mit den wiederständen
vielleicht hast du irgend eine Leiterbahn kaputtgemacht. Schick doch endlich ein closeup bild von deinem Asuro mit LCD, aufdem man die verbindung etc. sehen kann
Gruß Raid
Der ^^ Mann
Lesezeichen