Für dieses Forum muß Javascript im Browser aktiviert werden!
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 Frank, > > > Ich habe Dein Programm auf die C-control geladen, leider funktioniert es immer noch nicht. Hier ein kleiner Auszug: > > 3462 Error 24234<>24261 3464 Error 24248<>24088 > > 3470 Error 24290<>24280 3472 Error 24304<>32496 3474 Error 24318<>32510 > > 3476 Error 24332<>32556 3478 Error 24346<>32570 3480 Error 24360<>32552 > > 3482 Error 24374<>32566 3484 Error 24388<>32612 und so weiter! > > Was mache ich falsch? Meine Haussteuerung funktioniert einwandfrei. Werte im > > eeprom ablegen und auslesen geht super. > > Es sieht nach Übertragungsfehler am Bus aus. > "Error 24234<>24261" heißt, daß das geschriebene Byte nicht mit dem gelesenen übereinstimmt. > Der erste Wert ist der geschriebene, der zweite der zurückgelesene. > Das High-Byte scheint in vielen Fällen korrekt zu sein, das Low-Byte ist immer fehlerhaft. > Jetzt ist noch zu klären, ob die Übertragungsfehler bereits beim Schreiben auftreten, oder > erst beim Auslesen. > > Was hängt noch alles am Bus bzw. kannst Du testweise nur das RAM-Device am I²C-Bus anschließen? > Du kannst dann als erstes nur das Device auslesen, ohne es nochmals zu beschreiben: > <code>const RAM4Addr=10; > > thread main > {long i;int x,y;long timer; > hwcom.setspeed(8); > hwcom.clr(); > hwcom.print("Version: "); > hwcom.num(ramhs4.getVersion(RAM4Addr)); > hwcom.ret(); > > hwcom.print("Reading RAM ... "); > hwcom.ret(); > for i=0...16000/*0x7FFFE*/ step 2 > { > if (i%512)==0 > { > hwcom.put(13); > hwcom.num(i); > }//*/ > x=ramhs4.readint(RAM4Addr,i); > y=((i*7) and 0xFFFF); > if x!=y > { > hwcom.put(13); > hwcom.num(i); > hwcom.print(" Error "); > hwcom.num(y); > hwcom.print("<>"); > hwcom.num(x); > hwcom.ret(); > } > } > hwcom.put(13); > hwcom.num(i); > hwcom.ret(); > hwcom.print("Ready"); > hwcom.ret(); > quit 1; > }</code> > > Wenn nun keine Fehler angezeigt werden, finden während dem Lesen Übertragungsfehler statt. > Wenn aber Fehler angezeigt werden, lasse das ursprüngliche Programm nochmals laufen, > um das RAM-Device nochmals zu beschreiben. > Wenn nun keine Datenfehler gemeldet werden, wird der Bus wahrscheinlich bereits im > Grenzbereich betrieben. > Abhilfe würden dann Puffer oder Tranceiver für den restlichen Bus schaffen. (je nach Buslänge) > > MfG André H.