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

ATmega8 – jak rozszerzyć liczbę linii I/O do obsługi 32 wejść i LCD?

pawel129 07 Cze 2007 21:11 2700 11
  • #1 3963331
    pawel129
    Poziom 16  
    Posty: 246
    Pomógł: 2
    Ocena: 4
    witam,
    potrzebuje zrealizować dość prosty układ na ATmega +LCD+ ew.kilka klawiszy...problem w tym że musze mieć ok 32 niezależnych linii do wykrywania stanów urądzeń podpiętych do tych linii.

    Standardowy ATmega16 ma 32 linie..ale LCD już nie podepnę.I znowu aż tyle flasha nie potrzebuje.

    Wystarczyłby ATmega8. Tylko ma za mało linii. Jaki scalaczek do tego wykorzystać aby dostać kilka dodatkowych linii?
  • #2 3963344
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    Ja bym użył 2 atmeg 8. Są tak tanie że nie ma co kombinować.
  • #4 3963393
    pawel129
    Poziom 16  
    Posty: 246
    Pomógł: 2
    Ocena: 4
    kurcze taki pcf8574 to ponad 6zł/szt :-/ może są jakieś podobne expandery?

    w sumie pomysł na wykorzystanie drugiego atmela nie jest zły...a później komunikacja po RS232..

    ale wolałbym bardziej "profesjonalne" rozwiązanie ;-) np jakieś tanie expandery..

    avatar, mówisz że da sie uzyskać 16x8 I/O na jednym takim PCFie? w jaki sposób? przecież tam jest aby jeden port (8 linii)...czy masz na myśli 16szt na całej magistralii i2C?
  • #5 3963557
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    W ofercie microchipa są expandery 16 portowe i wysyłają je jako sample MCP23S17

    Tak, miał na myśli kilka na jednej magistrali ale z tego co mi wiadomo, to PCF ma 3 bity adresowe co daje 8 urządzeń
  • #6 3963644
    William Bonawentura
    Poziom 34  
    Posty: 2415
    Pomógł: 186
    Ocena: 609
    Określ precyzyjniej co to znaczy "wykrywać stan". Może da się to rozwiązać multlipleksowo, rejestrem szeregowym, kluczami analogowymi itp.
  • #7 3963654
    SP1AQU
    Poziom 21  
    Posty: 407
    Pomógł: 29
    Ocena: 33
    pawel129 napisał:
    kurcze taki pcf8574 to ponad 6zł/szt :-/ może są jakieś podobne expandery?

    w sumie pomysł na wykorzystanie drugiego atmela nie jest zły...a później komunikacja po RS232..

    ale wolałbym bardziej "profesjonalne" rozwiązanie np jakieś tanie expandery..


    Alternatywą są rejestry przesuwne typu PISO. Na przykład 74HC165 lub 74HC597 - ten ma dodatkowo zatrzaskiwane wejścia, co może być dużą zaletą. Korzystną cechą tego rozwiązania jest możliwość łączenia tych rejestrów "w szereg". W ten sposób możesz (w granicach rozsądku) uzyskać tyle linii ile tylko chcesz. Drugą korzystną cechą jest cena - ok. 90 groszy za HC597 :-)
  • #8 3963687
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    Kości 74HC165 połączone ze sobą i z mikrokontrolerem
    za pomocą magistrali SPI mogę pracować jako wejścia.
    Kości 74HC595 mogą pracować jako wyjścia.
    Znalazłem taki fajny dokument w sieci, jest to ekspander postawiony na magistrali I2C.
    Wywalasz ze schematu układy PLC42VA12 i sygnały spinasz do sprzętowego interfejsu SPI.
    To musi działać :)
    Na forum też jest coś podobnego przedstawione, kiedyś na to wpadłem.
    Pozdrawiam
    Załączniki:
    • I2C EXPANDER.pdf (188.78 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 3963727
    pawel129
    Poziom 16  
    Posty: 246
    Pomógł: 2
    Ocena: 4
    o lol, niezły układ...
    chyba zostane przy tych pcf'ach, na allegro sa po 3,50 (tylko że bez literki A w oznaczeniu - jakaś istotna różnica?) wystarczyłoby mi 3-4szt. A jak się uda zrobie na 2 atmegach..

    A układ ma wykrywać stany 32 podpiętych urządzeń do tego procka i wskazywać czy są wł/wył. zasilane 230V, typu lampy ogrodowe, fontanna, brama itp...
    Mam do dyspozycji linie typu NC i NO więc myślałem o ich zwarciu do masy a obsługe opisać podobnie jak na zasadzie klawiaturki..
  • #10 3963826
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 76
    Witam
    Między tymi PCF- ami jest różnica w adresowaniu na magistrali, czyli istotna sprawa.
    Zapraszam do lektury noty aplikacyjnej :)
    Pozdrawiam
  • #11 4196745
    krzykoz
    Poziom 12  
    Posty: 61
    Ocena: 7
    Witam!
    Mam pytanie, w jakiej kolejności przesyłane są dane, gdy połączone są ze sobą więcej niż 2 układy 74HC165?
    Czy dane są przesyłane od MSB z układu znajdującego się na końcu łańcucha, czy jakoś inaczej?
    W jaki sposób odczytywać dane wykorzystując 8-bitowca? Odebranie danych przez moduł SPI wykonywać co 8 bitow? Czy odbiór kolejnego bajtu nie spowoduje resetu '165-tek? Czy tylko stan niski na wejściu /PL (LOAD) resetuje cały łańcuch?

    Z góry dzięki za odpowiedź i pozdrawiam.
  • #12 4199281
    krzykoz
    Poziom 12  
    Posty: 61
    Ocena: 7
    Ok, już mam rozwiązanie swoich problemów. Nie ma to jak zrobić i sprawdzić:-)
    Więc tak, Dane przesyłane są od MSB do LSB w kolejności od układu najbliżej proca. Czyli, gdy mamy np. 3 układy, pierwszy na początku łańcucha, drugi w środku i trzeci najbliżej proca, na wejściu SDI proca mamy 24 bity w takiej kolejności:
    MSB...LSB z układu 3
    MSB...LSB z układu 2
    MSB...LSB z układu 1

    Ja wykorzystuje PIC-a 18Fxxxx i odczytuje po jednym bajcie w taki sposób, że tylko przed pierwszym bajtem następuje sekwencja startu, tj. LOAD = 0 LOAD = 1
    Przed odczytem kolejnych bajtów (z kolejnych układów) nie wolno wykonać startu, bo zresetuje to układy i transmisja zacznie sie od początku.

    Myślę, że przedstawiłem to wystarczająco jasno...
    Pozdrawiam!

