siec AVR'ow w protokole I2C

Mar 24, 2006 9 Replies

Witam ;)!



Do mojego robota potrzebuje zorganicowac siec zlozona z mastera jako Amtega8 i



3-ech slave'ow tez jako Atmega8. Chce to zrobic na protokole I2C i mam pyatnie czy musze zastosowac uklad PCF8584 jako kontrolera magistarli I2C w celu przydzielania adresow poszcelognym slave'om (u mnie pozostalym prockom) czy mozna to zrobic jakos inaczej?


Zamiast projektu takiej sieci moge dokonac zmiane typu procesona na HC11. I z lad moje pytanie czy jak jest juz srednio zawansowanym w uC z dziedzimy AVR to czy latwo przejsc na motorole (gdzie jezyk programowania to C)?



Pozdrawiam, Rafal k.


Witam,

A od kiedy to na I2C "przydziela siê" adresy? Naprawdê nie da siê zaszyæ adresu na sta³e w oprogramowaniu wewnêtrznym slave'a?

przeciez mzoesz adres nadac na stape lub ustawic go za pomcoa z worek na porcie procka. Sa procki ze sprzetowym I2C Slave

a to motorli nie da sie programowac w ASM? lub AVR w C?

ToR napisał(a):

Jeszcze raz to przemyśl i zastanów się, czy I2C jest najlepszym rozwiązaniem. Wszystko zależy od tego, jakich transferów oczekujesz i iloma drutami chcesz połączyć procesory.

Może się okazać, że w twoim zastosowaniu będzie lepszy np. interfejs SPI. Do każdego układu slave trzeba doprowadzić wspólne linie: wejście danych, wyjście danych, zegar oraz dodatkowo do każdego slave'a indywidualny chip select. Czyli po stronie mastera da to 6 linii a w slave'ach po 4. A teraz zalety:

- komunikacja dupleksowa (wysłanie bajtu równocześnie z odebraniem ze względu na rozdzielone linie danych w obu kierunkach)

- niewyobrażalnie większe transfery (zegar I2C = 100 kHz lub 400 kHz; SPI = ile da fabryka, np. 8 MHz dla ATmegi8 taktowanej na 16 MHz)

- brak kłopotów z przełączaniem kierunku portów, a co za tym idzie niezbędnych opóźnień do rozładowania pojemności na liniach (każda linia ma na stałe jeden kierunek)

- sprzętowa obsługa i master, i slave w procesorze ATmega8

Jedyną zaletą I2C w tym konkretnym zastosowaniu są wyłącznie tylko 2 druty do pociągnięcia do każdego scalaka. Poza tym widzę same wady.

Hi hi..kolego Adamie, bierasz has³a i kody ...do banku... Downloadable files w tak prymitywny sposób...czy cos sie pomiesza³o na Twojej stronie??;))))

pozdrawiam

Wiesiek

I2C ³atwiej siê skaluje. Przy SPI ka¿de dodatkowe urz±dzenie wymaga poci±gniêcia CS, natomiast I2C nie. Jedynie trzeba pamiêtaæ o adresach. Podsumowuj±c, przy du¿ej liczbie uk³adów slave, SPI po¿era du¿o linii I/O.

Hmm zgadzam ze ze I2C ma mnustwo wad, ale w robocie zamierzam wykorzystanie zawnetrznych pamieci I2C, ktore zamiarzam jako calosc podlaczyc do systemu.

Ale mam tez inny pomysl,bo zauwazylem ze Atmega8 ma Tryb:

Multi-processor Communication Mode.

Co sadzicie o jego zastosowaniu? Bo jesli chodzi o linie to dalej sa dwie ;).Ale mam pytanie bo z tego co pisza w dokumentacji to:

The Multi-processor Communication mode enables several Slave MCUs to receive datafrom a Master MCU.

I z tad moje pytanie czy komunikacja dziala w dwie strony (czyli Master-Slave i Slave-Master) czy tyko Master-Slave?

Pozdarwiam, Rafal k.

Hmm ja potrzebuje 3 slave'y ale jeszcze pewnie cos dojdzie tak wiec golnie bedzie 5-6 ukladow slave ;).Hmm latwa jest implementacja transmisji SPI?

Pozdrawiam, Rafal k.

RW napisał(a):

Heh, to skutek uboczny zabaw z wget-ssl. Już naprawione. :) Pokazywane było przekierowanie strony logowania mBanku, żadne informacje zwrotne do mnie nie trafiały. Testowałem to przy tworzeniu skryptu automatycznie sprawdzającego, ile kasy mam na koncie.

Dla zainteresowanych całkiem off-topic'owo skrypt zamieszczam w linku poniżej. Jest to plik BAT działający pod Windows XP (łatwo da się przerobić pod Linuxa), wymaga wget(ssl) i [g]awk. Z oczywistych względów numer użytkownika i hasło nie są zapisane na stałe tylko trzeba je podać przy uruchomieniu:

formatting link
łanie: mbank.bat userid hasło

Mnie sie wydaje, ze w obie strony. Nadaje ten kto pierwszy dopnie sie do magistrali (sygnal start) - ten jest masterm. W tej konfiguracji kazdy moze byc masterem i slavem. Taka jest specyfika I2C.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required