Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Magistrala I2C w Delphi

08 Aug 2005 13:37 2965 2
  • Level 16  
    Witam serdecznie :)
    Jakis czas temu musialem wykonac komputerowe sterowanie 100 urzadzen, zrobilem to za pomoca ukladow PCF 8574 podlaczonych do portu LPT komputera. Pomyslalem, ze rozbuduje biblioteke tak aby mozna bylo sterowac dowolnym ukladem lub urzadzeniem za pomocy magistrali I2C.
    Oto dostepne funkcje i procedury:
    Code:

      procedure I2CStart;
      procedure I2CStop;
      function I2CRead: Byte;
      function I2CWrite(Data: Byte): Boolean;
      function I2CReadByte(Address: Byte): Byte;
      function I2CWriteByte(Address: Byte; Data: Byte): Boolean;


    Funkcje I2CReadByte oraz I2CWriteByte przeznaczone sa specjalnie do obslugi ukladow PCF8574, aby zapisac wartosc wystarczy wydac polecenie np:
    Code:

      I2CWriteByte(64, 255)

    Spowoduje to ustawienie wszystkich pinow ukladu w stan wysoki. Odczyt przeprowadza sie analogicznie.

    Teraz podam przyklad w jaki sposob dokonac zapisu oraz odczytu danych z popularnej pamieci 24c02 lub 24c04

    Zapis pod dowolny adres:
    Code:

      I2CStart;           //wlaczamy transmisje I2C
      I2CWrite(160);  //adres pamieci do zapisu
      I2CWrite(15);    //adres komorki pamieci np 15
      I2CWrite(255);  //zapisujemy wartosc do komorki np 255
      I2CStop;          //koniec transmisji I2C
      sleep(10);  //czas potrzebny na zapisanie danych w pamięci;
     


    Odczyt spod dowolnego adresu pamieci:
    Code:

    var
      dane: byte;
    begin
      I2CStart;       //wlaczamy transmisje I2C
      I2CWrite(160);  //adres pamieci do zapisu
      I2CWrite(15);    //adres komorki pamieci np 15
      I2CStart;       //ponowny start transmisji
      I2CWrite(161);  //adres pamieci do odczytu
      dane:=I2CRead;  //pobranie wartosci z komorki
      I2CStop;        //koniec transmisji I2C
    end;


    Jak widac obsluga I2C przypomina obsluge spod Bascoma, wiec jest banalnie prosta ;-)

    Teraz przedstawie w jaki sposob mozemy podlaczyc dodowlny uklad lub system obslugujacy magistrale I2C do portu LPT naszego komputera.

    Schemat polaczen:
    Magistrala I2C w Delphi

    W zalaczniku znajduje sie biblioteka I2C.pas oraz przyklady obslugi.
    Działa na systemach 95/98/Me/Nt/2000/XP

    Mam nadzieje, ze sie to komus przyda :)
    Pozdr.

    Ps. Jesli ktos chce zebym przepisal to na jezyk C to nie ma sprawy, napiszcie tylko w jaki sposob obsluzyc port LPT
    Attachments:
    [Szkolenie 22.06.2021, g.9.30] Zabezpieczenia Internetu Rzeczy (IoT) programowe i sprzętowe. Zarejestruj się za darmo
  • Level 14  
    Powiem ze zaciekawilo mnie to - ale ja bym sie zapytal z troszke innej strony:
    Czy jest taka mozliwosc zeby podczas naprawy tv na takiej szynie, mozna bylo z komputera symulowac uklady zalozmy padniete.
    Albo nawet symulowac sam procesor(przy pomocy odpowiedniego interfejsu)
    Czy cos takiego juz istnieje??
    Przepraszam jak pisze glupoty.
  • Level 16  
    nie słyszałem o takich programach ale pomysł jest swietny chociaz trudny w realizacji. Trzeba wziac pod uwage kilka problemow np czestotliwosc pracy ukladow/szybkosc danych przesylanych. Symulacje bramek logicznych, licznikow sa bardzo proste, ale nad skomplikowanymi ukladami trzeba by bylo troche czasu posiedziec :P zbadac warunki pracy itp...