-
1. Data: 2009-01-30 19:46:29
Temat: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: Dariusz Zolna <a...@u...com>
Tak jak w temacie - czy protokół I2C dopuszcza możliwość
zasygnalizowania masterowi, że slave ma dla niego informację do
odebrania? A jeśli tak, czy Atmega załatwo to sprzętowo?
Teraz robię to przez cykliczny polling, ale w przypadku np przycisku czy
innego urządzenia typu "trigger" trochę to nieefektywne, bo nie dość że
zabiera cenny czas procka, to odebrana informacja jest mało precyzyjna w
czasie (co ma spore znaczenie w przypadku np stopera).
Dariusz Żołna
-
2. Data: 2009-01-30 20:03:47
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: "Sylwester Łazar" <g...@a...pl>
Niech zgłosi to przez osobną linię.
Można przez tą samą wyłączyć I2C, jeśli nic tam nie jest nadawane w danym
czasie.
Wtedy SLAVE sobie ustawi "0" jeśli chciałby coś nadać.
MASTER wysłucha prośby i włączy I2C.
--
--
pozdrawiam
Sylwester Łazar
http://www.alpro.pl
http://www.rimu.pl -oprogramowanie do edycji schematów
i projektowania PCB
-
3. Data: 2009-01-30 22:00:27
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: Dariusz Zolna <a...@u...com>
Sylwester Łazar pisze:
> Niech zgłosi to przez osobną linię.
> Można przez tą samą wyłączyć I2C, jeśli nic tam nie jest nadawane w danym
> czasie.
> Wtedy SLAVE sobie ustawi "0" jeśli chciałby coś nadać.
> MASTER wysłucha prośby i włączy I2C.
Mogę zrobić tylko upgrade firmware, dodatkowa linia nie wchodzi w grę.
Dariusz Żołna
-
4. Data: 2009-01-30 22:27:23
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: "Sylwester Łazar" <g...@a...pl>
> Mogę zrobić tylko upgrade firmware, dodatkowa linia nie wchodzi w grę.
Pisałem, że można po tej samej np. SDA.
Problem w tym czy z obu stron są ukontrolery, czy SLAVE jest sprzętowy.
Np. jeśli sprzętowy, to należy dodać jeden przewód od wyłącznika do SDA.
Przycisk - zwiera sygnał do masy -> Master włącza port I2C.
Jest jeszcze problem, bo MASTER musi poczekać na zwolnienie przycisku.
Trudno tak dyskutować, jak nie widać układu.
--
--
pozdrawiam
Sylwester Łazar
http://www.alpro.pl
http://www.rimu.pl -oprogramowanie do edycji schematów
i projektowania PCB
-
5. Data: 2009-01-30 23:07:31
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: Dariusz Zolna <a...@u...com>
Sylwester Łazar pisze:
> Problem w tym czy z obu stron są ukontrolery, czy SLAVE jest sprzętowy.
> Np. jeśli sprzętowy, to należy dodać jeden przewód od wyłącznika do SDA.
> Przycisk - zwiera sygnał do masy -> Master włącza port I2C.
> Jest jeszcze problem, bo MASTER musi poczekać na zwolnienie przycisku.
> Trudno tak dyskutować, jak nie widać układu.
Po obu stronach są uC, przycisk także przechodzi przez uC.
Master - Atmega128, slave - w większości Atmega8.
Dariusz Żołna
-
6. Data: 2009-01-31 08:24:53
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: "Sylwester Łazar" <g...@a...pl>
> Po obu stronach są uC, przycisk także przechodzi przez uC.
> Master - Atmega128, slave - w większości Atmega8.
To w takim razie:
1) Normalna praca i2c wyłaczony. MASTER czeka na SDA na sygnał -impuls "0".
Zakładam, że linia podwieszona jest do VCC przez rezystor.
2) Jeśli "0" - MASTER włącza I2C.
Nie miałem tego ATMEGA nigdy w ręce, ale widzę, że na pinie 26 (SDA) jest
też przerwanie INT1.
W takim razie nie trzeba pollingu, a przerwanie zostanie obsłużone
sprzętowo.
--
--
pozdrawiam
Sylwester Łazar
http://www.alpro.pl
http://www.rimu.pl -oprogramowanie do edycji schematów
i projektowania PCB
-
7. Data: 2009-01-31 09:38:32
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: "T.M.F." <t...@n...mp.pl>
Dariusz Zolna pisze:
> Sylwester Łazar pisze:
>> Problem w tym czy z obu stron są ukontrolery, czy SLAVE jest sprzętowy.
>> Np. jeśli sprzętowy, to należy dodać jeden przewód od wyłącznika do SDA.
>> Przycisk - zwiera sygnał do masy -> Master włącza port I2C.
>> Jest jeszcze problem, bo MASTER musi poczekać na zwolnienie przycisku.
>> Trudno tak dyskutować, jak nie widać układu.
>
> Po obu stronach są uC, przycisk także przechodzi przez uC.
> Master - Atmega128, slave - w większości Atmega8.
No to sprawe masz prosta. Jak master nic nie nadaje to przelacza sie w
slave i masterem staje sie to twoje urzadzenie. Jesli oba beda chcialy
nadawac to tez nic wielkiego bo I2C obsluguje kolizje.
-
8. Data: 2009-01-31 09:59:25
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: Dariusz Zolna <a...@u...com>
T.M.F. pisze:
> No to sprawe masz prosta. Jak master nic nie nadaje to przelacza sie w
> slave i masterem staje sie to twoje urzadzenie. Jesli oba beda chcialy
> nadawac to tez nic wielkiego bo I2C obsluguje kolizje.
Tyle że ja tych urządzeń mam kilkanaście, z którymi w większości jest
transmisja ciągła, a tylko 2 dostarczają danych sporadycznie.
Chyba zostanę przy pollingu, bo widzę że tylko skomplikuję sprawę i
zmniejszę niezawodność.
Dariusz Żołna
-
9. Data: 2009-01-31 14:40:18
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: Adam Dybkowski <a...@4...pl>
Sylwester Łazar pisze:
>> Po obu stronach są uC, przycisk także przechodzi przez uC.
>> Master - Atmega128, slave - w większości Atmega8.
> To w takim razie:
> 1) Normalna praca i2c wyłaczony. MASTER czeka na SDA na sygnał -impuls "0".
> Zakładam, że linia podwieszona jest do VCC przez rezystor.
> 2) Jeśli "0" - MASTER włącza I2C.
Można też przy interfejsie 2-liniowym zrezygnować z protokołu I2C i
zrobić zwykły RS232 z wykrywaniem kolizji. Na jednej linii Master gada
do pozostałych procesorów, na drugiej (z pull-up'em do zasilania) gadają
inne procki sterując linią w trybie open drain (wystawiając tylko masę
lub Hi-Z). Jeżeli dwa Slave'y jednocześnie będą chciały coś nadać,
wystarczy najpierw posłuchać czy coś już nie leci na linii a do tego
wykryć kolizję np. sprawdzając CRC ramki. Maksymalna prędkość takiego
współdzielonego RS232 zależy od długości linii i liczby Slave'ów.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
10. Data: 2009-02-02 21:54:31
Temat: Re: I2C czy slave może zgłosić masterowi że ma dla niego dane?
Od: "entroper" <e...@C...spamerom.poczta.onet.pl>
Użytkownik "Dariusz Zolna" <a...@u...com> napisał w wiadomości
news:gm17ds$km9$1@inews.gazeta.pl...
> Chyba zostanę przy pollingu, bo widzę że tylko skomplikuję sprawę i
> zmniejszę niezawodność.
Nie wiem czy Atmega w ogóle to obsługuje i czy robi to poprawnie, ale możesz
zrobić taki eksperyment: niech slave przetrzyma chwilę SCL w stanie niskim w
momencie, gdy master wystawił SCL=0. Jeśli master to wykryje (jako dostęp
innego mastera lub nawet jako błąd) i nie wywali się na tym (tzn, nie będzie
chciał na siłę wystawiać danych tylko poczeka na SCL=1), będziesz mógł bez
przeszkód dokończyć bieżącą transmisję do aktualnie adresowanego urządzenia
i zaraz potem wywołać odczyty z interesujących Cię slav'ów (oczywiście nie
rozróżnisz, który chciał dostępu, ale masz ich mało zdaje się).
e.