Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

I2C jak zapytać o adres urządzenia

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:
I2C jak zapytać o adres urządzenia

Postautor: slawcio » 9 sie 2004, o 08:12

Witam wszystkich
Mam takie pytanie jak można zapytać o adres urządzeń podłączonych do magistrali I2C. Prosiłbym o odpowiedź.

Pozdrawiam wszystkich

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 9 sie 2004, o 10:54

No jeśli piszesz w Bascomie, to on generuje zmienną ERR. Jesli pojawia sie jakiś błąd, to ta zmienna przyjmuje wartość jeden. A więc, odpytujesz wszystkie adresy po kolei po szynie i za każdym razem sprawdzasz wartość zmienej: jeśli 0 to jest w systemie układ o takim adresie, jesli ! to nie ma. Jeśli programujesz w innym jezyku i nie ma tam podobnych ułatwień, to układy I2C odpowiadają na wywołanie swojego adresu i musisz sprawdzać, czy ta odpowiedź się pojawia, czy nie. A;e do tego, to już musisz poczytać specyfikację protokołu I2C

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Dzięki

Postautor: slawcio » 9 sie 2004, o 11:39

Dzięki za podpowiedź. Postaram się to wieczorem sprawdzić. Zobaczę czy mi to pomoże. Jak coś to jutro dam znać.

Pozdrawiam

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Czy to jest poprawme

Postautor: slawcio » 9 sie 2004, o 15:03

Napisałem taką procedurę odpytywania czy jest to poprawne. Proszę o odpowiedź.


Dim I As Long

For I = 1 To 500

I2csend I

Waitms 10

If Err = 0 Then
Cls
Lcd "Adres:" ; I ; ":" ; Err
End If

Next I

Pozdrawiam

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 9 sie 2004, o 15:38

Proponuję taką wersję:

Config Lcd = 16 * 1a : Cursor Off

Dim I As Byte

For I = 0 To 255
I2cstart
I2cwbyte I
Cls : Lcd "adres " ; I ; " ERR = " ; Err
I2cstop
Wait 1
Next I

End

Pisane z głowy, więc może wymagać jakichś drobnych poprawek (nie testowałem w uP). Adresy wystarczy przeszukiwać od 0 do 255, bo adresy układów i2c są ośmiobitowe.
I pamiętaj, że układy I2C mają dwa poprawne adresy różniące się o jeden. Pod jednym adresem można czytać z układu, a pod drugim zapisywać.

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Dzięki

Postautor: slawcio » 10 sie 2004, o 11:24

Dzięki za odpowiedź. Ja zrobiłe to w ten sposób.



Dim I As Long

Config Scl = Portb.7
Config Sda = Portb.6
Config I2cdelay = 100

Cls
Lcd "Trwa odczyt:"
Wait 1

For I = 1 To 500

I2cstart 'warunek startu
I2cwbyte I 'wyťlij adres uk¦adu
I2cstop 'warunek stopu
Waitms 10

If Err = 0 Then
Cls
Lcd "Adres:" ; I
Wait 2
End If

Next I


Przetestowałem to i działa bez żadnych zarzutów. Tylko że na jednej z pamięci mam aż 4 adresy.

Pozdrawiam Wszystkich

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

PCF

Postautor: slawcio » 10 sie 2004, o 11:27

Nie wiem tylko czemu wykryło mi adresy z zakresu 450 jak tą procedurką odpytywałem układ PCF. Nie miałem jeszcze czasu tego dokładniej sprawdzić ale jak to zrobię to dam znać. W poprzednim przypadku jak odpytywałem EEprom to otrzymałem adrsy 160 i 161

GasM
-
-
Posty:92
Rejestracja:4 lut 2004, o 11:57

Postautor: GasM » 10 sie 2004, o 19:21

450-256 = .....- adresy są 8-bitowe

Awatar użytkownika
Press
-
-
Posty:389
Rejestracja:10 mar 2004, o 16:21
Lokalizacja:Wrocław
Kontaktowanie:

Postautor: Press » 10 sie 2004, o 22:53

450-256 = .....- adresy są 8-bitowe
Dokładnie. Przecierz to napisałem. Czemu ludzie upierają się przy błedach ;)

slawcio
-
-
Posty:48
Rejestracja:28 lip 2004, o 13:10
Lokalizacja:Sławatycze
Kontaktowanie:

Postautor: slawcio » 11 sie 2004, o 07:32

Wcześniej nie wiedziałem o tym ale teraz już wiem. W każdym razie dzieki za podpowiedź.

Pozdrawiam i dzięki

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości