nach der Umstellung von basvom 1.11.7.4 auf Version 1.11.7.7 funktionieren Programme mit I2C Routinen nicht mehr. Hat jemand eine Idee warum
nach der Umstellung von basvom 1.11.7.4 auf Version 1.11.7.7 funktionieren Programme mit I2C Routinen nicht mehr. Hat jemand eine Idee warum
HI
Du musst eine Library einbinden Namens: "i2c.lib"
Das machst du so:
...
$lib "i2c.lib"
...
Dann musst du mit
config sda = ...
und
config scl = ...
Die Ports definieren.
Anschließend irgendwo VOR den I²C Geschichten
i2cinit
aufrufen.
Und dann kannst du mittels
i2csend <addresse>, <byte>
Senden, oder mittels
i2creceive <addresse>, <variable>
empfangen.
also:
...
dim var as byte
$lib "i2c.lib"
config sda = portc.1
config scl = portc.0
i2cinit
i2csend &H40, 255
i2creceive &H42, var
...
Hoffe, es funktioniert...
Ganz liebe Grüße,
Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Hallo Tobias,
danke für die prompte und ausführliche Beschreibung.
Ich habe die I2C Schnittstelle mit verschiedenen Bausteinen schon seit einiger Zeit in Betrieb. Einer der Bausteine ist die Uhr PFC8583P
Unter Bascom AVR 1.11.7.4 lief das ganze auch ohne explizite Angabe von $lib "i2c.lib" und i2cinit. Ich habe diese Anweisungen jetzt in mein Programm aufgenommen und mit Bascom AVR 1.11.7.7 kompiliert
aber trotzdem gelingt es mir nicht die Uhr richtig zu lesen was unter 1.11.7.4 einwandfrei klappt. Meine Uhr zeigt nur noch FF FF FF an.
Ich nutze einen ATmega16L
Gruss Friedel
HI
Ahso. Ich sehe gerade, ich habe auch die .4.
Es kann sein, dass diese Version jetzt den Hardwase TWI unterstützt.
Hast du SDA und SCL an den TWI-Pins des Mega?
Schau mal im Internet. Es kann sein, dass man den TWI jetzt die den UART initialisieren muss.
Da bin ich im Moment überfragt.
Aber MCS haben immer gute Beispielprogramme auf ihrer Homepage.
Wir machen nur gerade einen blöden Ausflug.
Schlittenfahren. Als ob ich nix besseres zu tun hätte...
Liebe Grüße, Tobi
PS: Hast du mal geschaut (mit dem Oszi oder so), ob zum TWI auch was rauskommt?
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Hast du mal mit dem oszi geschaut, ob da was rauskommt?
An PC1 hängt die SCA Leitung, an PC0 die SCL Leitung
Es sind kurze Impulse von 5V nach Masse auf den SCA und SCL Leitungen egal ob mit 1.11.7.4 oder 1.11.7.7 kompiliert. Beim Auslesen
z.B des PCF8583P (Uhr) erhalte ich mit 1.11.7.4 laufend neue Zahlen (Uhrzeit) während nach der Kompilierung mit 1.11.7.7 lese ich nur 256 (FF) aus (z.B für die Sekunden)
HI
Kannst du 'n Bild davon manchen? Wär sehr aufschlussreich...
(Möglichst SDA und SCL untereinander, möglichst bei DIV = 2V und 50µs
So in der Art:
Bild hier
(Beispiel, wie das Signal aussehen sollte...)
)
Oder alternativ:
Zeigen sich Start- und Stopbedingungen?
Ist es ein normales I²C-Signal (Wie auf dem Bild oben?)?
Sehen die Signale von .4 und .7 unterschiedlich aus?
Wenn ja, welche Unterscheide?
Es ist möglich, dass du vor und nach deine I²C-Kommandos
i2cstart
und danach
i2cstop
aufrufen musst. Ist aber eher unwarscheinlich!
Ich habe gerade ein ähnliches Spielchen mit einem 24C64...
Wert = 255...
(Muss die Sache demnächst (morgen) mal unterm Oszi abchecken...
Das Problem ist aber glaub' ich eher, dass ich das C64 falsch ansteuere...)
Ganz liebe Grüße,
Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Hallo Tobias,
die Signale habe ich mit einem Logiktastkopf gemessen, ich kann nur erkennen Hi Low und Übergang von Hi nach Low. Aber ich habe auch einen 24C256 in meiner Schaltung. Dort schreibe ich mit dem alten Compiler eine Zahl x hinein und kann sie auch wieder auslesen. Mit dem neuen Compiler lese ich immer 255 aus egal was ich rein schreibe. Ich glaube daher nicht daß Du den C64 falsch ansteuerst.
Ich bin mal gespannt was dein Oszi bei deinem 24C64 sagt.
Liebe Grüsse aus Mainz
Friedel
Hi
Oho! Wieviele KBs hat das 256? Ist das zum 24c64 pinkompatibel?
Könntest du mir deinen Quellcode zum 24C256 schicken?? (Wär' echt super!)
Mich hat das Datenblatt etwas verwirrt...
Ich bin guter Dinge, dass der I²C funzt... ich denke, dass da igendein Fehler drin ist...
Achso. Logiktastkopf...
Hm.
Ich glaube nämlich, dass bei dir letztendlich kein gescheites I²C-Signal hinten rauskommt.
War bei mir auch so.
Wie könnte man das rausfinden?
Ganz liebe Grüße aus Bad Schussenried ()
Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Ich habe von Frank erfahren, dass mit der I²Clib was nicht passen soll bzw. dass da ein Fehler drin steckt.
Probiers mal mit Deiner alten version oder schau mal nach ob es die jetzt bei mcselec im download gibt.
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
Lesezeichen