Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

programowanie isa

13 Sie 2004 13:22 3297 40
  • Poziom 15  
    mam problem
    nie wiem jak wysłać coś na ise
    tak aby np coś włączyć (przekaźnik )
    nie chodzi mi o schemat tylko jak to napisać
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 42  
    Wszystko zalezy jak karta jest zbudowana, dostęp może być realizowany proprzez zapis/odczyt z dowolnego obszaru pamięci (z zakresu do 1MB) lub z portu o dowolnym adresie.
  • Poziom 15  
    poprostu chce podłączyć przkaźnik do jakiejś lini danych i wysłać tam jedynkę
  • Poziom 19  
    Uzupelniajac elektryka, dzialasz w przestrzeni wej/wyj komputera. W praktyce, znajac przestrzen adresowa karty lub peryferii (np. port rownolegly) uzywasz w jezykach programowania instrukcji typu out(adres,wartosc wystawiana).
    Wiele dobrych przykladow jest w takich ksiazkach jak:
    Marek Kotowski - Pod zegarem (LUPUS)
    Piotr Metzger - Anatomia PC (HELION)

    Pozdrawiam i milej zabawy
  • Poziom 19  
    Komentarz do wypowiedzi ja9:
    Mowiac zartem: podlaczyc mozna, tylko co na to linia danych i przekaznik. Trzeba zastosowac jakis bufor, poszukajcie Koledzy na elektrodzie, te tematy przewijaly sie bardzo czesto
  • Poziom 42  
    Odpowiedź wprost, nie da się podłączyć przekaźnika pod określony pin ISA (pomijając nawet problem buforów), trzeba zrobić układ który będzie badał stan przynajmniej kilku linii na szynie ISA i dopiero na podstawie tego sterował przekaźnikiem. Szczegóły w podanej literaturze.
  • Poziom 15  
    to ktrore te linie i jak nimi sterować ?
    a co do postu boomerang'a to pisałem na samym początku, że nie chodzi mi o sposób podłączenjia tylko program,
  • Poziom 42  
    ja9 napisał:
    to ktrore te linie i jak nimi sterować ?
    a co do postu boomerang'a to pisałem na samym początku, że nie chodzi mi o sposób podłączenjia tylko program,
    Musisz zrobić dekoder co wykryje odpowiednią kombinacje, prznajmniej z linii adresowych, linii wyboru pamięć/porty i linii odczytu/zapisu. Do tego trzeba napisać jeszcze jakiś program co będzie powodował że na liniach się pojawi określony stan.
  • Poziom 21  
    Nie da się odpowiedzieć na pytanie o to, jak prowadzić samochód, osobie która nie ma pojęcia o tym co to jest kierownica, skrzynia biegów, gaz i sprzęgło.

    Drogi ja9. Najpierw musisz poznać architekturę komputera aby zrozumieć odpowiedzi. Elektryk ma całkowitą rację. Odpowiedział Ci w pierwszym swoim poście.

    Na szynie ISA odbija się wszystko co robi procesor i układ DMA. Jeżeli chcesz sterować przekażnikiem, użyj portu równoległego lub szeregowego. Będzie znacznie łatwiej, gdyż kolejny rozkaz procesora zmieni stan szyny ISA, i przekaźnik podłączony bezpośrednio nie zdąży nawet zareagować. Poza tym przekaźnik będzie ciągle sterowany sygnałami generowanymi przez samo działanie procesora.

    Nie da się sterować falami radiowymi. Można fale radiowe wykorzystać do sterowania, ale zawsze potrzebny jest odbiornik bo fali nie da się ustawić w jednym określonym stanie.
    Szyna ISA powtarza wszystko to co robi procesor, odbiornik musi samodzielnie stwierdzić, że przekaz jest do niego i zareagować, gdyż stan szyny jest ustalany tylko na czas wykonania pojedynczego rozkazu procesora.

    Końcowy wniosek jest taki. Bez odbiornika (karty ISA) nie da się wykorzystać szyny ISA do sterowania. Program sterujący pracą odbiornika jest zależny od konstrukcji tego odbiornika.

    Mam nadzieję, że rozjaśniłem nieco sytuację.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 15  
    jak pisałem wcześniej nie chodzi mi o to jak zrobić karte tylko jak ustawić poszczególne piny na tej cholernej magistrali , nie piszcie więcej ,że potrzebne są bufory itp tylko jak w pascalu usatawić piny , albo w czym innym , ale najlepiej w pascalu
  • Poziom 21  
    Nie da się skutecznie wymusić stanu na szynie ISA na dłużej niż 1 rozkaz procesora.

    Wystarczy zapisywać coś do pamięci, i na szynie ISA odwzorowany zostanie adres.
    Wystarczy wysyłać coś na port i na szynie ISA także zostanie ustawiony adres.

    Ale zawsze na czas wykonania rozkazu.
  • Poziom 15  
    czyli jak zapiszę jakiś bajt to pokaże się on na szynie isa , a jak ustawić jakieś linie sterujące
  • Poziom 21  
    Szyna ISA zawiera linie danych i adresowe. Wyślij bajt na konkretny port, a procesor wystawi na szynie ISA adres portu i wysyłane dane.
  • Poziom 15  
    i jednocześnie pojawią się dane na szynie danych i adres na szynie adresowej ?
    i jeszcze jedno pytanie .
    jak wysyłam na port równoległy to na szynie adresowej pojawi się adres portu lpt?
  • Poziom 21  
    Dobre pytanie. Zaawansowane kontrolery magistral muszą być w stanie ocenić, czy wysyłana dana ma iść na ISA czy PCI.
    Wszystko odbywa się w jednolitej przestrzeni adresowej procesora, tak więc chipset jest kluczem do sterowania magistralami.
    Nie znam zasad wyboru docelowej magistrali. Przypuszczam jednak, że ruch na magistralach jest odpowiednio filtrowany.

    Wszystko sprowadza się do stwierdzenia - bez odpowiedniej karty, nie ma sterowania.
  • Poziom 15  
    to jak wybrać tą odpowiednią magistalę ?
  • Poziom 21  
    W biosach większości komputerów z magistralą ISA jest funkcja pozwalająca na określenie pewnej przestrzeni adresowej, jako należącej do karty rozszerzeń starego typu.
    Zapis, lub odczyt danej z tej przestrzeni adresowej powinien wymusić komunikację poprzez magistralę ISA.
  • Poziom 31  
    ... jak sołtys krowie na granicy. :D

    Po pierwsze: musi być karta (wszyscy o tym pisali) czyli np. 74HC688 na dekoder, 74HC245 na bufor i powiedzmy 74HC573 lub 74HC574 na rejestr z danymi. Do tego może być konieczne kilka bramek OR czy podobnych.

    Po drugie: wrzucić daną do takiego urządzenia to betka z każdego kompilatora. Nie trzeba nawet kombinować w BIOS'ie, pod warunkiem, że płyta ma złącza ISA. Chodzi toto nawet na PIII (chipset VIA 794X).

    Po trzecie: adres karty, a zatem i rejestru powinien zawierać się w przestrzeni od adresu $0300 do $031F. Z niektórych opisów wynika, że ten obszar jest przeznaczony dla kart prototypowych i nie powinien sprawiać problemów.

    Po czwarte: schemat: polecam artykuł w Elektroniku Elektorze nr 9/1995 wydanie polskie. Coś podobnego jest też w nr 10/1995. Czytając te artykuły można się czegoś przy okazji nauczyć.

    Pozdrawiam.
  • Poziom 21  
    Pomijając rolnictwo, to sam problem wysłania czegoś na konkretną magistralę może być interesujący. Spób wyboru magistrali przez chipset jest całkiem interesujący.

    Nie każda operacja IO trafia na magistralę ISA, podobnie jak nie każdy dostęp do pamięci angażuje magistralę IO. Gdyby było inaczej procesor działałby w ślimaczym tempie.

    Chipset wie czy operacja dotyczy karty, czy RAM. Skąd to wie? Część adresów IO ISA pokrywa się z PCI. Chipset musi wybrać właściwą magistralę. Na podstawie czego dokonuje wyboru?
  • Poziom 27  
    Do sterowania typu włącz/wyłącz lepsze (i prostsze) będzie chyba wykorzystanie portu równoległego niż szyny ISA. Może powinieneś pójść w tym kierunku?
  • Poziom 15  
    nie zależy mi na lpt bo to już mam, chodzi mi tylko o tą betkę i proszę nie piszcie mi więcej o buforach i tym podobnym bo doskonale o tym wiem, a dokładniej mówiąc jak napisać program żeby na isie pokazał sie na chwilę adres i dane, dekoder nie jest problemem bo na upartego można go zrobić ze zwykłych bramek. Tylko jak to wysłać na tę właśnie magistralę.
    pozdr
  • Poziom 2  
    Pozwolicie ze sie podepne do tematu. Mam ten sam problem. Jest juz gotowa karta ISA i teraz musze napisac program do jej obslugi.

    Karta, w zaleznosci od trybu w jakim pracuje (tryb zalezy od stanow na IOR oraz IOW), przesyla na zewnetrzny wyswietlacz 4 bitowe slowo.
    W jednym trybie to slowo pobiera z PC a w drugim z zewnetrznego zadajnika. Caly proces jest sterowany z klawiatury.

    Wydaje sie wiec ze mamy z autorem tego tematu podobny problem. Potrzebujemy funkcji (pascal, c++) ktora pozwoli sterowac odpowiednimi sygnalami (wyslac odpowiedni adres, ustawic sygnalu IOR, IOW i wyslac dane)

    Jeszcze jedno pytanie czy jezeli adres karty ustawilem na 100h nie bedzie jakichs konfliktow z innymi urzadzeniami (z "Anatomii PC" wynika ze ten adres nalezy do wolnej przestrzeni adresowej...)

    Pozdrawiam
  • Poziom 21  
    W przypadku Borland Pascala można użyć tablicy Port [$100]. W Open Pascalu jest to bardziej złożony problem.
  • Poziom 31  
    A może zwykła wstawka asemblerowa? Załadować do AL daną, do DX adres i wykonać rozkaz OUT? Np. tak (przykład w C, w Pascalu podobnie):
    Code:

    ASM
    {
      MOV DX,PORTNUMER
      MOV AL,PORTDATA
      OUT DX,AL
    }

    Do PORTNUMER wstawiamy adres karty (upieram się na $300H), a do PORTDATA daną wysyłaną na port.
    I po sprawie.
    Pozdrawiam.
  • Poziom 21  
    W Borland Pascalu wystarczy:
    Port [$100]:=DanaDoWysłania
    Do wysłania 16 bitowego słowa:
    PortW [$100]:=DanaDoWysłania
  • Poziom 2  
    Dziekuje wszystkim za odpowiedz. Ale czy w podobny sposob moge wplywac na sygnaly IOR oraz IOW bo tymi sygnalami jest ustawiany tryb dzialania. Domyslam sie ze sygnaly read i write nie zawieraja sie w danej do wyslania na port ? (chyba ze sie myle... )
  • Poziom 21  
    Sygnałem IOR i IOW steruje procesor. Kiedy dana jest wysyłana na port aktywny jest sygnał IOW. Kiedy procesor czyta daną z portu IOR. Kiedy procesor czyta daną z pamięci MEMR itd...
  • Poziom 2  
    Czyli z tego wynika ze jeden z sygnalow (IOR lub IOW) moglbym aktywowac uruchomiajac funkcje OUT ( we wtsawce ASM) wysylajac na port byle jaka dana , a drugi z sygnalow aktywowac funkcja pobierajaca dane z portu. Nie ineteresuja mnie jakie dane zostana pobrane ale fakt ze karta umieszczona w tym porcie zobaczy aktywny sygnal IOR.

    Wiem ze kombinuje ale musze miec jakis wplyw na te dwa sygnaly. Jezeli jest to dobre rozumowanie, to czy moglby ktos podac jesczze funkcje ktora odczytuje dane z portu ? (najlepiej dla tej wstawki ASM). Z gory dziekuje.