-
Hallo jörg!
Freude , es läuft. Ich sehe 255 auf dem LCD.( Eingänge offen ,ohne Widerstände nach +)
Wenn ich die Ports auf Masse runterziehe, habe ich eine entsprechende Anzeige.
Mit dem zweiten 8574.
Ich hatte das Leerzeichen hinter sysI2C_READ_ , nicht eingegeben.
'------------------------------------------
#show_i2c_read
gosub lcd_cls
gosub lcd_print:print "I2C Read";
#read_loop
gosub lcd_line2
gosub lcd_print:print "val=";
subcmd = I2C_read2
gosub lcd_write_byte 'lcd_write_hex ist im Programm I2C-LCD-2.bas nicht enthalten
goto read_loop
'------------------------------------------
#I2C_READ2
sys I2C_READ_ I2C_ADDR2 'wichtig hinter I2C_READ_ ,muss ein Leerzeichen
return
'------------------------------------------
Danke nochmal für Deine Hilfe :D
-
Pull-Ups:
Ich meine, bei den IN ports des PCF gehören die eigentlich schon hin, sonst floaten die.
Du hattest in Deinem ersten Schaltplan "LEDs über I2C steuern" eigene Pull-Ups an den SDA und SCL Leitungen; die lass ich immer weg, weil die laut Schaltplan ja schon auf dem Mainboard sind, wie ja auch auf der CC1 Unit (weiss nicht, ob auch auf der M-Unit).
LCD_WRITE_HEX und BIN sind anscheinend neu:
Code:
#LCD_WRITE_HEX ' writes SUBCMD as 2 hex digits ("0".."9","A".."F") to LCD
' IN: SUBCMD (0..255)
' OUT: PARAM and SUBCMD modified; LCD 2 next chars modified
gosub get_hex ' HBYTE and LBYTE contain the printable nibbles
subcmd = hbyte : gosub lcd_writechar
subcmd = lbyte : goto lcd_writechar
#LCD_WRITE_BITS ' writes SUBCMD as 8 bin digits ("0","1") to LCD
' IN: SUBCMD (0..255)
' OUT: PARAM and SUBCMD modified; LCD 8 next chars modified
lbyte = subcmd
for hbyte = 0 to 7
subcmd = &H30 : if lbyte > 127 then subcmd = &H31
gosub lcd_writechar
lbyte = lbyte shl 1
next hbyte
return
Bevor ich nach London fahre, schicke ich noch mal die aktuellen Programme, falls mein upload space das zuässt.
-
Vorsicht, böse Software-Falle:
Vor meinen Tests war ich mir unsicher, ob beim Lesen vom I2C Bus das Ergebnis in HBYTE oder in LBYTE ankommt ( siehe ). Irgend wie hatte das nicht mit meinen anderen Tests zusammen gepasst. Jetzt weiss ich, warum:
In den CCRP5 Basic-Programmen steht immer:
define LBYTE byte[1]
define HBYTE byte[2]
Damit lag für mich nahe:
1. CCBASIC (und doch wohl auch der MC selbst) verwendet die "first-low-then-high" Speicherung von 16-bit Werten
2. Wenn ich ergänze
define PARAM word[1]
dann kriege ich in LBYTE das low byte von PARAM, und in HBYTE eben das high byte.
Dem ist aber NICHT so:
Sowohl CCBASIC als auch der MC selbst speichern zuerst das HIGH byte, und dann das LOW byte von 16-bit Werten.
Die Namen LBYTE / HBYTE sind wirklich GROBER Unfug, wenn nicht noch Schlimmeres
Ich befürchte aber, das war noch nicht mal "just to confuse the Russians"!!!
-
Hallo jörg !
Stimmt die Pull UPs sind schon drauf (werde ich wieder auslöten)
Ich habe jetzt auf meiner Erweiterungsplatine saubere 5 Volt !
Ich habe einen Low Drop Spannungsregler LT 1085CT-5 / 3A aufgelötet.
Sehr beruhigendes Gefühl.
Die Hauptplatine von Robby läuft noch mit 7 Volt.
-
Hallo JanPeter:
Gibts da nicht Probleme, weil ja SDA und SCL mit +7 V am PCF ankommen, und das ist weit mehr als die +5 V Versorgungs-Spannung am PCF?
Oder:
Vielleicht sind ja die Ausgangs-Ports von der CPU bei HI sowieso gar nicht auf +7 V, sondern eher auf ca. 5 V --- das wäre super, denn dann könnten wir alle den Robby genau so stabilisieren wie Du das gemacht hast. Das könnte ALLE Spannungs-Probleme endgültig beheben!!!
---> Kannst Du das bitte ausmessen? Auch der Rückweg "HI vom PCF (5V) an die CPU (7V)" muss ja gehen.
-
Hallo jörg!
Also Probleme gibt es nicht, alles läuft!
Du hast recht ich habe nachgemessen, Robby gibt am SDA 7 Volt aus
wird aber erkannt am PCF, und PCF gibt 5 Volt aus und wird auch erkannt.
Bis jetzt läuft alles über 5 Stunden.
Normalerweise darf das Eingangssignal vom PCF nur + 0,5 Volt gegenüber der Betriebsspannung sein!
Aber das ist warscheinlich auch so eine Sache , wie DIE HARD sie beschrieben hat , mit der erhöhten Betriebsspannung.
Ich habe schon versucht Widerstände in den SDA und SCL einzubauen, aber bisher ohne Erfolg.
Ich bleibe dran!
-
-
Hallo jörg!
Das ist so schön!
Ich habe eine Lösung, hab alles mit dem Oszi nachgemessen.
Und momentan läuft es .
Also pro SDA und SCL jeweils gesehen von Robby , pro Signalleitung
,
drei Dioden in Reihe zur Erweiterungsplatine (in Durchlassrichtung)
und parallel eine Diode von PCF->Robby.
und ein Widerstand 10 K Ohm jeweils an SDA und SCL an Masse.(auf der Erweiterungsplatine)
Komme jetzt nicht mehr über 5 Volt an SDA und SCL am PCF.
-
Hallo jörg!
Ich wünsch Dir einen schönen Urlaub!
-
Danke,
ich bin grad dabei, das aktualisierten CCBASIC Teil für Dich vorzubereiten.