Podsumowanie tematu

✨ W dyskusji poruszono problem rozszerzenia liczby linii I/O w mikrokontrolerze ATmega8 do obsługi 32 niezależnych wejść oraz wyświetlacza LCD. Standardowy ATmega16 posiada 32 linie, ale nie pozostawia miejsca na LCD, a ATmega8 ma ich za mało. Zaproponowano kilka rozwiązań: użycie dwóch mikrokontrolerów ATmega8 komunikujących się np. przez RS232, zastosowanie ekspanderów portów I/O na magistrali I2C, takich jak PCF8574/PCF8574A (8 linii na układ, do 8 urządzeń na magistrali), lub ekspanderów 16-portowych MCP23S17 od Microchip. Alternatywnie wskazano rejestry przesuwne typu PISO, np. 74HC165 (wejścia) i 74HC595 (wyjścia), które można łączyć szeregowo i sterować przez SPI, co pozwala na dowolne rozszerzenie liczby linii przy niskim koszcie. Omówiono także szczegóły transmisji danych w łańcuchu 74HC165, gdzie dane przesyłane są od MSB do LSB, a sygnał LOAD steruje zatrzaskiem wejść. Autor planuje wykrywać stany urządzeń podłączonych do linii (np. lampy, fontanna, brama) poprzez sygnały NC/NO zwierane do masy, co można obsłużyć podobnie jak klawiaturę. Różnice między PCF8574 a PCF8574A dotyczą adresowania na magistrali I2C i warto zapoznać się z notą aplikacyjną.
Wygenerowane przez model językowy.
REKLAMA