Thema: Delphi I2C LM75 sensor

Einzelnen Beitrag anzeigen

yacdrak

Registriert seit: 22. Dez 2020
7 Beiträge
 
#5

AW: I2C LM75 sensor

  Alt 7. Jan 2021, 12:46
Guten Morgen, vielen Danke für eure Antwort. Ich benutze Delphi IDE für I2C.
1) Unit i2cusb ist die Bibliothek von Asynchron Pro aus Github. Das Problem, dass ich verpflichtet bin, diese Bib zu nutzen.
Ich bin mir sicher, dass die verkabel richtig aufgebaut sind. Aber bekomme ich 255 als Antwort. Irgendwie mein i2c Master liest nicht aus der Slave LM75, sondern aus der Bus allgemein.

Haupt Funktionen, die ich benutze sind :
1- function start_iic (MRX_ACK: boolean; dest: byte; mode: char): byte;
Die Funktion erzeugt einen Startrahmen mit der Zieladresse dest. Der Wert mode (r oder w) gibt die
Richtung der Übertragung an. Letztlich bestimmt der mode das niederstwertigste Bit der Adresse des
anzusprechenden I2C-Bausteins. Der boolesche Parameter MRX_ACK gibt an, ob ein Acknowledge beim
nächsten übertragenen Byte zu unterdrücken ist (false) oder nicht.

2- stop_iic
function stop_iic: byte;
erzeugt eine Stopp-Bedingung auf dem I2C-Bus. Rückgabewert siehe oben.
2.3.3 wr_byte_iic
function wr_byte_iic(b: byte ): byte;
schreibt – als Master-Transmitter – ein Byte auf den I2C-Bus. Rückgabewert siehe oben.


3- rd_byte_iic
function rd_byte_iic (var B: BYTE; NOACK: Boolean):byte;
liest ein Byte (als Master Receiver) vom I2C-Bus. (Bedingt durch den Aufbau des Geräts wird immer das
Byte ausgegeben, was vor der aktuellen Übertragung auf dem Bus zu beobachten war. Dieser Wert wird
in B übergeben. Der Parameter NOACK bewirkt – falls er auf true gesetzt wird – daß bei der nächsten
Übertragung ein negatives Acknowledge generiert wird. Rückgabewert siehe oben.


4- restart_iic
function restart_iic (MRX_ACK: boolean; dest: byte; mode: char ):byte;
erzeugt eine Start-Bedingung innerhalb einer laufenden Kommunikation. Die Parameterbeschreibungen
entsprechen denjenigen bei start_byte_iic. Rückgabewert siehe oben.


5- wr_byte_port
procedure wr_byte_port (zuSchreiben: byte);
schreibt ein Byte (zuSchreiben) auf den I/O-Ausgang des USB-ITS-Geräts. Man beachte die Beschaltung
des Ports! Erzeugt werden TTL-Signale.

6- rd_byte_port
procedure rd_byte_port (var gelesen: byte);
liest ein Byte (gelesen) vom I/O-Port des USB-ITS-Geräts. Die erkannten Spannungsbereiche sind TTLkonform.

7- Init
function Init (ComPortNr: byte): byte; overload; und
function Init (ComPortNr: byte; Takt: char): byte; overload;
dienen der Initialisierung des USB-ITS-Gerätes, verschiedener Timer und Konstanten. Eine dieser Funktionen ist zu Beginn der Arbeit mit dem System aufzurufen. Als Parameter erwartet Init die Nummer des
COM-Ports, an dem das Gerät zu finden ist. Weiterhin ist optional die Angabe des Bustaktes möglich.
Dafür sind die Werte SCL90, SCL45, SCL11 und SCL1_5 vorgesehen, die für 90 kHz, 45 Khz, 11 kHz
und 1,5 kHz stehen. Voreingestellt ist ein Wert von 90 kHz als I
2C-Bustakt (falls der Parameter Takt fortgelassen wird).

8- Is_Initialized
property Is_Initialized:boolean kann ausgelesen werden und zeigt – falls sie TRUE ist – an, daß
die Initialisierung des Gerätes und damit des I2C-Busses erfolgreich abgeschlossen wurde.

9- Relais_On
procedure relais_on läßt das Relais für die zusätzliche Busversorgung anziehen.
Bei den angesprochenen Relais handelt es sich um umschaltende Relais, die beidseitig beschaltet sind.
Möglicherweise kann auch die invertierte Bedienung den gewünschten Effekt erzeungen.

10- Relais_Off
procedure relais_off läßt das Relais für die zusätzliche Busversorgung abfallen.
Bei den angesprochenen Relais handelt es sich um umschaltende Relais, die beidseitig beschaltet sind.
Möglicherweise kann auch die invertierte Bedienung den gewünschten Effekt erzeungen.


Ich habe keine Lösung noch gefunden und ich versuche noch paar sachen. Wenn ihr Idee habt, bitte mir helfen.
Vielen Danke für eure Hilfe
  Mit Zitat antworten Zitat