Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Computer ControlsComputer Controls
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Brakło wyjść w 90S8515

04 Jun 2003 08:58 4330 34
  • Level 13  
    Witam.
    Podłączyłem 8 wyjść i muszę podłączyć 16 wejść reszta to RS232, I2C i coś jeszcze. Teraz problem stanowi fakt, że nie ma miejsca dla wyświetlacza 2*16. 8O Pytanko: Czy mogę podłączyć go przez expander PCF8574. Jeśli tak to jak to obsługiwać. :oops:

    P/S do TDV.
    :oops: Mam problemy z informacją na Twojego maila. Prosiłeś o mój adres, bo proponowałeś kurs C. mój e-mail. A.Bulak(malpa)kama-vitrum.pl.

    Dzięki za info.
  • Computer ControlsComputer Controls
  • Level 13  
    spróbuj zrobić tak: przełącznik danych za pomocą którego będziesz dołączał do portu albo wyświetlacz albo coś innego. w programie podczas wykonywania operacji na LCD bedziesz przełączał wyjście portu. Nigdy nie próbowałem ale powinno zadziałać
  • Level 28  
    LCD ma wejscie enable i wzaleznosci 4 albo 8bitowa magistrale
    ktora podczas nieaktywowania LCD mozna wykorzystywac, do transmisji danych do innego urzadzenia
    tak wiec jesli inne urzadzenie jakiego uzywasz tez posiada wejscie Enable i korzysta z magistrali, to kosztem dodatkowego portu dla Enable LCD
    Mozesz podlaczyc wszystko razem
  • Level 13  
    Widzę, że wszyscy uciekacie od tematu PCF-a. Może i dobrze bo im mniej elektroniki tym taniej i niezawodniej. Myślałem o tym temecie bo przyszło mi na myśl sprawa wyświetlacza który można podłączyć i odłączyć od urządzenia. Wykożystując I2C minimalizujemy ilość przewodów. Ale to tylko taki zamysł przyszłościowy. Pomysł z wejściem Enable jast całkiem dobry. Muszę poukładać sobie te klocki i coś może uda się zrobić. A tak na marginesie to czy ktoś wie jak rozszerzyć ilość I/O na tym mikrusie ?
  • Level 28  
    pcfy dobra rzecz
    niski prad standby
    3bity adresowe + x2 bo jeszcze z rozna koncowka

    ale wg mnie maja tez minusy
    Czasem duuze
    1. tylko 100KHz (iic)
    2. Zazbyt drogie, niejednokrotnie niekalkuluje sie dokladanie takich czarow
    3. maly prad wyjsciowy (latwo pozatym je uszkodzic za duzym pradem)

    czasem lepiej uzyc cd4094
    albo dodatkowy ztrzask
    np HC 593 (niepamietam numeru dokladnie ale hyba to ten 393,593 zatrzaski lathD)
    Pozdrawiam
  • Level 28  
    Polecam 4094. Używałem 3 sztuki połączone w szereg i przepisywałem sygnałem STROBE wszystkie równocześnie. Jako wyjścia są OK bo zatrzaskują stan na czas łykania nowych danych. Całość zajmuje tyjko trzy piny mikrokontrolera a uzyskuje się 24 wyjścia.
  • Level 13  
    Superancko.
    Powiedzmy, że mamy już wyjścia na 4094 a jak zrobić wejścia? :D

    Pomyślcie a będzie Wam dane.
  • Computer ControlsComputer Controls
  • Level 13  
    Fajnie. :D
    Dla kogo proste to proste. Dla mnie niejasne do końca. Pewnie jakoś dam sobie radę ale jeśli masz coś konkretnego (symbol scalaka) to podpowiedz. Testowanie nie było moją dobrą stroną i wymaga czasu. Może jeszcze jakiś programik jak to obsługiwać w procku.
    Może ktoś wreszcie podeśle mi jakiś kurs C na AVR. Chociaż kawałek. :(
  • Level 33  
    Hmm, miałem małe kłopoty z netem, zresztą nadal nie są do końca usunięte. Postaram się to jutro wysłać bo dzisiaj nie dam już rady;-).
  • Level 12  
    Bulik wrote:
    Widzę, że wszyscy uciekacie od tematu PCF-a. Może i dobrze bo im mniej elektroniki tym taniej i niezawodniej. Myślałem o tym temecie bo przyszło mi na myśl sprawa wyświetlacza który można podłączyć i odłączyć od urządzenia. Wykożystując I2C minimalizujemy ilość przewodów. Ale to tylko taki zamysł przyszłościowy. Pomysł z wejściem Enable jast całkiem dobry. Muszę poukładać sobie te klocki i coś może uda się zrobić. A tak na marginesie to czy ktoś wie jak rozszerzyć ilość I/O na tym mikrusie ?


    na www.avrfreaks.net sa gotowe procedurki do obslugi wyswietlacza przez pcf'a, jesli o to pytales, tylko sa b pamieciozerne...
  • Level 13  
    Witam. :D
    Jak się domyślacie jestem beznadziejnie słaby z C. Jeśli ktoś ma ochotę pomóc to proszę o przykład: Jak obsłużyć 2 scalaki CD4094 połączone oczywiście zgodnie ze schematem. Potrzebny jest programik wystawiający na wyjścia 1 lub 0. Mamy do dyspozycji 3 I/O procka. Ktoś wspomniał, że wyjścia zapisuje się sygnałem STROBE, ale jak? Proszę o przykład programu w C.
    Chłopaki, dziewczyny i inni co znacie się na rzeczy. Help !!! :cry:

    P/S
    TDV i Michu . Dzięki za kursy. Mam problemik z plikiem od TDV bo ma rozszerzenie .dat. W czym to się otwiera? :oops:
  • Level 13  
    Jeszcze jedno.
    Czy wejścia można zrobić (na takiej samej zasadzie jak wyjścia na CD4094) na scalaku 74165. A może inny ? Tylko jaki. 8)
  • Level 33  
    Prawdopodobnie coś się pochrzaniło w transporcie, powinien być zip.

    Tekst nie jest mojego autorstwa, znalazlem to kiedyś w sieci (dawno temu) i nie pamiętam gdzie to było...
    Jak ktoś chce to niech poszuka w źródle (html), pewie się gdzieś jakiś adres uchował...
  • Level 13  
    Widzę, że podesłałeś go jeszcze raz. W tym co przyszedł na maila to zmieniłem rozsz. na zip i dał się rozpakować i chodzi. Dzięki za pomoc. A ten co jest w tym poście to napewno przyda sie innym, którzy też chcą się czegoś nauczyć. :o
    Jeszce raz zapytam o wejścia czy na 74165 można to zrobić ?

    Pozdrowionka wszystkim
  • Level 33  
    Sądząc z chęci stosowania PCF to nie masz ostych ograniczeń finansowych. A może weźmiesz 89C2051 i przez niego podłączysz LCD? Transmisja pomiędzy procami w zasadzie dowolna (masz już IIC, więc zaimplementuj sobie softem na 2051), maly procek będzie robił na kartę graficzną i jeszcze Ci powinno jakieś I/O zostać, a z pewnością wyjdzie taniej niż PCF.
  • Level 13  
    Jesteś cwany bo znasz się na rzeczy. Ktoś kto zaczyna zabewę z mikrusami j językiem programowania w/w mózgów ma niestety problemy z prostymi aplikacjami. Jeśli jesteś chętny do pomocy do podpowiedz coś jeśli chodzi o rozwiązanie programowe bo z elektroniką to sobie jakoś poradzę. Język C nie jest taki trudny ale obsługa I/O może mi przynieść wiele kłopotów zanim się tego nauczę.

    Pozdrowionka.
  • Level 28  
    implementacja iic przez 89c2051 jako slave nie jest taka prosta, jesli nie niemozliwa wogole dla wyzszych czestotliwosci magistrali
    ale pomysl z multiprocesorowa maszyna jaknajbardziej polecam !
    at89c2051=5zl jesli tylko ma "wolne" Tx w procu glownym
    to przeciez nietrudno zrobic odbior przez rs232
    wspolny zegar (odpada problem niedopasowania szybkosci rsa)
    finansowo hyba najlepsze rozwiazanie
    co wy na to ?
  • Level 33  
    bobeer: "..implementacja iic przez 89c2051 jako slave nie jest taka prosta, jesli nie niemozliwa wogole dla wyzszych czestotliwosci magistrali .." KE?!? Standard IIC przewiduje 100kHz lub 400kHz (normalny, a nie nowsze odmiany) z czym ma tu być problem na 2051 (max f=24MHz, cykl maszynowy 0,5us)? A kto powiedział, ze musi być te 400kHz? Nawet 100kHz nie musi być. Sam robi sobie IIC to sobie może f dobrać jak chce, mało tego IIC przewiduje odpowiednie działanie w przypadku zbyt wolnego działania któregoś z układów (przytrzmanie lini SCL przez slave), więc do niemożliwego tu dużo brakuje.
    Bulik: IIC i tak robisz, więc 2051 powiesisz na magistrali pod jakimś adresem. W nim robisz slave IIC i wysyłasz do niego powiedzmy 5 razy na sek (albo ile Ci tam odpowiada) to co chcesz mieć wyświetlone (czyli 32 bajty /2x16/) 2051 ma 64bajty RAM, więc spokojnie powinno wystarczyć. 2051 odbiera te dane i wyświetla na LCD, po czym czeka na następną dostawę i tak w kółko. Co do trudności obsługi I/O to nie bardzo rozumie o co Ci chodzi...
  • Level 13  
    TDV ma rację, bo linie TX i tak już zająłem dla komunikacji po RS485. Więc będę kierował się wskazówkami od TDV, chyba że ktoś ma lepsze rozwiązanie. Co do trudności obsługi I/O w procku. Jeśli dobrze zauważyłem to język C do programowania mikrusów nie różni się od C do PC-tów. Mam jakieś księgi do C i C++ więc jest już lepiej. Ale w tym wszystkim nie ma nic o wyjściach w procku, o RS o IIC i tych typowych sprawach dla mikrusów. Więc tego nie wyczytam tylko muszę sobie pokombinować i jakoś do wszystkiego dojść. Chodziło mi poprzednio o kawałki programu z jakimś małym koment. do poszczególnych linijek. Jak uczymy się na przykładach, które widzimy to wszystko lepiej nam się układa w całość. Jeśli masz coś w tym stylu to podeślij. Będę niezmiernie wdzięczny. Tylko nie odsyłajcie mnie znowu na strony gdzie językiem urzędowym jest angielski a strona jest tak zamotana, że poruszamy się w kółko i nie można nic skopiować, a jak się coś uda to i tak nie to co trzeba.
    Pozdrowionka.
  • Level 33  
    Buehehehehehe.
    OK zum beispiel:

    Pojedyńcze bity
    #define PkT PORTD.7 //deklaracja wyjścia
    #define D_L PINB.1 //deklaracja wejścia

    PkT = 1;
    Jakis_bit = D_L;
    ofkorz możesz pisać od razu PORTD.7 = 1, ale to wyżej jest bardziej czytelne.
    Co do całych portów to tak samo tyle, że nie nie dopisujesz pinu z portu i dana musi być 8 bitów (np. unsigned char)

    To były AVR, w 51 jest jeszcze prościej bo wszystko jest w jednym porcie. Jeżeli masz includa z rejestrami to po prostu:
    P0 = Jakas_dana;
    Inna_dana = P1,
    bity:
    sbit B4 = P1^4;
    no i B4 = 1
    ;-)

    Kilka funkcji do IIC (powstały pod konkretne zastosowanie, więc nie jest to pełna implementacja IIC.

    void delay (void)
    {
    int delay;
    for (delay = 0; delay < 10; delay++);
    }//end (delay)

    //start
    void start (void)
    {
    SCL = 1; delay ();
    SDA = 0; delay ();
    SCL = 0; delay ();
    }//end(start)

    //stop
    void stop (void)
    {
    SDA = 0; delay ();
    SCL = 1; delay ();
    SDA = 1;
    }//end(stop)

    //potwierdzenie
    void ack (void)
    {
    SDA = 0; delay ();
    SCL = 1; delay ();
    SCL = 0; delay ();
    SDA = 1; delay ();
    }//end(ack)

    //wyslanie bajtu do IIC
    void send_data (unsigned char Data)
    {
    int p;

    SCL = 0; delay ();
    for (p = 0;p < 8;p++)
    {
    if (Data & 0x80)
    SDA = 1;
    else SDA = 0;
    Data <<= 1; delay ();
    SCL = 1; delay ();
    SCL = 0; delay ();
    }
    SDA = 1; delay ();
    SCL = 1; delay ();
    SCL = 0; delay (); delay ();
    }//end(send_data)

    //wczytanie bajtu
    unsigned char get_data (void)
    {
    unsigned char Data;
    int p;

    SCL = 0; delay ();
    Data = 0;
    for (p = 0;p < 8; p++)
    {
    Data <<= 1;
    SCL = 1; delay ();
    if (SDA == 1)
    Data++;
    SCL = 0; delay ();
    }
    return(Data);
    }//end(get_data)

    Wyciągnięte z programu dla 51, ale odpowiednia deklaracja SDA i SCL i na AVR też powinno hulać (pod warunkiem, że arbitrażu nie trzeba i kilku innych ustrojstw.
    Jak czegoś nie qmasz to pisz, postarmy się rozwiązać...
  • Level 28  
    1. emulacja iic to nie tosamo co sprzetowy iic, jezeli szybkosc bedzie ograniczona, oczywiscie niema problemu (ale chyba zalezy wam na szybkosci?)
    2. to ze masz 1 wyjscie tx (hardware uart przypuszczam), nie znaczy, ze niemozesz miec softowo kilku dodatkowych wyjsc (softowy emulator rs232)
    hyba latwiej i szybciej odebrac bajt w 2051 z uartu, niz odebrac i przetworzyc w procedurze odbioru iic (iic slave emulator)
    zastanowcie sie
  • Level 33  
    bobeer: twierdzisz, że prościej jest zrobić softowego UART'a niż IIC? W 2051 na pewno będzie łatwiej odebrać ale jeszcze trzeba to wysłać. Co do szybkości, to przeczytaj może wszystkie posty i zastanów się jak szybki będzie musiał być ten IIC, tym bardziej że i tak już w układzie jest wykorzystywany...
  • Level 13  
    Dzięki za wszystkie rady i sprzeczki. Ze wszystkiego można wyciągnąć jakieś wnioski. Tdv czuje temat i ma wielkie doświadczenie, praktyczne lub teoret. obojętnie ale ma. Mam niewiele czasu na naukę bo ustrojstwo ma chodzić do końca miesiąca. Jeszcze jedno pytanko. Macie coś dobrego do projektowania płytek? Tylko nie Eagle bo to mam ale w wersji Edukac. z ograniczeniami i chętnie bym się ich pozbył.
    Pozdrowionka
  • Level 33  
    Możesz użyć Protela. Z sieci można pociągnąć wersję trial (99se lub DXP). Jedyne w nichograniczenia to czas (działają przez 30 dni) ale chyba nie muszę pisać, że...
    Można go też znaleźć na CD dołaczanych do niktórych czasopism.
  • Level 13  
    Fajowo. Tylko, że 117MB a protel98 57MB to nie na moje łącza. Może jakaś podpowiedź do Eagle jak rozwiązać problem blokady powierzchni płytki. Najlepiej jeśli coś ktoś ma to na priva bo Gulson się wk.... że piractwo na elektrodzie się sieje. Co do tematu/ Teoretycznie podłączyłem 3*CD4049 do 3 lini mikrusa. Zyskałem 24 wyjścia optoizolowane (PC817) .Teraz gdyby podłączyć do 8 wyjść 4*74LS251 (multipleksery) to mamy 32 wejścia , przyjmujemy, że cały portA mamy zajęty na IIC,RS, 4piny do identyfikacji urządzenia w sieci (RS485) , to w sumie zostało jeszcze 13 wyjść do wykorzystania. Ale mam pytanie, czy to co zbuduję będzie pracować poprawnie (chip AT90S8515) ? :D
    Co Wy na to?
  • Level 42  
    1. Do eagle są w sieci cracki trzeba się tylko wysilić odrobinke i poszukać
    2. Przysłuchuje się temu tematowi już troche i wnioskuje że dyskusja merytoryczna zeszła w nieco złą strone. 90S8515 ma wyprowadzoną magistrale adresową i danych więc po co bawić się jakieś dodatkowe extendery skoro można zrobić dekoder adresowy i zamapować praktycznie dowolną ilość urządzeń na pamięć?
  • Level 12  
    elektryk wrote:
    90S8515 ma wyprowadzoną magistrale adresową i danych więc po co bawić się jakieś dodatkowe extendery skoro można zrobić dekoder adresowy i zamapować praktycznie dowolną ilość urządzeń na pamięć?


    Dokladnie!
    Jako wyjscie stosuje latch'e 74273 lub 74373, a jako wejscie bufory 74244 - wybor odpowiedniego ukladu liniami portu A (adres), odczyt/zapis liniami portu C. Proste i wygodne. Dodatkowo jest linia R/W, ktora mozna wykorzystac do podlaczenia dwoch ukladow - jednego wyjsciowego, drugiem wejsciowego pod jednym adresem - odczyt z tego adresu daje sygnal z buforow wejsciowych, zapis wpisuje wartosc do latch'y.

    Pozdrawiam,
  • Level 33  
    W sumie niby można, ale czy będzie prościej? Jeżeli te układy I/O które chce podłączyć to jakieś np. przełączniki i przekaźniki to i tak będą potrzebne zatrzaski (lub bufory na we). w sumie sprowadzi się to do tej samej ilości sprzętu (bo jeszcze dekoder adresowy), może faktycznie w tym wypadku będzie odrobinę prościej napisać program;-).
    BTW: "...Teoretycznie podłączyłem 3*CD4049 do 3 lini mikrusa...", mnie się zdawało, że 4049 to 6 x inwerter, więc nie bardzo qmam...
  • Level 13  
    Tdv sorry. Oczywiście chodiło jak już ktoś szybciej nadmienił o CD4094B prawdopodobnie jest to efekt pisania i patrzenia na klawiaturę a nie na to co się pisze. Powiedzcie czy to ma prawo działać? Kolega Elektryk i Chyras też pewnie mają swoje sposoby i zapewne podłączenie lini danych do jednego portu i lini adresowych do drugiego portu jest jak najbardziej prawidłowe i elektrycznie poprawne. Ale czy musimy trzymać się zasad? Przecież rozdzielenie układów wejściowych i wyjściowych też chyba dobrze by wyglądało?. Mi tylko chodzi o to czy Wy jako praktycy z pewnym doświadczeniem możecie na tym poziomie określić czy jest sens (w tej fazie projektu i z tekim podłączeniem elementów) zabierać się za robienie płytki, a może jeszcze coś zmienić, dodać lub uprościć?

    Pozdrowionka...
pcbway logo