ok, soeben kontrolliert laut rnbfra doku seite 19. alle jumper stimmen. aum bus is nix angeschlossen, geht trotzdem nicht. ich verstehs nicht.....
Druckbare Version
ok, soeben kontrolliert laut rnbfra doku seite 19. alle jumper stimmen. aum bus is nix angeschlossen, geht trotzdem nicht. ich verstehs nicht.....
Hmm, da fällt mir momentan auch nix mehr ein. Notfalls musst du dir kleines Testprogramm schreiben das die Ports mal im Sekundentakt auf Low / High schaltet und Leitungen ausmessen. Am besten alle PCF´s rausziehen und erts mit dem Controller den Test machen und dann Stück für Stück den nächsten PCF dazu. Ich weiss ja nicht was du gemacht hast, vielleicht hast du irgendwann mal irgendwelche Stecker verwechselt und tatsächlich mehrer I2C-Bausteine gehimmelt.
Kommt aber selten vor! Es hilft nix, du musst systematisch suchen.
Außer Software und Jumpern kann es ja sonst nix sein.
Hallo!
Ich hab mal drüber geschlafen, hat leider nix gebracht :-(
Basic kann ich leider nicht wirklich. Ich hab mir was zusammengestoppelt, von dem ich dachte es könnte richtig sein:
Erst mal: stimmt das überhaupt?Code:$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Scl = Portc.0
Config Sda = Portc.1
I2cinit
I2cstart
Portc.0 = 1
Portc.1 = 1
Waitms 1000
Portc.0 = 0
Portc.1 = 0
Waitms 1000
return
Ich hab das dann in den Controller geladen und zw. Gnd und Pin 23 (SDA) Spannung (DC) gemessen. Im sekundentakt wecheslte die Spannung zw. 1,00V und 1,87V.
Klingt doch schon mal ganz gut würd ich sagen. Das Lichtspiel mit den Leds geht aber natürlich noch lang nicht aufgrund dieser weisheit :-(
Wie soll ich weiter vorgehen? Bausteine tauschen - welche?
mfg, Dave
Hi, Dave !
Da ist doch noch der CoProcessor mit seinem I2C. Ist der mit der Servo-Ware überhaupt richtig als Slave definiert ? Sonst spuckt uns der in die Suppe. (War der beim ersten LED Test, der ja gefunzt hat vielleicht gar nicht drin oder noch nicht geladen ?)
Möglicher Versuch: CoProcessor raus
Möglicher Versuch: Mega32 raus und das Ganze Testen mit dem CoProcessor, (umstecken, Test laden) mußt ja eigentlich auch gehen.
BASIC: is soweit o.k. ABER !!!
für 0 u. 1 sind 1 V <> 1.87 V allerdings unbrauchbar. da hats was mit den Pullups
ich bin auch dran robert mfg ](*,)
EDIT: Noch was: Es gibt eine vordefinierte Variable "Err". (=Fehler)
Nach jedem I2C Befehl abfragen (print)
Den CoProcessor hab ich gelöscht. Der pfuscht nicht rein. war aber beim ersten Test auch drin.
Gleiches Phänomän: springt zw. 1V und 1,87V herumZitat:
Möglicher Versuch: CoProcessor raus
Laden geht, aber beim messen hab ich auf der SDA fix: 1,93V und auf er SCL fix 4,97V. Herumspringen tut da nix mehr.Zitat:
Möglicher Versuch: Mega32 raus und das Ganze Testen mit dem CoProcessor, (umstecken, Test laden) musst ja eigentlich auch gehen.
Die Pullups sollten doch schon auf dem Board sein.... 8-[
code sieht jetzt so aus:
Wenn ich das in den CoCOntroller lade tut sich nix im Terminal (eh klar, dürfte keine direkte Verbindung zum MAX32 haben. Wenn ich es in den M32 lade, kommt im Terminal die 0Code:$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Scl = Portc.0
Config Sda = Portc.1
I2cinit
I2cstart
Portc.0 = 1
Print Err
Portc.1 = 1
Print Err
Waitms 1000
Portc.0 = 0
Print Err
Portc.1 = 0
Print Err
Waitms 1000
return
sieht so aus:
0
0
0
0
usw. ;-)
was kann ich noch machen?
mfg
ok, weiter gehts mit der fehlersuche...
Ich hab jetzt zw. +5V und SDA bzw. zw. +5V und SCL 10k Pullups gehängt. Das ganze einfach am I2C Bus am board (an dieser einen Schwarzen Buchse) angeschlossen.
Alle Controller rein, und Spannung angelegt.
Programm geladen, folgendes Passiert:
Die Lampen blinken natürlich nicht, aber dafür hab ich jetzt andere werte:
Die SCl bleibt weiterhin Stur auf ihren 4,97V und die SDA springt jetzt im sekundentakt zw. 1,55V und 2,22V hin und her.
Ist das besser?
Poste dein Testprogramm! Nimm erst mal alle PCF´s raus! Und teste dann den Pegel. Pullups brauchst du wie gesagt nicht, solange nicht noch mehrere externe I2C Bausteine dran hängen.
Wenn du Ports richtig ein und ausschaltest dann ist das natürlich nix mit dem Pegel den du da beschreibst, deutet dann auf defekten Baustein hin. Daher erst mal aus IC-Fassung ziehen und dann Stück für Stück vorgehen.
Hi, für digital sind diese alle Werte unisant, die müssen < 1 / > 4 sein.
Die eingebauten Pullups werden gesetzt durch: (nach i2cinit)
PORTC.0 = 1
PORTC.1 = 1
Dann gibts noch einen generellen Pullup Mörder, der MUSS Null sein
SFIOR.2 = 0
mögliche Messung: Alle I2C Brüder raus (ausser MEGA)
Wenn NUR der Mega drin ist, (geladen, nur i2cInit und s.o) müssen SCL u. SDA wenigstens ~4 V zeigen (High)
Ist das nicht, hat's schon was.
Wenn ja-->
einmal NUR den LED pcf wieder rein / Messen ?
VERGISS beim Testen nicht:
CONFIG I2CDELAY = 5 oder sowas
(laut Datasheet erforderlicht, und wir wissen nicht, was der Basic treibt)
nun ? mfg robert
PS: Bei Print eine Text vor die Zahle dazuschreiben
das Testprogramm mit dem ich die SDA und SCL leitungen auf high und low schalte is ja etwas weiter oben gepostet.
und das Testprogramm mit dem ich die Leds zum leuchten bringen will ist dieses hier: (ist direkt von der Roboterboard CD)
Pullups raus, alle PCFs raus, Testprogramm (für die Pegel - nicht das für die Leds) ist noch im M32:Code:'###################################################
'Testprogramm 1
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.2
'
'Aufgabe:
'Ausgabe über PowerPort per I2C testen indem
'die vier Led´s im lauflichtartig leuchten
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################
$regfile = "m32def.dat"
Const Writepowerport_adr = &H72 'I2C Adr PCF 2
Const Readpowerport_adr = &H73 'I2C Adr PCF 2
Dim I2cdaten As Byte 'Datenbyte aus PCF8574
Dim I As Byte
$crystal = 8000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
I2cinit
'******** Diese 4 Befehle sind nur ab RNBFRA Version 1.2 (nicht in V 1.1)
' notwendig und bzw. möglich (erweiterte Energiesparfunktion und LED´s)
' Bei Board 1.1 bitte auskommentieren oder löschen
config I2CDELAY = 5
I2cstart
I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also PeripherieAktiv)
I2cwbyte &B00000010 'Datenbyte an PCF3
I2cstop
'*********
I = 0
I2cdaten = 1
Do
I2cdaten = I2cdaten * 2
If I2cdaten > 16 Then I2cdaten = 1
I2cstart
I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken
I2cwbyte I2cdaten 'Datenbyte an PCF
I2cstop
Incr I
Waitms 100
Print "hallo"
Loop
End
Keine der 4 Leds leuchtet (logisch)
SCL: 4,97V
SDA: 1,25V bzw. 2,41V - im Sekundentakt
Schalte ich denn mit diesem Programm die Ports richtig ein und aus, oder mach ich da was falsch?Zitat:
Wenn du Ports richtig ein und ausschaltest dann ist das natürlich nix mit dem Pegel den du da beschreibst, deutet dann auf defekten Baustein hin.
gut:Zitat:
mögliche Messung: Alle I2C Brüder raus (ausser MEGA)
Wenn NUR der Mega drin ist, (geladen, nur i2cInit und s.o) müssen SCL u. SDA wenigstens ~4 V zeigen (High)
Ist das nicht, hat's schon was.
alle pcf raus, cocontroller raus, das geladen:
SCL: 4,97VCode:$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Scl = Portc.0
Config Sda = Portc.1
I2cinit
SDA: 2,41V
was nun?