Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[BASCOM] KIT AVT5217 - numer karty sterującej i inne opcje.

piterek-23 20 Wrz 2012 12:07 12390 147
  • #1 20 Wrz 2012 12:07
    piterek-23
    Poziom 32  

    Witam.

    Mam zbudowany kit AVT5217 i ustawione adresy kart poprzez zworki. Wszystko działa jak należy, ale...
    1. Podobno w tym kicie można zmienić/przypisać numer karty na stałe, jak to zrobić ? (chcę wykorzystać okolo 5 takich samych kart)
    2. Jeżeli zapiszę numer na stałe to bedzie można wykorzystać cztery wejscia-czy można zrobić tak, że włączam przekaźniki poprzez PC lub manualnie na karcie ?

    Link do kitu AVT5217

    Z góry wielkie dzięki za pomoc.

    0 29
  • Arrow Multisolution Day
  • #2 20 Wrz 2012 13:51
    Gienek
    Poziom 35  

    Tylko poprzez zmiany w programie (pliku *.bas) i ponowna kompilacja oraz zaprogramowanie procesora.

    0
  • Arrow Multisolution Day
  • #4 21 Wrz 2012 09:52
    piterek-23
    Poziom 32  

    Ma ktoś jakiś pomysł ?

    0
  • #5 21 Wrz 2012 10:05
    bulek01
    Poziom 15  

    Program z tego co widzę jest bardzo prosty. Poczytaj o programowaniu w bascomie. Jak się nauczysz to sobie sam zmienisz jak będziesz chciał i przy okazji się czegoś nauczysz.

    0
  • #6 21 Wrz 2012 10:54
    arnoldziq
    Moderator Programowanie

    W tym programie masz ustawiony numer karty jako stan trzech portów.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Z tego jest "wyliczany" numer karty :
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Stan portów jest sprawdzany i na tej podstawie jest ustawiana zmienna Adres, która opisuje numer karty.
    Możesz na stałe ustawić tę zmienną Aadres w programie, ale musisz wtedy zaprogramować każda kartę osobno z innym adresem.
    Wystarczy usunąć lub "zakomentować" ten cytowany kod i wpisać poniżej :
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Gdzie X to numer karty wpisany na stałe w program.

    Jeżeli zmienisz program, i ponadajesz kartom jakieś numery (od 0 do 9), to każdy procesor na odpowiedniej karcie zareaguje tylko na rozkaz skierowany do niego.
    Rozkazy mają formę 3-bajtowych komend, ale to pewnie już wiesz :) Ale można to spokojnie rozszerzyć o dodatkowe bajty opisujące numery kart, tak, że masz praktycznie nieograniczoną ich ilość.

    0
  • #7 21 Wrz 2012 12:00
    piterek-23
    Poziom 32  

    Kolego arnoldziq ślicznie dziękuję za wytłumaczenie :) Jeszcze dziś to sprawdzę.

    arnoldziq napisał:
    Rozkazy mają formę 3-bajtowych komend, ale to pewnie już wiesz :) Ale można to spokojnie rozszerzyć o dodatkowe bajty opisujące numery kart, tak, że masz praktycznie nieograniczoną ich ilość.



    Właśnie też o to chodzi, że chce używać ich wiecej niż 8, a dokładnie okolo 15 kart.

    0
  • Pomocny post
    #8 21 Wrz 2012 12:24
    arnoldziq
    Moderator Programowanie

    Proszę skompilować program w tej wersji :

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Naniesione poprawki :
    1. Rozszerzenie ilości możliwych kart do 98.
    2. Odrzucenie ramek, które nie są 4-bajtowe.
    3. Numer karty, w ramce sterującej koniecznie musi być podany w formacie XX np: 01, 02, 09, 12, 78 itd.
    4. Wymuszenie mrugnięcia diody (Portd.4) na karcie, do której rozkaz jest skierowany.
    5. Wysłanie '99' jako adresu karty, powoduje ustawienie/zresetowanie tych samych portów na wszystkich kartach.

    0
  • #9 21 Wrz 2012 13:02
    piterek-23
    Poziom 32  

    Jeżeli zapiszę numer na stałe to bedzie można wykorzystać cztery wejscia-czy można zrobić tak, że włączam przekaźniki poprzez PC lub manualnie na karcie ?

    0
  • #10 21 Wrz 2012 13:16
    arnoldziq
    Moderator Programowanie

    Nie bardzo rozumiem, o co chodzi z tymi 4-ma wejściami.
    Ustawienie adresu karty na stałe, zwalnia 3 piny procesora, które można wykorzystać praktycznie dowolnie.
    Sterowanie przez PC, jak najbardziej. Chyba właśnie do tego ten układ służy.
    Sterowanie całą kartą lub ich zestawem jest realizowane przez wysyłanie na wbudowany w procesor(y) port RS-232 3 lub 4-bajtowych instrukcji. W procesorze port ten jest sterowany napięciami 0V-5V (3V3 w wersji nisko napięciowej). W tym konkretnym projekcie jest dodany interface RS-485 jako interface komunikacyjny.
    Żeby stertować kartami poprzez PC, wystarczy nadać z PC sygnał poprzez taki interface. Lub przerobić projekt, do użycia interface RS-232 i używać dowolnego kabla USB->RS232.
    Sygnały sterujące, można wysyłać nawet z windows-owego Terminala.
    Nie wiem, jak miałoby się odbywać "ręczne" sterowanie taką kartą, skoro ma ona 8 urządzeń a jak sam pisał kolega wcześniej, chce kolega sterować 15-oma kartami.

    0
  • #11 21 Wrz 2012 13:40
    piterek-23
    Poziom 32  

    Od strony PC wszystko jest jak najbardziej OK.
    Mam namysli ze zostaja cztery wejscia i czy da sie je wykorzystac, aby właczyc/wyłączyć przekazniki... Moze inaczej. Mam karte na której jest osiem przekaźnikow i steruje nimi poprzez komputer (tu wszystko gra). Karta ma słóżyć do sterowania swiatłem i teraz chciałbym to swiatło włączyć/wyłączyć przez PC lu zewnetrzny przełącznik.

    0
  • #12 21 Wrz 2012 13:48
    arnoldziq
    Moderator Programowanie

    4 wolne wejścia można wykorzystać dowolnie. Problem tylko z takim ustawieniem tych 4 wejść, żeby wysterować w trybie włącz/wyłącz 8 urządzeń.
    Można co prawda binarnie wymusić odpowiednie zachowanie, bo 4 bity = 16 rożnych stanów. Ale nie wyobrażam sobie tego bez dodatkowego kodera/dekodera.
    A już podłączanie 8 bi-stabilnych przełączników do sterowania jedną kartą, to już zadanie dla dodatkowego procesora.

    0
  • #13 21 Wrz 2012 14:11
    piterek-23
    Poziom 32  

    Nie musi być 8... Dokładnie mi chodzi o to (idealnie było by) że 8 przekazników steruje przez PC, a 4 z nich dodatkowo przez zewnętrzne przełączniki.

    0
  • #14 21 Wrz 2012 14:24
    arnoldziq
    Moderator Programowanie

    Nie ma problemu. Jedyne, co może być "nie tak", to sygnał "powrotny".
    Mianowicie ; trzeba by tak napisać kod, żeby reagował na zmiany tych włączników, oraz żeby informował komputer że taka zmiana nastąpiła.

    0
  • #15 21 Wrz 2012 14:53
    piterek-23
    Poziom 32  

    arnoldziq napisał:
    Nie ma problemu. Jedyne, co może być "nie tak", to sygnał "powrotny".
    Mianowicie ; trzeba by tak napisać kod, żeby reagował na zmiany tych włączników, oraz żeby informował komputer że taka zmiana nastąpiła.


    Czy dużo byłoby roboty z takim kodem ? :)

    0
  • #16 21 Wrz 2012 17:56
    arnoldziq
    Moderator Programowanie

    piterek-23 napisał:
    Czy dużo byłoby roboty z takim kodem ? :)

    To zależy :)
    Jak bardzo miałby być skomplikowany i jak bardzo niezawodny.

    0
  • #17 21 Wrz 2012 18:29
    piterek-23
    Poziom 32  

    arnoldziq napisał:
    piterek-23 napisał:
    Czy dużo byłoby roboty z takim kodem ? :)

    To zależy :)
    Jak bardzo miałby być skomplikowany i jak bardzo niezawodny.


    Skomplikowany na tyle, aby działał :)
    Niezawodny na tyle, aby po prostu działał :)

    0
  • #18 22 Wrz 2012 13:00
    piterek-23
    Poziom 32  

    arnoldziq napisał:
    Proszę skompilować program w tej wersji :
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Naniesione poprawki :
    1. Rozszerzenie ilości możliwych kart do 98.
    2. Odrzucenie ramek, które nie są 4-bajtowe.
    3. Numer karty, w ramce sterującej koniecznie musi być podany w formacie XX np: 01, 02, 09, 12, 78 itd.
    4. Wymuszenie mrugnięcia diody (Portd.4) na karcie, do której rozkaz jest skierowany.
    5. Wysłanie '99' jako adresu karty, powoduje ustawienie/zresetowanie tych samych portów na wszystkich kartach.


    Coś jest nie tak.
    Zmieniłem kod, aby dać kartom adresy i teraz mam dwie karty jednej dałem adres "06" a drugiej "11"
    Karty się zgłaszają ze swoimi nowymi adresami.
    Jeżeli wysyłam rozkazy cały czas tylko do jednej karty ("06" lub "11") to wszystko jest ok, ale jeżeli wyślę rozkaz do karty "06" i później do "11" to przyjmuje rozkaz dopiero za drugim razem. W drugą stronę tez tak działa-wysyłam rozkazy do "11" i za każdym razem wszystko przyjmuje, ale jeżeli chce wysłać rozkaz do "06" to muszę go powtórzyć drugi raz i dopiero przyjmie i już później przyjmuje za każdym razem.
    Jeżeli wyślę "9991" lub "9990" to rozkaz przyjmie tylko jedna karta, ta do której były ostatnie rozkazy wysyłane.

    0
  • Pomocny post
    #19 24 Wrz 2012 10:02
    arnoldziq
    Moderator Programowanie

    Wstaw znak komentarza przed te linie (lub je usuń) :

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Skompiluj jeszcze raz, zaprogramuj ponownie karty i spróbuj wtedy.

    0
  • #20 24 Wrz 2012 12:47
    piterek-23
    Poziom 32  

    arnoldziq napisał:
    Wstaw znak komentarza przed te linie (lub je usuń) :
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Skompiluj jeszcze raz, zaprogramuj ponownie karty i spróbuj wtedy.


    Teraz karty już bezproblemowo działają z nowymi adresami :)

    Mógłbyś mi jeszcze pomóc z tymi zewnętrznymi przełącznikami ?

    0
  • #21 24 Wrz 2012 13:45
    arnoldziq
    Moderator Programowanie

    piterek-23 napisał:
    Mógłbyś mi jeszcze pomóc z tymi zewnętrznymi przełącznikami ?

    To już trochę bardziej skomplikowany problem.
    Jak mają działać te przełączniki? Czy mają być nadrzędne w stosunku do instrukcji wysyłanych z komputera?

    0
  • #22 24 Wrz 2012 14:41
    piterek-23
    Poziom 32  

    arnoldziq napisał:
    piterek-23 napisał:
    Mógłbyś mi jeszcze pomóc z tymi zewnętrznymi przełącznikami ?

    To już trochę bardziej skomplikowany problem.
    Jak mają działać te przełączniki? Czy mają być nadrzędne w stosunku do instrukcji wysyłanych z komputera?


    A czy dałoby radę zrobić tak, że to działa na zasadzie przełącznika schodowego/krzyżowego ? Nie ważne gdzie włączę/wyłączę to i tak zadziała przekaźnik.
    Czyli włączę np. przełącznikiem, a mogę wyłączyć przez PC lub przełącznik i tak samo w drugą stronę-włączę przez PC, a mogę wyłączyć przez PC lub przełącznik.

    0
  • #23 26 Wrz 2012 07:19
    piterek-23
    Poziom 32  

    1. Czy w kodzie do tej karty, aby dodać przyciski to wystarczy podać który pin jest wejściem i co program ma zrobić po wykryciu sygnału czy jeszcze coś trzeba zmienić ?

    2. Czy tak mają wyglądać wejścia z przyciskami ?
    [BASCOM] KIT AVT5217 - numer karty sterującej i inne opcje.

    0
  • Pomocny post
    #24 26 Wrz 2012 10:09
    arnoldziq
    Moderator Programowanie

    Cytat:
    1. Czy w kodzie do tej karty, aby dodać przyciski to wystarczy podać który pin jest wejściem i co program ma zrobić po wykryciu sygnału czy jeszcze coś trzeba zmienić ?

    1. Ustawić piny jako wejścia.
    2. Sprawdzać ich stan w głównej pętli
    3. Przemyśleć sprawę wyeliminowania drgania styków
    4. Zmienić stan portów sterujących.
    Cytat:
    2. Czy tak mają wyglądać wejścia z przyciskami ?

    Trochę dziwnie wyglądają odciągi z rezystorów do masy. Ja porobiłbym raczej ograniczenia prądowe do stanu wysokiego. I sterował porty stanem niskim.
    Coś jak tutaj :
    [BASCOM] KIT AVT5217 - numer karty sterującej i inne opcje.

    0
  • #25 26 Wrz 2012 10:44
    dondu
    Moderator Mikrokontrolery Projektowanie

    Tak jak kolega wyżej napisał, źle podłączyłeś przyciski. Wywal te rezystory i pozostaw same przyciski łączące do GND a nie Vcc. Zamiast rezystorów zewnętrznych włączysz programowo wewnętrzne rezystory pull-up i po sprawie.

    Natomiast drgania styków o których pisze kol. wyżej. załatwisz za pomocą odpowiednio napisanego programu.

    Dobrze byłoby, gdybyś pokazał cały schemat.

    0
  • #26 26 Wrz 2012 18:49
    piterek-23
    Poziom 32  

    Schemat na który się wzorowałem:
    [BASCOM] KIT AVT5217 - numer karty sterującej i inne opcje.

    Na schemacie są rezystory, ale niestety nie zastosowałem ich :( Swoją płytkę muszę poprawić.

    Przepraszam za głupie pytania, ale to moje pierwsze podejścia do uC i pierwsze do BASCOM.

    0
  • #27 28 Wrz 2012 22:30
    piterek-23
    Poziom 32  

    Po przeczytaniu X różnych poradników i takich tam rzeczy po prostu nic już nie wiem :(

    Mam coś takiego odnośnie przycisków, wszystko działa jak należy (tak mi się wydaje)
    Naciskam przycisk "Sw1" włącza się Led na "Out1",
    Naciskam jeszcze raz przycisk "Sw1" wyłącza się LED na "Out1"
    Tak samo jest przy "Sw2" -> "Out2", "Sw3" -> "Out3" i "Sw4" -> "Out4"
    W sumie o to mi chodziło :)

    Jak teraz połączyć moje dwa kody, aby to działało ?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #29 28 Wrz 2012 22:53
    piterek-23
    Poziom 32  

    dondu napisał:
    W BASCOM niestety nie pomogę :(


    Niestety w tej karcie jest kod napisany w BASCOM. W sumie brakuje mi tylko tych przycisków i przez to latam po różnych kursach i google jak wariat i szukam rozwiązania. Myślę, że gdyby było w C to więcej ludzi mogło by mi pomóc. Teraz, żeby to napisać w C to musiałbym się uczyć C (BASKOM tez nie znam) a na to chyba jednak jestem za cienki :(

    0