PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C klappt bei mir nicht



Matthias Mikysek
14.02.2005, 20:10
Hallo AVR Gemeinde.

ich habe ein Problem mit den I2C Routinen in Bascom. Ich möchte ein EEPROM 24C16 lesen/schreiben. Merkwürdiger weise klappt das bei mir nur wenn ich mit $lib "I2C_TWI.LBX" den Hardware TWI einschalte. wenn ich die software routinen benutze dann liest er Mist. und jetzt kommts wenn ich mir die Signale ansehe, dann sehen die super aus im !!!nicht funktionierenden!! software modus und wenn´s klappt mit hardware TWI dann sind das ziemlich krüppelige Dreiecke. Außerdem scheint im hardware TWI Betrieb die steuerung der Taktgeschwindigkeit mittels i2cdelay nicht zu klappen.


HILFE DRINGEND

Gruß Matthias

tobimc
14.02.2005, 20:19
HI

Um Gottes willen - WIE Benutzt du den Hardware TWI mit HIGH-LEVEL?
Und was ist das für ne lib?

Die Taktrate kann man meines Wissens zwischen drei wählen;
Normal (Standard Mode - 100Khz); Fast (Fast Mode 400 Khz) und High Speed (High-Speed Mode 3,4Mhz).

Klar, dass bei Hardware TWI i2cdelay nicht funktioniert. Hat damit ja nix zu tun.

Es ist mir aber nicht bewusst, dass man unter BASCOM HIGH-LEVEL-mäßig den Hardware TWI ansteuern kann.
(Ausser man schreibt in die dazugehörigen Register...)

Liebe Grüße, Tobi

Matthias Mikysek
14.02.2005, 20:23
das steht in der bascom help:

By default BASCOM will use software routines when you use I2C statements. This because when the first AVR chips were introduced, there was no TWI yet.

So you can use I2C on every AVR chip. Some newer AVR chips have build in hardware support for I2C. This is called the TWI interface. (Two Wire Interface).
Read more about I2C in the hardware section.

To force BASCOM to use the TWI, you need to insert the following statement into your code:
$LIB "I2C_TWI.LBX"

You also need to choose the correct SCL and SDA pins with the CONFIG SCL and CONFIG SDA statements.

The TWI will save code but the disadvantage is that you can only use the fixed SCL and SDA pins.



wie gesagt damit klappt die kommunikation, aber so wie das in all den Threads und in der Literatur beschrieben ist nicht.


Matthias

tobimc
14.02.2005, 20:35
HI

Benutzt du eine BETA-Version? Oder welche Version benutzt du?
Bei mir gibt's die lib garnicht! Ich habe allerdings noch die xy.7.4

Bin ich so rückständig, oder geht der Hardware TWI mit BASCOM doch??

Hast du...
You also need to choose the correct SCL and SDA pins with the CONFIG SCL and CONFIG SDA statements.
?

Könntest du deinen Code posten?

Ganz liebe Grüße,
Tobi

Matthias Mikysek
14.02.2005, 20:35
Also ich habe gerade mein Problem selbst gelöst. Mit "Config twi= 50000" kann ich nämlich auch mit der TWI Unterstützung die Clock anpassen.
Somit klappt es nun (Habe nämlich ellenlange Kabel in meiner Endanwendung)
Aber ohne die benutzung des TWI klappt es bei mit immer noch nicht.
Ich melde mich dann wieder wenn ich das ganze mal mit nem Chip ohne TWI machen muss.

Trotzdem Danke

Gruß Matthias

Matthias Mikysek
14.02.2005, 20:40
Hallo,

ich benutze 1.11.7.6 Ja das ist ne Beta.
Kann ja sein das deshalb nicht so klappt. Falls Mark das liest: kann das sein?

tobimc
14.02.2005, 20:42
HI

Theoretisch... Da basteln die Jungs von MCS schon länger rum.
Warum willst du die Hardware nicht nutzen, wen nur die funktioniert?

