Dwa identyczne układy na I2C
Dwa identyczne układy na I2C
Mam małe pytanko.
Posiadam dwa identyczne układy (TDA8425) sterowane przez I²C. Będą one wykonywały w tym samym czasie identyczne zadania. Jak wiadomo,kostki te mają stały jeden adres. Sterować je chcę z Atmega8.
Czy można wysyłać do magistrali dane pod jeden adres i odpowiedzą oba układy, czy trzeba stosować jakieś układy przełączajace i sterować każdy z osobna?
Posiadam dwa identyczne układy (TDA8425) sterowane przez I²C. Będą one wykonywały w tym samym czasie identyczne zadania. Jak wiadomo,kostki te mają stały jeden adres. Sterować je chcę z Atmega8.
Czy można wysyłać do magistrali dane pod jeden adres i odpowiedzą oba układy, czy trzeba stosować jakieś układy przełączajace i sterować każdy z osobna?
Niestety - bez układów przełączających się nie obejdzie...M@ciej pisze:Czy można wysyłać do magistrali dane pod jeden adres i odpowiedzą oba układy, czy trzeba stosować jakieś układy przełączajace i sterować każdy z osobna?
Sposób takiego podłączenia trzech układów TDA8425 został wykorzystany w "Komputerowym mikserze audio" (kit AVT-2786, publikacja EdW 05/2006)
ale tam chodzilo o sterowanie kazdym ukladem z osobna,tymczasem ja chce sterowac dwoma naraz, wiec pdlaczenie ich wprost do I2C mialoby sęs. Chyba,ze beda jakies konflikty, bo 2 Slave'y zglosza obecność na tym samym adresie w tym samym czasie.
Komutowanie tych ukladow zwiekszy poziom komplikacji programu,a i tak przewiduje krowiasty. Najnowszy Bascom ma juz 4 kb limitu na Demo,a i tak nie wiem,czy mi wszystko wejdzie! C na razie odpada.
Komutowanie tych ukladow zwiekszy poziom komplikacji programu,a i tak przewiduje krowiasty. Najnowszy Bascom ma juz 4 kb limitu na Demo,a i tak nie wiem,czy mi wszystko wejdzie! C na razie odpada.
Po pierwsze - sens, nie "sęs".M@ciej pisze:ale tam chodzilo o sterowanie kazdym ukladem z osobna,tymczasem ja chce sterowac dwoma naraz, wiec pdlaczenie ich wprost do I2C mialoby sęs. Chyba,ze beda jakies konflikty, bo 2 Slave'y zglosza obecność na tym samym adresie w tym samym czasie.
Na drugą kwestię już sobie odpowiedziałeś - co prawda częściowo, ale jednak...
Tak, dwa układy odpowiedzą (prawie) jednocześnie. Jak dokładnie się zachowają - nie wiadomo, jednak z prawidłową transmisją będzie to miało niewiele wspólnego...
Co do skomplikowania układu - gdzie je przewidujesz?
Procedura wysłania będzie wspólna, jedynie pojedyńczy bit będzie odpowiadał za układ dołączony do magistrali. I wystarczy do tego również jeden pin uP...
Inna sprawa, że piszesz rozbudowany program w wersji demo BASCOM-a...
Tak, ale nie będziesz mógł ponownie zaprogramować układu przez ISP...M@ciej pisze:Czy pin 1 (reset) tez mozna uzywac domyslnie jako wyprowadzenie?Bo mam wolny.
W przypadku błędu pozostanie Tobie tylko programator równoległy do ponownego zaprogramowania...
Daj może jakiś schemat, i napisz co to za układ ma być - to postaramy się cos wymyślić...
michal17, popraw błędy (morzesz, wykożystaj)
Ciebie, M@ciej, proszę o wstawienie brakujących spacji, no i dodanie "ogonków"...
Dzięki za uwagi, będę się starał pisać bardziej po polsku.
Co do układu: ma być to sterownik do wzmacniacza audio. Ma obsługiwać wyświetlacz LCD 2x16, kilka diod świecących, 8 przycisków, I2C i jeszcze załączać sekwencyjnie poszczególne bloki wzmacniacza, a chodzi tu o: napięcie anodowe i żarzenia buforów, prosty układ miękkiego startu dla trafa toroidalnego (TST250/001) oraz z opóżnieniem załączać głośniki. Musiałem przebudować cały schemat sterownika, gdyż brakowało mi już pinów.
8 przycisków klawiatury podzieliłem na 2 sekcje, przy czym 2-ga sekcja ma jeszcze załączana osobno linię, by je rozróżnić.Klawisze zwierają odpowiednie piny układu do masy.
Sekwencyjne sterowanie załączanim bloków będzie zrealizowane na CD4015, wtedy do sterowania będę musiał użyć tylko 2 pinów. Reszta dla I2C (w takim razie nie 2 a 3 piny) i sterowanie kilkoma diodami. Pod I2C chcę podpiąć jeszcze zegar RTC,by wzmacniacz wyświetlał czas w trybie StandBy, oraz przetwornik PCF8591,by kontrolować temperatury końcówek mocy/lub napięcia zasilania.
Nie podaje na razie schematu,gdyż najpierw chce zaprojektować płytkię. Wiedząc,ze każdy port czy pin można dowolnie skonfigurować, łatwiej jest później na podstawie płytki narysować schemat, niż odwrotnie.
Czy linie portu I2C także można przypisać do dowolnego pinu poprzez instrukcje np.
Config SDA = Portb.3 ?
Co do układu: ma być to sterownik do wzmacniacza audio. Ma obsługiwać wyświetlacz LCD 2x16, kilka diod świecących, 8 przycisków, I2C i jeszcze załączać sekwencyjnie poszczególne bloki wzmacniacza, a chodzi tu o: napięcie anodowe i żarzenia buforów, prosty układ miękkiego startu dla trafa toroidalnego (TST250/001) oraz z opóżnieniem załączać głośniki. Musiałem przebudować cały schemat sterownika, gdyż brakowało mi już pinów.
8 przycisków klawiatury podzieliłem na 2 sekcje, przy czym 2-ga sekcja ma jeszcze załączana osobno linię, by je rozróżnić.Klawisze zwierają odpowiednie piny układu do masy.
Sekwencyjne sterowanie załączanim bloków będzie zrealizowane na CD4015, wtedy do sterowania będę musiał użyć tylko 2 pinów. Reszta dla I2C (w takim razie nie 2 a 3 piny) i sterowanie kilkoma diodami. Pod I2C chcę podpiąć jeszcze zegar RTC,by wzmacniacz wyświetlał czas w trybie StandBy, oraz przetwornik PCF8591,by kontrolować temperatury końcówek mocy/lub napięcia zasilania.
Nie podaje na razie schematu,gdyż najpierw chce zaprojektować płytkię. Wiedząc,ze każdy port czy pin można dowolnie skonfigurować, łatwiej jest później na podstawie płytki narysować schemat, niż odwrotnie.
Czy linie portu I2C także można przypisać do dowolnego pinu poprzez instrukcje np.
Config SDA = Portb.3 ?
M@ciej, słuchaj - nie myślałeś może o wykorzystaniu układów na I2C do sterowania załączaniem zasilania? Dość dobre rozwiązanie to układ PCF8574... Także klawiaturę za jego pomoca możesz obsługiwać - ma wyjście INT, które może wymusić obsługę układu z "priorytetowymi" przyciskami...
Przy okazji zaoszczędziłbyś kilka pinów uP...
Przy okazji zaoszczędziłbyś kilka pinów uP...
W przypadku obsługi programowej - tak. Ale lepiej wykorzystać końcówki "sprzętowe", czyli wbudowany układ TWI (jest odpowiednia biblioteka w BASCOM-ie).M@ciej pisze:Czy linie portu I2C także można przypisać do dowolnego pinu poprzez instrukcje np.
Config SDA = Portb.3 ?
Właśnie dziś wpadłem na ten pomysł, szczególnie, że posiadam gdzieś 2 kostki PCF8574,tak więc cały sterownik byłby na I2C, super! Tak wiec wolne piny zasilałyby (sterowałyby) diody LED, o których mowilem.
Nie rozumiem tylko o co chodzi z tą inną konfiguracją wyjść I2C i biblioteka w Bascomie? Może lepiej zastosuje te oznaczone w nocie katalogowej? Powinny być skonfigurowane domyślnie.
Przy wykonywaniu klawiatury na PCF8574, trzebaby wejścia podciągnąć opornikami do zasilania, czy tak? A co z odkłócaniem styków? Do tej pory stosowałem kondensator 10 nF równolegle do styków przycisku Microswitch. Pytam się aż tyle, bo nigdy nie bawiłem się w takiej skali I2C, jedynie w obrębie Oślej Łączki na AVT 3500.
Postaram sie machnąć jakiś schemacik tego sterownika i go tu zaprezentować.
Pozdrowienia dla wszystkich
Nie rozumiem tylko o co chodzi z tą inną konfiguracją wyjść I2C i biblioteka w Bascomie? Może lepiej zastosuje te oznaczone w nocie katalogowej? Powinny być skonfigurowane domyślnie.
Przy wykonywaniu klawiatury na PCF8574, trzebaby wejścia podciągnąć opornikami do zasilania, czy tak? A co z odkłócaniem styków? Do tej pory stosowałem kondensator 10 nF równolegle do styków przycisku Microswitch. Pytam się aż tyle, bo nigdy nie bawiłem się w takiej skali I2C, jedynie w obrębie Oślej Łączki na AVT 3500.
Postaram sie machnąć jakiś schemacik tego sterownika i go tu zaprezentować.
Pozdrowienia dla wszystkich
Może są wyświetlacze LCD z interfejsem I2C, ja jednak posiadam standardowy, zgodny z HD44780 i będę sterował go bezpośrednio z mikrokontrolera. Atmega8 ma sporo wyprowadzeń, więc nie powinno być problemu. 9 diodami świecącymi też będę sterował bezpośrednio, natomiast cała reszta będzie przez I2C.
Pozdrowienia dla Michala17 i pozostałych Forumowiczów
[ Dodano: 2006-12-15, 18:37 ]
Udało mi się naskrobać poglądowy i "odręczny" schemat tego sterownika. Nie umieściłem na nim jeszcze TDA, gdyż nie mam ich jeszcze wpisanego do bibpioteki w programie. Będę je przełączał chyba CD406, bo posiadam takie układy na stanie.
I co Wy na to?
Pozdrowienia dla Michala17 i pozostałych Forumowiczów
[ Dodano: 2006-12-15, 18:37 ]
Udało mi się naskrobać poglądowy i "odręczny" schemat tego sterownika. Nie umieściłem na nim jeszcze TDA, gdyż nie mam ich jeszcze wpisanego do bibpioteki w programie. Będę je przełączał chyba CD406, bo posiadam takie układy na stanie.
I co Wy na to?
M@ciej, taka jedna uwaga - sterujesz podświetleniem wyświetlacza z pinu Reset. Czy nie byłoby lepiej sterować wyjściem kanału PWM (dowolny pin OCPxX)? Miałbyś wtedy możliwośc regulacji "jasności" podświetlenia.
I diody też można dać przez jakiś układ pośredniczący (jeśli nie mają "migotać"). Zaoszczędzisz parę końcówek, a i doprowadzenia na "przedni" panel Twojego przedwzmacniacza będą o wiele prostsze (pięć przewodów, zamiast wiązki) - o ile wykorzystasz dodatkowy PCF8574...
Wyjście INT drugiego PCF8574 (ten od klawiatury) możesz również wykorzystać i połączyć z odpowiednim (INT0 lub INT1) wejściem mega8....
I diody też można dać przez jakiś układ pośredniczący (jeśli nie mają "migotać"). Zaoszczędzisz parę końcówek, a i doprowadzenia na "przedni" panel Twojego przedwzmacniacza będą o wiele prostsze (pięć przewodów, zamiast wiązki) - o ile wykorzystasz dodatkowy PCF8574...
Wyjście INT drugiego PCF8574 (ten od klawiatury) możesz również wykorzystać i połączyć z odpowiednim (INT0 lub INT1) wejściem mega8....
Co do wejścia RESET to rzeczywiście,nie popatrzałem i podłączyłem "na pałę",ale to tylko schemat. Nie muszę sterować jasnością podświetlenia. Ono ma się tylko wyłączyć w trybie StandBy. Diody też chyba dam na dodatkowy PCF8574. Jeden przełącznik podłączony jest bezpośrednio do procka i to będzie właśnie Stand By.
Nie rozumiem natomiast znaczenia wyjść INT, do czego służą? Jaki jest cel łączenia ich z wejściami INT0 i INT1 Atmegi?
Zwolniło się kilka końcówek procka. Posiadam także parę układów Holteka (HT12D i HT12E), oraz parę modułów Telekontrollil (PR1 i RR3). Można by zrobić sterowanie pilotem, tylko czy procek zrozumie poziomy sygnałów Holteka? W specyfikacji HT12x jest napisane, że są to poziomy CMOS. Mnie się jakoś nigdy nie udało zmusić układów TTL i CMOS do współpracy, pomimo zasilania ich wspólnym napięciem 5V, chociaż ten problem to sobie jakoś rozwiążę.
Im więcej będzie podpięte pod I2C,tym łatwiej będzie sterować. Będzie jedna procedura nadawcza i jedna odbiorcza dla I2C a reszta to wyłuskiwanie poszczególnych bitów za pomocą operatora AND
Zastanowię się nad tym wszystkim jeszcze raz na spokojnie i narysuje schemat finalny, bo jeszcze planowałem komunikacje przez RS232, bo Max232 tez gdzieś mi się wala
Pozdro 4 all
Nie rozumiem natomiast znaczenia wyjść INT, do czego służą? Jaki jest cel łączenia ich z wejściami INT0 i INT1 Atmegi?
Zwolniło się kilka końcówek procka. Posiadam także parę układów Holteka (HT12D i HT12E), oraz parę modułów Telekontrollil (PR1 i RR3). Można by zrobić sterowanie pilotem, tylko czy procek zrozumie poziomy sygnałów Holteka? W specyfikacji HT12x jest napisane, że są to poziomy CMOS. Mnie się jakoś nigdy nie udało zmusić układów TTL i CMOS do współpracy, pomimo zasilania ich wspólnym napięciem 5V, chociaż ten problem to sobie jakoś rozwiążę.
Im więcej będzie podpięte pod I2C,tym łatwiej będzie sterować. Będzie jedna procedura nadawcza i jedna odbiorcza dla I2C a reszta to wyłuskiwanie poszczególnych bitów za pomocą operatora AND
Zastanowię się nad tym wszystkim jeszcze raz na spokojnie i narysuje schemat finalny, bo jeszcze planowałem komunikacje przez RS232, bo Max232 tez gdzieś mi się wala
Pozdro 4 all
Są to wyjścia zgłoszenia przerwania po zmianie stanu na wejściach PCF-a.M@ciej pisze:Nie rozumiem natomiast znaczenia wyjść INT, do czego służą?
Wejścia INT0 i INT1 mogą wymusić zgłoszenie przerwania po pojawieniu się odpowiedniego stanu - domyślnie niskiego.M@ciej pisze:Jaki jest cel łączenia ich z wejściami INT0 i INT1 Atmegi?
Użyj odbiornika podczerwieni (ja korzystam z SFH5110, czasami też z TFMS5360).M@ciej pisze:Można by zrobić sterowanie pilotem,
BASCOM ma zaimplementowaną obsługę kodu RC5, używanego w sprzęcie Philips'a (łatwo też można pilota zrobić, bo sam BASCOM daje taką możliwość - choćby na tiny2313)