logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kilka expanderów PCF8574 do jednego portu AVR. Czy możliwe?

canion 12 Paź 2011 15:22 4438 12
REKLAMA
  • #1 10019406
    canion
    Poziom 10  
    Witam. Chcę odczytywać ATMegą stany wyjść expanderów i2c PCF8574.
    Jedna ATmega wysyła szyną i2c dane do 6 expanderów, inną ATmegą chcę odczytać wartości na wyjściach tych expanderów, ale nie przez i2c, a poprzez bezpośrednie połączenie do portu ATmegi, skonfigurowanego jako wejście.
    Chciałbym, wykorzystać do tego tylko jeden port.

    Czy istnieje możliwość, że poprzez bezpośrednie podpięcie wyprowadzeń wszystkich 6 expanderów do jednego portu, mógłbym odczytać, kolejno wysyłane przez drugi mikrokontroler informacje?? Zsynchronizowałbym obie ATmegi, ew wysyłałbym informacje, kolejno naciskając switch.

    Czy na wyjściu expandera, kiedy on nie pracuje są stany wysokie, czy nieustalone??
    Zadziała takie ustrojstwo?? Czy może lepiej zastosować 6 dodatkowych expanderów, podpiętych do mikrokontrolera, odczytującego, i odczytywać przez i2c?
  • REKLAMA
  • #2 10019517
    mirekk36
    Poziom 42  
    Ale co to za pomysł ??? może jakiś schemat - bo z opisu wygląda to makabrycznie.

    Wyjścia 6ciu expanderów połączyć równolegle i to do jednego portu procka ATmega ???? to chyba jakaś iluminacja wyobraźni? Jak można wtedy myśleć o odczycie poszczególnych wyjść gdy są one połączone równolegle???
  • REKLAMA
  • #3 10019714
    tmf
    VIP Zasłużony dla elektroda
    Akurat wyjścia tego ekspandera można niby łączyć, bo jego stan wysoki to bardziej takie mocne podciąganie niż prawdziwy stan wysoki. Niemniej pomysł brzmi dziwacznie. A najbardziej magicznym fragmentem jest ten o synchronizacji obu procesorów. Ja bym proponował opisać co chce się osiągnąć, bo z opisu jak - nic nie wynika.
  • #4 10019731
    mirekk36
    Poziom 42  
    tmf napisał:
    Akurat wyjścia tego ekspandera można niby łączyć, bo jego stan wysoki to bardziej takie mocne podciąganie niż prawdziwy stan wysoki. Niemniej pomysł brzmi dziwacznie. A najbardziej magicznym fragmentem jest ten o synchronizacji obu procesorów. Ja bym proponował opisać co chce się osiągnąć, bo z opisu jak - nic nie wynika.


    No dokładnie można łączyć bez problemu bo wyjścia są typu otwarty dren - ale sam pomysł iście z kosmosu. I jak piszesz - lepiej żeby autor opisał co chce uzyskać, bo można będzie podpowiedzieć jakiś rozsądny pomysł na rozwiązanie jego problemu.
  • #5 10020126
    canion
    Poziom 10  
    Oto poglądowy schemat: Kilka expanderów PCF8574 do jednego portu AVR. Czy możliwe?

    Pisząc synchronizacja procesorów, chodziło mi o to, że za pomocą przycisku, generuję przerwanie, w którego obsłudze, będzie wysłanie jednej informacji, na jeden expander, po czym na wyprowadzeniu PA7 dam wysoki lub niski, aby wygenerować przerwanie w drugim procesorze, w którym będzie odczytywana informacja z portu PC.
    Wciskając ponownie przycisk, będzie wysłana informacja na kolejny expander, itd. Procesor, będzie wiedział, z którego odczytuje, właśnie za pomocą przerwania.

    Tylko czy równoległe połączenie wyprowadzeń expanderów pozwoli mi na taki odczyt.
    Niestety muszę odczytywać z wyjść expanderów, nie po szynie i2c.
  • REKLAMA
  • #6 10020426
    tmf
    VIP Zasłużony dla elektroda
    Nie pozwoli, gdyż wyjścia w stanie 0 będą wymuszały ten stan niezależnie od stanu innych wyjść - to się nazywa wired and.
    Druga sprawa - co ten układ ma na celu?
  • #7 10020477
    mirekk36
    Poziom 42  
    canion napisał:

    Niestety muszę odczytywać z wyjść expanderów, nie po szynie i2c.


    Dlatego pytamy - dlaczego musisz - przecież to się (niestety - sorki za wyrażenie) kupy nie trzyma :(

    Tzn chodzi mi ot ten schemat a nie o jakiś cel, który masz a którego nie chcesz zdradzić brnąc w ślepą uliczkę tak kuriozalnego rozwiązania.

    Bez I2C mógłbyś zrealizować jeszcze więcej - gdybyś bez tych expanderów połączył bezpośrednio dwa porty procków a wtedy mógłbyś przesyłać informacje o tysiącach zdarzeń.

    A gdyby wiadomo było o co ci chodzi to szybko udałoby się ciebie naprowadzić na dobry tor myślenia - bo być może w ogóle nie rozumiesz pewnych rzeczy jeszcze. Popatrz sobie na rejestry zatrzaskowe typu 74373 albo 74573 (albo jeszcze lepiej rejestrów przesuwnych z wyjściem trójstanowym 74595) bo być może bardziej o to będzie ci chodziło - o ile dobrze przewiduję to co chcesz zrobić.

    Ale musiałbyś narysować cały schemat a nie jego fragment. Z kolei jeśli to już cały schemat to znaczy że to niestety pomysł z kosmosu :(
  • #8 10020525
    canion
    Poziom 10  
    Buduję tester, który będzie sprawdzał pewne układy, pod względem sprawności elementów (expandery, pamięć), przewodzenia ścieżek itp.

    W tymże układzie jest 6 expanderów, które dosyć często nie działają (najczęściej na skutek przegrzania podczas lutowania). Tester sprawdza także inne elementy modułu, ale z nimi nie mam problemu.

    Odczytując innym procesorem informację z expandera, będę wiedział które expandery i/lub ścieżki idące od niego do wyprowadzenia mogą być uszkodzone.

    Mam rozwiązanie - stosując 8-wejściowe bramki AND - ich wejścia do wyjść expanderów, wyjścia bramek do portu procesora i gotowe. Ale wolałbym w inny sposób to rozwiązać, aby nie zajmować dużo miejsca na płytce - 6 bramek.

    Dodano po 8 [minuty]:

    Układy te lutowane są seryjnie, i jest bardzo wiele strat - mnóstwo płytek leży - i nie wiadomo co w nich jest uszkodzone. Taki tester znacznie ma na celu - wskazanie uszkodzonego elementu, żeby wiedzieć co wymienić.

    Dodano po 3 [minuty]:

    ATmega po lewej stronie fragmentu schematu jest częścią tych układów.
  • REKLAMA
  • #9 10020583
    mirekk36
    Poziom 42  
    No to teraz dużo jaśniej - czyli w miejscu tych expanderów na schemacie będą podstawki do ich testowania tak? dobrze rozumiem ?

    Ale jeśli tak - to czy ciężko jest wkładać każdy po prostu pojedynczo i go sprawdzać ? Można byłoby wtedy badać zarówno czy działają jego i wejścia i wyjścia.

    Dodano po 1 [minuty]:

    Czy może ty chcesz zrobić taki tester, który będzie badał te expandery hmm w układzie? czyli bez ich wylutowywania ?

    Proszę o takie doprecyzowanie?
  • #10 10020620
    canion
    Poziom 10  
    Tak. Expandery będą testowane w układzie. Do mikrokontrolera w układzie, będzie wgrywany soft, wysyłający informacje na expandery. A tester będzie sprawdzał, czy to co wysłano, to samo odebrano, ale poprzez ścieżki - wyjścia expanderów. Bo np odczytując dane po i2c nie będę mieć pewności czy ścieżka przewodzi.

    Może jest to zbyt dziwne, ale także zdarzają się nieprzewodzące ścieżki.
  • #11 10020677
    mirekk36
    Poziom 42  
    No ok teraz rozumiem cel, ale tym bardziej wydaje się być prawidłowym zastosowanie takiego układu do pojedynczego expandera. Przecież łącząc wyjścia kilku naraz (a przecież w tych układach nie ma takiej sytuacji) w zasadzie robisz tylko wielki problem.

    A tak? miałbyś urządzonko - tylko sam musisz sobie wymyślić sondę jaką będziesz przykładał do takiego expandera - które byłoby w stanie sprawdzać taki pojedynczy scalak.
  • #12 10021087
    tmf
    VIP Zasłużony dla elektroda
    Jak rozumiem te ekspandery (lewa część schematu) są na badanej płytce? A drugi procesor to twój tester? To może lepiej zbudować drugą płytkę zawierającą kolejnych 6 ekspanderów (po I2C lub SPI) i ich wyjście szeregowe zwrotnie skierować do pierwszego procesora. Masz wtedy coś w stylu pętli i możesz sprawdzać czy na wyjściach modułów jest to co wystawiłeś.
    W dodatku ponieważ ATMega32 ma JTAG, więc cały proces można zautomatyzować nawet bez wgrywania programu testowego.
  • #13 10022927
    canion
    Poziom 10  
    Będę myślał o sondzie. Ew dodatkowo zrobię 6 dodatkowych expanderów na i2c odczytujących informacje z wyjść układu (albo bramki, jeszcze przemyslę sprawę) Dzięki wielkie za sugestie.
REKLAMA