Ganz liebe Grüße,
Tobi

Matthias Mikysek
14.02.2005, 20:49
Hi,

tu ich ja jetzt. spart auch codesize. Aber es wurmt mich das das nicht auf die herkömmliche Weise klappt auch wenn die eigentlich schlechter ist.
Sag mal, kann ich eigentlich auch nach 1.11.7.4 "downgraden"

Gruß Matthes

tobimc
14.02.2005, 21:00
HI

Klar; Deinstallier' die BETA, und zie' dir die 1.11.7.7 Trial.
(1.11.7.4 ist etwas älter :oops:)
Was du aber unbedingt brauchst, ist die neue i2c.lib, gibt's auf jeden Fall bei MCS, und ich denke auch im Donloadbereich...

Ich freu' mich schon, wen ich den I²C des neuen Robbys über Hardware steuern kann... :D
Aber klar; das würde mcih auch fuxen.

Falls es dich tröstet: Ich habe auch Probleme damit. Deshalb will ich auch unbedingt den Hardware TWI nutzen... :D

Siehe:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=6810&highlight=

Ganz liebe Grüße,
Tobi

pebisoft
14.02.2005, 21:42
hallo, im forum "avr risc" habe ich unter "externer speicher" 2 routinen, wo ich ein i2c eeprom 24c256 (32kbyte) schreibe und lese.
musst nur deine adresse des eeprom eintragen.
mfg pebisoft

IngBo
15.02.2005, 05:14
Die Taktrate kann man meines Wissens zwischen drei wählen;
Normal (Standard Mode - 100Khz); Fast (Fast Mode 400 Khz) und High Speed (High-Speed Mode 3,4Mhz).
Ist das Soft- oder Hardware bedingt? Ich kann bei mir jede beliebige Taktrate bis 400 kHz einstellen.

15.02.2005, 08:12
hallo, musst im datenblatt des i2c eeürom schauen bis wie wiet man gehen kann, dann einstellen.
lass das einstellen sein, schliess dein eeprom an lade das beispielprog, stelle deine adresse ein und ab geht die post. brauchst dich nicht um andere sachen kümmern.
mfg pebisoft

15.02.2005, 08:13
hallo, musst im datenblatt des i2c eeprom schauen bis wie weit man gehen kann, dann einstellen.
lass das einstellen sein, schliess dein eeprom an ,lade das beispielprog, stelle deine adresse ein und ab geht die post. brauchst dich nicht um andere sachen kümmern. es geht alles wie von selbst, dir ging es doch wohl darum, das du das eeprom lesen und schreiben kannst.
mfg pebisoft

tobimc
15.02.2005, 17:20
Hi!


Ist das Soft- oder Hardware bedingt?
Hardware.


Ich kann bei mir jede beliebige Taktrate bis 400 kHz einstellen.
Klar; ist ja auch eine Softwareemulation.

Pebisoft hat recht, man sollte am besten im Standardmode arbeiten.
DENN: Manche I²C-Chips kommen mit bis zu 3,4 Mhz nicht mit.
Dass ist für manche einfach zu schnell.

Im Atmel Datenblatt findet sich der I²C-Abschnitt unter "Two-whire Serial Interfave". Da einfach mal reinlesen.

Ganz liebe Grüße,
Tobi

IngBo
16.02.2005, 06:27
Zitat:
Ist das Soft- oder Hardware bedingt?

Hardware.

Zitat:
Ich kann bei mir jede beliebige Taktrate bis 400 kHz einstellen.

Klar; ist ja auch eine Softwareemulation.

Du meinst vielleicht den µC, den iher verwendet.

Mein LPC9xx oder LPC21xx hat eine integrierte I2C-Schnittstelle. Ich brauche nur die Regs mit den entsprechenden Werte zu beschreiben und die Taktrate ist schon eingestellt (bis 400 kHz). Es ist keine Softwareemulation!!!!!

49, 100, 101 oder 107 oder 399kHz Der Kontroller macht alles selber!!!


IngBo